尽量避免 CDN 背后的服务器泄漏 IP 地址

尽量避免 CDN 背后的服务器泄漏 IP 地址

很多的站长都已经为自己的网站配置了 CDN,配置 CDN 既可以加快网站的访问速度,又可以防止服务器被直接攻击,但是配置 CDN 之后,网站的服务器就不会暴露自己的 IP 地址了吗?
聪明的同学一定想到了,仅仅配置 CDN,对于防止服务器的 IP 地址泄漏还是不够滴,今天,俺就来说说,CDN 背后的服务器的 IP 地址泄漏问题,下面为了打字省力,俺把 CDN 背后的服务器简称为后端服务器

* 后端服务器的 IP 地址泄漏的危害是啥捏? *
很显然,后端服务器的 IP 地址泄漏后,如果它是某些攻击者的眼中钉,然后捏,这个服务器就会轮番被攻击,毕竟要攻击 CDN 的电脑系统不是那么容易,加之攻击者针对的目标也不是 CDN 的电脑系统,至少,攻击后端服务器要容易得多,且效益更高。
然后,一些设定不正确的后端服务器,客户端可以通过 IP 地址直接访问上面的某个站点,假如这个后端服务器的 IP 地址泄漏了,那么非法制作镜像的家伙就会很容易得逞,至少不需要设定 Nginx,只要简单地把他们事先准备好的域名绑定上去就行了。

* 为什么后端服务器的 IP 地址会泄漏,咱们要如何应对捏? *
后端服务器的 IP 地址泄漏,大概有以下几个原因:
(1)如果后端服务器运行了有些时日,最近才接入 CDN,它的 IP 地址已经在某个专门搜集服务器 IP 地址的地方留下脚印,借由搜索这些历史资料,攻击者也可以得到这台后端服务器的 IP 地址。
咱们应该怎么办捏?很简单,请求服务器提供商为咱们更换 IP 地址即可。
(2)不必要的域名记录,仔细想想你有没有单独设定一个或若干个域名直接指向后端服务器,而不是 CDN 的 IP 地址?例如,direct.www.example.com、ftp.example.com、ssh.example.com 等等。
咱们应该怎么办捏?不要让域名直接指向后端服务器,如果确有必要使用子域名去访问后端服务器的私有网页,也要通过 CDN 访问这个域名指向的站点,如果使用 SSH、FTP 等协议,用 IP 地址替代域名是一个好主意。
(3)后端服务器是不是会对外发送邮件?如果是的话,它的 IP 地址就会泄漏,因为,大多数的邮件服务器都会在邮件头写出寄信者的 IP 地址,只要引诱后端服务器发送邮件,IP 就自己暴露了。
咱们应该怎么办捏?可以自己租用一台 VPS 扮演 SMTP 角色,或者,可以简单地将它用作端口转发服务器,把数据转发到你正在使用的邮件服务商的 SMTP 端口上,为了避免不必要的法律风险,请妥善配置防火墙,只允许后端服务器将数据发送到端口转发服务器,以免端口转发服务器遭到滥用。很重要的一点是,SMTP/端口转发服务器建议设定在不同的城市甚至国家,切忌设定在与后端服务器相同的网段,以免攻击者通过端口扫描找到后端服务器。
(4)是不是任何人都可以访问后端服务器的网页端口?如果攻击者知道你的后端服务器所在的数据中心,他们即可从该数据中心的 IP 段中搜寻你的服务器,搜寻的速度取决于 IP 地址的多寡,以及采用的搜寻方法,当他们找到与你的网站完全相同的网站时,他们就成功了,至少,在没有镜像站点的情况下是如此。
咱们应该怎么办捏?处理的方法很简单,只要通过系统内建的防火墙,为网页服务端口设定客户端白名单,通常,CDN 服务商都会告知你他们公开使用的 IP 网段,以便你在服务器上设定 IP 网段白名单。
(5)你的服务器是不是运行有那些会主动对外连接的软件?例如支持 pingback 的博客程序,如果有,IP 泄漏是很容易发生的事,除了 Pingback,其它的软件也有可能主动发起对外连接。
咱们应该怎么办捏?简单的方法是关掉软件的联网功能,比如在 WordPress 的后台中,关闭 pingback 和 trackback 功能,避免安装不知名的插件和主题等。对于应用软件,请仅安装必要的软件,且该软件的知名度要是比较高的,不要安装来历不明的软件,在服务器上,这样的习惯尤为重要。如果要彻底杜绝主动的对外连接,方法是通过内建的防火墙程序来阻挡所有的出站连接,并开放必要的地址,例如系统更新补丁需要的地址。

本文的方法,仅仅能最大限度地避免位于 CDN 后端的服务器的 IP 地址泄漏,俺仅仅能最大限度地避免,万一泄漏了,可别怪俺哦!在一些意外的情况下,后端服务器的 IP 地址还是会泄漏滴!例如用来操作后端服务器 SSH 的电脑被入侵了,或者它处于存在监控的网络。相对于完全置之不管,采取一些防护措施,对于后端服务器的可靠运行依然是必要滴。

参考资料:

Research: two thirds of PBNs on CloudFlare leak real IPs @ EBN Blog

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注