使用 CDN 后也有风险?如何完全保护源站 IP 不被泄露?

正文索引 [隐藏]

前言

说这个之前,我这个小破站也有过很多次被攻击的经理,有DDOS也有CC,DDOS的话是刚开始没有使用CDN的时候被打了300G,具体估计有些老访客应该知道呲牙

具体可访问了解:

https://b.julym.com/original/347.html

https://b.julym.com/original/838.html

大家都知道,DDOS只能硬防,CC是可以通过防火墙防御的。如果遭遇DDOS的话只能关机或者换高防机器和CDN,CDN的话本站用的是Cloudflare 。

使用了CDN很长一段时间都没有被攻击到宕机过了,直到一次阿里云突如其来的短信通知我才知道被DDOS了,想了想,我源站IP也没有被泄露啊,去查了一下,发现了一个网站。

(这次攻击是很久以前的事情了,这次写这次文章是因为突然被@柳十七提醒了一下,想起来了这件事抽烟

泄露原理

Censys,这个网站可以通过搜索IPv4地址、SSL证书以及域名来获取相关信息,也就是说,只需要搜索你的域名即可得到相应IP地址。

简单的说一下原理:

假设你在"niubi.com"假设了一个网站,服务器IP是 "123.123.123.123"。

然后你怕被攻击,使用了Cloudflare以及防火墙来替你进行安全防护作用,以确保你的服务器不会遭受攻击。

但,为什么在没有透露你的IP地址的情况下能够获取到你的IP呢?

你已经使用了cloudflare进行了保护,这看起来已经很安全了,ping出来的也不是你的IP地址,但为什么呢?

举个例子,当你访问百度的IP的443端口或者通过https协议访问的时候,你会发现浏览器有个报错警告。

当你查看证书的时候,你发现了,是百度的域名,那么这个IP 99.9%就是隶属于百度的。

结论

这个时候你可能会说,IPv4地址约有四十亿个,他怎么猜中我的地址呢?

没错,IPv4地址约有四十亿个,大家都知道IPv4地址从 0.0.0.0 到 255.255.255.255,如果攻击者直接扫描所有的IPv4地址和你的域名匹配,那你的服务器IP不就出来了吗?

Censys 就是这个原理,这个网站会24小时不间断扫描所有的IP地址段并保留相应信息。

这只是其中一种方法,据我所知还有以下几种方法获取源IP(这里只清晰介绍以下三种 想了解更多的话可以在留言区评论或者加QQ群讨论)。

1.通过SSL证书寻找真实原始IP

比如你需要找到"niubi.com"的源站IP,只需将”SHA1 FingerPrint”(签名证书的SHA1 指纹)粘贴到 Censys IPv4 主机搜索中,即可找到相应证书,那么 使用此方法可以轻松找到相关配置的服务器IPv4地址。

2.扫描所有IPv4地址段

即上文所说

3.利用DNS记录查找源站IPv4地址

你解析域名的时候有解析记录(可能会有网站24小时扫描解析记录并储存),CloudFlare 里也含有DNS记录,如果利用 Censys 这样的工具,就可以轻松查找出 DNS解析记录。

比如利用 SecurityTrails 平台,攻击者就可以利用域名轻松的找到搜索到DNS记录中所绑定的IP,有多轻松?攻击者只需要文本框中输入相关域名,然后按 下Enter 键即可查到,这时“历史数据”在左侧菜单的“Historical Data”中找到。

那,如何防护呢?这里仅介绍与 “扫描所有IPv4地址段” 方法的防护方案。

如果你的DNS解析(或历史)记录中 或 在 Censys 搜索结果中 已经包含了你的真实服务器IP,那么请你立即更换服务器或更换IP地址,因为您的源站IP地址已经泄露,没有补救方法。

方案一

屏蔽IP
最有效的方法,直接利用防火墙屏蔽除你使用的CDN IP地址段以外的IP访问你的服务器,由于每家CDN IP段都不一样,这里就不提供具体命令了。

方案二

将CDN 设置为 HTTPS 回源并且使用 HTTPS 协议。

例如 CloudFlare 将 SSL 设为 Full 或者 Full(strict)即可,另外就是不要将自己的网站设为默认网站。

如下图所示,分别为:

  • Off:全程 HTTP协议,无任何加密。
  • Flexible:浏览器到CDN之间的流量 采用 HTTPS协议,CDN到服务器之间的流量 采用 HTTP,即灵活加密。
  • Full:全程使用 HTTPS 协议,允许服务器端使用自签名的SSL证书,即完整加密。
  • Full(strict):全程使用 HTTPS,服务器端必须使用有效的可信任证书,即完整严格加密。

方案三

源站SSL证书

这是最简单也是最快捷方便的方案,推荐此方案。

就是直接新建一个站点,域名直接用你的服务器IP作为域名,然后绑定一个虚假的SSL证书(证书生成见下一句),开启HTTPS强制(可以不开启),最后将这个站点设置为默认站点。

SSL测试证书生成:MySSL 亚洲诚信 TrustAsia

尾言

最后,希望大家的网站都不会遭遇任何攻击,都能有很大的流量以及不错的收益。欢呼

另外,千万不要以任何方式透露您服务器的IPv4地址,例如 使用自己的服务器进行邮件服务,在您使用自己的服务器进行发送邮件行为时,对方是可以根据邮件的原始信息查看到您的源站IP的!

反正希望大家多加小心!

例如: