当前位置: 首页 > 科技观察

不要让SSL证书暴露你的网站服务器IP

时间:2023-03-12 06:27:39 科技观察

我们通常使用CDN来设置服务器IP来加速和防御网站或后端程序。不过nginx的设计有个小瑕疵。因为ssl证书泄露了网站的原始IP原理,所以网站部署了Nginx。默认或不正确配置下,网站开启ssl,直接访问ip的443端口,即ip:443。Nginx会返回一个默认站点的ssl证书,间接让别人扫描这个ip对应的域名。原理是向ip的443端口发送clienthello,对方回复的serverhello有ssl证书,ssl证书中的commonname有域名信息。这样我们就知道了解析这个ip的域名。所以更准确的说是IP的443端口可能会暴露域名。动作大一点,批量扫描机房的ip段,统计对应的域名-ip多值映射表。以后如果要查某个域名对应的源站IP地址,查这张表就可以了。这就是黑产喜欢做的事情。同时,这也是很多站点即使安装了CDN,仍然可以打到源站IP的原因。解决方案#禁止IP直接访问网站缺陷。要生成自签名IPSSL证书,您可以使用开源的Mkcert(https://myssl.com/create_test_cert.html)工具。mkcert使用起来有点麻烦,还是用一个在线的网页工具来测试证书:https://myssl.com/create_test_cert.html在域名里填入IP地址,点击生成按钮,测试证书就出来了下面自动显示,分别保存为.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;allow116.128.128.0/24;allow123.151.76.0/24;allow125.39.46.0/24;allow140.207.120.0/24;allow180.163.22.0/24;allow183.3.254.0/24;allow223.166.151.0/24;denyall;}查看你使用的CDN商家的文档,如果有新的IP段更新,添加进去。本文转载自微信公众号《Linux就该这么学》,作者倪家兴。转载本文,请联系Linux像这样学习公众号。