防止nginx泄漏cdn后面的源站IP
参考:
https://blog.hicasper.com/post/114.html
https://www.linuxprobe.com/ssl-expose-ip.html
https://luotianyi.vc/5056.html
以下是防走失记录:
原理:
在使用 nginx 作为 web 服务器的时候,对于未绑定的域名(例如默认服务器)可能会解析到其他域名,就是被恶意解析。
在 443 端口上,这种情况可能更加严重,在直接访问 443 端口时,nginx 会使用第一个配置了 SSL 的站点的证书来建立连接,导致正常源站域名暴露,反查可得到CDN后面源站的IP,因为各大安全机构都有在扫描这个,所以要防御一下
防御方法:
nginx 1.19.4以上
server {
listen 443 default_server;
listen [::]:443 default_server;
server_name _;
ssl_reject_handshake on;
return 444;
}
其他方法
自签IP的SSL证书,返回444
自签IP的SSL证书工具
MySSL:https://myssl.com/create_test_cert.html
MkCert:https://github.com/FiloSottile/mkcert
注意:在新版 nginx 上 RSA 1024 位证书会出现错误,更换 2048 位证书即可。
server
{
listen 80;
server_name _;
index index.html;
root /www/server/nginx/html; #这里填写web默认目录
return 444;
}
server
{
listen 443 ssl;
server_name _;
ssl_certificate /xxx/ssl.crt; #这里填写你的证书绝对路径
ssl_certificate_key /xxx/ssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
index index.html;
root /www/server/nginx/html; #这里填写web默认目录
return 444;
}
或者仅允许cdn服务器访问源站,具体看文章开始的参考文章吧。 这里仅作必要的记录