网站运营中令我们头疼的事情之一就是域名污染,它与域名被墙不同,DNS污染是直接让域名无法访问。PING一下我们的站点,会有很多节点解析到非我们服务器的IP地址。接下来分享域名污染是什么意思?域名污染的解决办法有哪些?
一、域名污染是什么意思
域名污染又称域名DNS服务器缓存污染(DNS cache pollution),简单来说,当我们打开某个域名,电脑会向域名服务器发送域名查询的请求,然后域名服务器把回应发送给你的电脑,这个过程有一个时间差。攻击者会利用域名服务器的DNS应答还没有到达你的电脑之前,先伪造一个错误的DNS应答发给你电脑。那么你的电脑收到的就是错误的信息,并得到一个错误的IP地址。
一般来说,在互联网上都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名服务器都会把从上游的域名服务器获得的解析记录暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。攻击者利用了这一特性,通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址而达到无法访问目标网站的目的。
二、域名污染的原理解析
由于DNS污染的数据包并不是在网络数据包经过的路由器上,而是在其旁路产生的。所以DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。
以下模拟被污染的DNS请求过程:
假设A为用户端,B为DNS服务器,C为A到B链路的一个节点的网络设备(路由器,交换机,网关等等)。A向B构建UDP连接,然后,A向B发送查询请求,查询请求内容通常是:“A baidu.com”,这一个数据包经过节点设备C继续前往DNS服务器B;然而在这个过程中,C通过对数据包进行特征分析(远程通讯端口为DNS服务器端口,激发内容关键字检查,检查特定的域名如上述的“baidu.com",以及查询的记录类型"A记录"),从而立刻返回一个错误的解析结果(如返回了"A 123.123.123.123"),众所周知,作为链路上的一个节点,C机器的这个结果必定会先于真正的域名服务器的返回结果到达用户机器A,而我们的DNS解析机制有一个重要的原则,就是只认第一,因此C节点所返回的查询结果就被A机器当作了最终返回结果,用于构建链接。
三、域名污染与域名被墙的区别
域名被墙简单讲是被我国的防火墙屏蔽了,多半是网站有敏感内容,不符合国内法律法规,域名被墙的表现为域名解析正常,但国内无法正常访问。而域名污染是被利用了DNS协议中存在的漏洞,将IP地址错误指向,即输A网络地址,打开的却是B网络页面。
四、域名污染的解决办法
1、替换DNS解析服务器:一般域名注册服务商都有提供免费的DNS解析服务,在域名管理面板将已指向的其它DNS地址替换为服务商的DNS地址即可。
2、第三方DNS解析服务:现在有许多第三方平台提供DNS解析服务,有免费也有付费,将自己域名的DNS改为第三方平台的DNS地址,同时重新添加域名解析。
3、自建DNS解析服务器:这个需要具备一定的技术知识,也可以请人搭建,有能力的朋友可以尝试。