温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
使用 CDN,一般都是出于加速和安全防护的目的,但是经常一些有意无意的配置导致源站 IP 暴露,致使 CDN 防护失效,本文将探讨如何更好地保护源站 IP 安全。
分析
背景
开始之前,先介绍一个网站:Censys - Security starts with visibility ,这个网站通过不间断地扫描来记录 IP 等信息,因此在这里可以找到与你网站相关的很多东西(且不限于此),比如:
这也就意外着,只要有心套几层 CDN 都防不住,而且能实现这个功能的网站或工具不限于 Censys 一家。因此我们就要想办法尽量减少各个信息链的关联。
原理
Nginx 服务器本身工作原理,当未设置默认网站(default_server
)时,通过 IP 可直接访问建立的第一个网站,而当你在 IP 前加上 https 访问时,Nginx 会自动返回该网站的 https 证书,从而暴露相关域名信息。
实例
以百度为例,ping
一下 baidu.com
,比如我这里分配到的 IP 是 220.181.38.148
,于是我们访问 https://220.181.38.148
,可以看到:
已经把该 IP 下的默认站点 www.baidu.cn
暴露了,虽然证书是可以随意配置的,但至少我们可以确定该 IP 曾经关联过 www.baidu.cn
域名,再去 Censys 搜一下 baidu.cn
:
可以看到刚查到 IP 220.181.38.148
,以及其他很多关联 IP,这其中很有可能某一个就是真正的源站 IP。
结论
通过上述分析,我们知道只需要扫描全球所有 IP 段的所有 IP 的 443 端口就很有可能知道某个网站的源站 IP(直接扫描 0.0.0.0/0 即可)。
在讲如何防止源站 IP 泄露之前,如果你在 Censys 已经能查到源站 IP,请换掉你的源站 IP,或者直接重新开 VPS 搬家(比如 Vultr 17 元/月日本 VPS 、CloudCone 12 元/月美国 CN2 VPS、华为云 199 元/年国内学生机等),换掉 IP 之后千万千万别那么着急傻乎乎的解析到自己源站 IP 上,到时候会有查解析记录的平台照样查得出。
方法
IP 限制
最暴力的方法,你用的啥 CDN,就利用防火墙只允许 CDN 的回源 IP 访问自己的 VPS,参考之前的文章《使用 CDN(CloudFlare|腾讯云|加速乐等)情况下如何获取访客真实 IP 》。
IP 证书
这是最方便快捷的方法,就是新建一个默认的站点(default_server
),证书使用 IP 证书,这样通过扫描 443 来判断源站的方法就无法获知你的域名,签发可信任 IP 证书,可以参考之前的文章《获取免费的泛域名证书|IP 证书|多域名证书|单域名证书》。
默认站点的意思就是说不通过域名直接访问 IP,要显示的是哪个网站内容。
回源限制
你根本不需要在源站放一个证书,你只要 CDN 设置为 http 回源,CDN 使用 https 就行了,不要用协议跟随。
比如在 CloudFlare上把 SSL 设为 full即可(参考《如何正确启用 CloudFlare SSL》) ,记得一点就是不要把自己的网站设为默认网站。
PS:其实本站就是个宝藏有木有,相关的都有提过,就看你怎么串在一起用起来。
邮局保护
不要在服务器上直接使用邮件服务,包括使用托管邮局和本地直接发信,因为收信用户都可以在邮件头信息中直接查看来源 IP,确有需要尽量使用代理服务器或者邮局 web 端来发信。
当然了,防护措施不仅仅上面提到的这些,大家可以根据自己的需求选择。
参考文章:
1、《防止源站IP泄露》
Mac OS X 10_14_5Chrome 75.0.3770.80来自 江西 的大神
好多查历史解析的网站,很难避免。
自动邮件回复也会暴露,对于高手来说真的很难防
所以文中说到了,如果已经暴露,可以更换 VPS 或者 IP,然后先别急着 DNS 解析,做好防护后再解析。
自动回复这个确实就比较麻烦,可以的话用 API 方式估计可以避免暴露。
Windows 10Chrome 75.0.3770.80来自 福建 的大神
IP 证书这个可以有
Windows 10Chrome 75.0.3770.80来自 福建 的大神
IP 证书签发成功,666!
AWS CloudFront CDN 详细图文部署教程及自选优质 IP 方法 | 我的文本
Windows 10Chrome 108.0.0.0来自 浙江 的大神
大佬,您好,想申请转载到我的博客,麻烦了,谢谢
可以,注明出处
DDOS/CC防护参考资料 - Hidden Nation