原標題:被害妄想症該如何生存
先看配置:
| 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。
