别让SSL证书暴露了你的网站服务器IP

原理

用Nginx部署网站,在默认或不正确的配置下,网站开启ssl,直接访问ip的443端口,即ip:443,Nginx会返回默认一个站点的ssl证书,间接的能让别人扫到这个ip对应的域名。

原理就是对ip的443端口发送clienthello,对方回复的 serverhello中有ssl证书,ssl证书里的common name 有域名信息。这样就知道了解析这个ip的域名。所以更准确的说是IP的443端口可能会暴露了域名。

动作再大一点,批量扫描机房的ip段,把对应的域名-ip 的多值映射表统计起来。以后想查某个域名对应的源站 ip 查这个表就够了,这是黑产喜欢干的事。

同时也是很多站点,明明套上了cdn,依然能被打到源站IP的原因。

解决办法
禁止直接访问IP
# 禁止IP直接访问网站
server {
listen       80 default_server;
listen       [::]:80 default_server;
server_name  _;
return 444;
}
自签IP的SSL证书,返回444

自签证书的目的不是为了访问,而是避开Nginx的这个缺陷。生成自签的IP SSL证书可以用开源的Mkcert(https://myssl.com/create_test_cert.html)工具。Mkcert使用起来稍微麻烦,或者用一个测试证书的在线网页工具:https://myssl.com/create_test_cert.html

在填写域名的位置填上IP地址,点生成按钮会自动测试证书展示在下面,各自保存为.pem文件和.key文件。然后在nginx里配置上“return 444”,类似配置大概:

{
listen 80 ;
listen 443 ssl http2 default_server;
server_name ip;
#HTTP_TO_HTTPS_END
ssl_certificate    xxxx.pem;
ssl_certificate_key   xxxx.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
return 444;
}
购买合法IP站点的SSL证书

花点小钱买个合法的IP SSL证书配置到nginx里,IP证书一般一二百左右。

加钱,世界触手可及。

仅允许指定cdn的IP访问

Nginx仅允许指定cdn的IP访问,避免放到公网上被任何人扫。以腾讯云CDN段为例,在Nginx网站配置文件里,添加如下:

location / {
allow   58.250.143.0/24;
allow   58.251.121.0/24;
allow   59.36.120.0/24;
allow   61.151.163.0/24;
allow   101.227.163.0/24;
allow   111.161.109.0/24;
allow   116.128.128.0/24;
allow   123.151.76.0/24;
allow   125.39.46.0/24;
allow   140.207.120.0/24;
allow   180.163.22.0/24;
allow   183.3.254.0/24;
allow   223.166.151.0/24;
deny    all;
}

查一下使用的CDN商家的文档,如果有新的IP段更新,也加到里面。

本文原创地址:https://www.linuxprobe.com/ssl-expose-ip.html编辑:倪家兴,审核员:逄增宝

为您推荐一些与本文相关的文章:

  • 只有一家安卓手机厂商更新内核!
  • Android Q首批升级厂商名单公布
  • Github上推出的区块链项目92%濒临死亡
  • 汽车级Linux为车载系统提供新的解决方案
  • 谷歌浏览器新bug,CPU占用率100%
  • 全球十大IC设计厂营收排名
  • 《计算机病毒防治实用技术》 pdf电子书免费下载
  • PureOS:将手机和电脑连成一体的发行版
  • 谷歌研发开源协议 助听器有望原生支持Android系统
  • 巴菲特一季度投资信息曝光
以上是别让SSL证书暴露了你的网站服务器IP的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>