原標題:被害妄想症該如何生存
先看配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; root /usr/share/nginx/html; ssl_certificate certs/default.pem; ssl_certificate_key certs/default-nopass.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; } server { listen 443 ssl spdy; ssl_certificate certs/real-cert.pem; ssl_certificate_key certs/real-cert-nopass.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; root /usr/share/nginx/html; server_name example.com; location / { root /path/to/your/files; if (-d $request_filename) { return 404; } try_files $uri $uri/ =404; charset utf-8; } location ~ .*/$ { root /path/to/your/files; access_by_lua ' local coo = ngx.var.cookie_coo if coo ~= "coo" then ngx.exit(404) end '; autoindex on; autoindex_exact_size off; } } |
假設:
審查機關擁有運營商級別的入侵檢測設備(比如GFW)
說明:
- 全站使用https,關閉SSLv3,關閉弱加密組件
- default_server開啟80端口,使用自簽名證書;真實需要訪問的域名(example.com)必須使用有效的證書,或者在本地信任根證書。注意example.com不能開啟80端口,且與default_server使用的證書不能相同。不要使用泛域名證書。這是為了防止審查機關通過直連IP查看返回的證書中的Common Name來得到真實域名。這樣配置之後,直連IP https://xxx.xxx.xxx.xxx默認是返回自簽名證書,無法得到真實example.com。
- 選擇性開啟autoindex,通過cookie鑒別。注意也可以通過HTTP Basic Authenication認證。對匹配文件夾的uri(”/”結尾)做認證,示例中只有帶cookie coo=coo的請求才會返回autoindex,否則返回404。
- 在location /中禁用目錄末尾自動加斜杠,因為如果自動加斜杠,審查機關可以通過暴力猜測出服務器上有哪些目錄確實存在(返回了301到末尾加/的url)。方法是if (-d $request_filename)返回404。