防止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服务器访问源站,具体看文章开始的参考文章吧。 这里仅作必要的记录

posted @ 2023-03-31 09:10  鱼肉真好吃  阅读(473)  评论(0编辑  收藏  举报