圆弧派博客 - 专注于网络技术

SSL证书泄漏源服务器ip的解决方法

今天网站被DDOS一顿,一看竟直接打的我源服务器,CDN受到的影响却很小,明显是冲着我源IP打的啊,这就暴露了一个问题:IP是怎么泄漏的?

一个根据SSL证书查到源IP的网站https://search.censys.io/(这只是其中一个可能)
大概的原理就是在使用nginx的服务器上如果你没有给你的ip绑定一个默认站点,那么访问 https://你的ip 就可以访问到你服务器上最新的站点,即使你像百度一样设置了405之类的状态码,也可以通过查看ssl证书来知道你这个ip对应的是哪个网站

别问人家不知道你的域名怎么知道的你的ip,问就是人家批量扫的,如果扫到了那就是简单的对应关系了。

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

解决方法一

添加一个自签ip证书

首先给你的服务器添加一个站点

添加完成以后把你的ip默认站点绑定为你刚刚新添加的站点

接下来访问 https://myssl.com/create_test_cert.html 来自定义一个ssl证书,给站点配置上。

如果宝塔部署时出现错误,那就只能自己去申请和创建网站名对应的证书了。

解决方法二

禁止直接访问IP

# 禁止IP直接访问网站 server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 444; }

解决方法三

仅允许指定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; }

解决方法四

使用自签IP的SSL证书,返回444

自签证书的目的不是为了访问,而是避开Nginx的这个缺陷。生成自签的IP SSL证书可以用开源的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; }

当前页面是本站的「谷歌AMP」版。查看和发表评论请点击:完整版 »