使用 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泄露》
原文:https://vircloud.net/exp/hide-server-ip.html