前言:
最近很奇怪,明明套了CDN,但是还是受到了DDos攻击,难道是源IP暴露了?
问了一下群里的大佬们,有大佬给我做了这样的解释,让我又发现了新大陆!
简介:
CDN的原理是通过访问你的域名,解析到CDN的服务器,而CDN服务器去访问你源站IP的内容
但是这个漏洞的原理是:
市面上很多工具爬虫24小时不停的抓取扫描IP,这类的工具网站通过无差别HTTP/HTTPS请求所有的IP,并将抓取到的IP地址SSL证书对应的域名记录下来,以至于有些攻击者可以通过这类的网站可以直接查询到网站源站IP,
从而让你的CDN成为了摆设!!
排查是否属于上述问题:通过https://你的源站IP
- 如果可以访问并且浏览器左上角锁的标志中显示了你的域名ssl证书,则已经暴露。
- 或通过https://search.censys.io/ 搜索你的域名,如果直接显示你的源IP,则已经暴露
解决办法:
如果获取到的SSL证书是假的,那自然就解决了这个问题!
思路确定,开始实践,用宝塔举例:
1.在宝塔面板随便建立一个站点
2.打开这个站点的设置 – 配置文件,将配置文件修改为以下内容:
listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name 你的源站IP;
index index.php index.html index.htm default.php default.htm default.html;
root 随便一个目录;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
#SSL-END
#HTTP_TO_HTTPS_END
ssl_certificate 证书地址.pem;
ssl_certificate_key 证书key.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
#直接断开连接,防止获取更多数据
return 444;
我们要修改四处地方:
server_name
root
ssl_certificate
ssl_certificate_key
其中ssl_certificate
ssl_certificate_key
要自己生成一个自签名证书(也就是欺骗爬虫的假证书)
可以通过以下网站生成测试证书:
- https://myssl.com/create_test_cert.html
- https://www.ssleye.com/ssltool/self_sign.html
注意:填写的域名一定要作假,不能是你真实域名!
再填到将证书地址填到ssl_certificate ssl_certificate_key
里面
比如我的是:
ssl_certificate /www/wwwroot/f.pem;
ssl_certificate_key /www/wwwroot/key.pem;
最后再检查一边,直接打开https://源IP地址,看看证书有没有生效!
注意:这种办法不会影响到正常使用,只要CDN上配置的是正确的SSL证书即可,源IP这边什么证书无所谓!
- 最新
- 最热
只看作者一些厂商CDN自带防御流量 {{doge}}