使用 CDN 后如何保护源站 IP 不泄露

小助手读文章 00:00 / 00:00

使用 CDN,一般都是出于加速和安全防护的目的,但是经常一些有意无意的配置导致源站 IP 暴露,致使 CDN 防护失效,本文将探讨如何更好地保护源站 IP 安全。

分析

背景

开始之前,先介绍一个网站:Censys - Security starts with visibility ,这个网站通过不间断地扫描来记录 IP 等信息,因此在这里可以找到与你网站相关的很多东西(且不限于此),比如:

Censys.png

这也就意外着,只要有心套几层 CDN 都防不住,而且能实现这个功能的网站或工具不限于 Censys 一家。因此我们就要想办法尽量减少各个信息链的关联。

原理

Nginx 服务器本身工作原理,当未设置默认网站(default_server)时,通过 IP 可直接访问建立的第一个网站,而当你在 IP 前加上 https 访问时,Nginx 会自动返回该网站的 https 证书,从而暴露相关域名信息。

实例

以百度为例,ping 一下 baidu.com,比如我这里分配到的 IP 是 220.181.38.148,于是我们访问 https://220.181.38.148,可以看到:

Baidu.png

已经把该 IP 下的默认站点 www.baidu.cn 暴露了,虽然证书是可以随意配置的,但至少我们可以确定该 IP 曾经关联过 www.baidu.cn 域名,再去 Censys 搜一下 baidu.cn

Baidu.Censys.png

可以看到刚查到 IP 220.181.38.148,以及其他很多关联 IP,这其中很有可能某一个就是真正的源站 IP。

结论

通过上述分析,我们知道只需要扫描全球所有 IP 段的所有 IP 的 443 端口就很有可能知道某个网站的源站 IP(直接扫描 0.0.0.0/0 即可)。

在讲如何防止源站 IP 泄露之前,如果你在 Censys 已经能查到源站 IP,请换掉你的源站 IP,或者直接重新开 VPS 搬家(比如 Vultr 17 元/月日本 VPSCloudCone 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泄露


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 cdn经验IP保护源站 的文章

 本文最后更新于 2019/06/19 14:21:44,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 经验 > 使用 CDN 后如何保护源站 IP 不泄露

精选评论

  1. owen

    IP 证书这个可以有 icon_lol.gif

    1. owen@owen.ml

      IP 证书签发成功,666!

  2. 心灵博客

    好多查历史解析的网站,很难避免。
    自动邮件回复也会暴露,对于高手来说真的很难防

    1. 欧文斯

      所以文中说到了,如果已经暴露,可以更换 VPS 或者 IP,然后先别急着 DNS 解析,做好防护后再解析。
      自动回复这个确实就比较麻烦,可以的话用 API 方式估计可以避免暴露。