我们通常使用CDN来设置服务器IP来加速和防御网站或后端程序。然而,nginx在设计上有一个小缺陷。网站的原始IP会因为SSL证书泄露。不要让SSL证书暴露您的网站服务器IP。不要让SSL证书暴露您的网站服务器IP。错误配置下,网站开启ssl,直接访问ip的443端口,即ip:443。Nginx会返回一个站点默认的ssl证书,间接让别人扫描这个ip对应的域名。原理是向ip的443端口发送clienthello,对方回复的serverhello有ssl证书,ssl证书中的commonname有域名信息。这样我们就知道了解析这个ip的域名。所以更准确的说是IP的443端口可能会暴露域名。动作大一点,批量扫描机房的ip段,统计对应的域名-ip多值映射表。以后如果要查某个域名对应的源站IP地址,查这张表就可以了。这就是黑产喜欢做的事情。同时,这也是很多站点即使安装了CDN,仍然可以打到源站IP的原因。解决方案禁止直接访问IP禁止IP直接访问网站,而是为了避免Nginx的这个缺陷。生成自签名的IPSSL证书,可以使用开源的Mkcert(https://myssl.com/create_test...工具。Mkcert使用起来有点麻烦,或者使用在线网页测试证书的工具:https://myssl.com/create_test...不要让SSL证书暴露你的网站服务器IP不要让SSL证书暴露你的网站服务器IP域名里填写IP地址,点击Generate按钮下面会显示测试证书,分别保存.pem文件和.key文件。然后在nginx中配置“return444”,类似配置:{listen80;listen443sslhttp2default_server;server_nameip;#HTTP_TO_HTTPS_ENDssl_certificatexxxx.pem;ssl_certificate_keyxxxx.pem;ssl_protocolsTLSv1.1TLSv1.2TLSv1.3;return444;}为合法IP站点购买SSL证书花点钱购买合法IPSSL证书,在nginx中配置。IP证书一般在一两百左右。加钱,世界触手可及。只允许指定CDN的IP访问Nginx只允许指定CDN的IP访问,避免被公网任何人扫描。以腾讯云CDN段为例。在Nginx网站配置文件中添加:location/{allow58.250.143.0/24;allow58.251.121.0/24;allow59.36.120.0/24;allow61.151.163.0/24;allow101.227.163.0/24;allow111.161.109.0/24;允许116.128.128.0/24;允许123.151.76.0/24;允许125.39.46.0/24;允许140.207.120.0/24;允许180.30.8.254.0/24;允许223.166/24;151.151.denyall;}查看你使用的CDN商家的文档,如果有新的IP段更新,就添加进去。
