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