别让DNS服务器成为DDoS攻击帮凶
编者按:一个递归查询如何变成一个DDoS攻击?它并不麻烦。本文将向大家介绍一个黑客是如何利用一个使用了递归的DNS服务器来发起一个DDoS攻击的,以及如何防止你的企业DNS服务器来参与DDoS攻击。
【IT168 专稿】你的公众DNS服务器正在等待参加一场分布式拒绝服务攻击?如果它正在使用递归解析的话,那么答案是肯定的。DDoS和DNS攻击已经不是什么新鲜的事情,而且这种现象正在呈增长趋势。
据国外某安全公司称,今年初发现该公司系统承受的攻击规模甚于以往,而且来源不是被绑架的“僵尸”(bot)电脑,而是出自于域名系统(DNS)服务器。
通过使用权威名称服务,DNS服务器的本职是要向全世界广播所有他们要解析的域名相关的记录。因为用户更喜欢使用普通的名称来访问网络,而不是一些数字,DNS服务器对用户在浏览器中输入的内容进行翻译,例如当用户输入www.it168.com后,它会翻译成一个网络可以理解的真实的IP地址。
根据国外安全机构的一个报告显示,在所有的DNS服务器中有75%到80%的可以处理递归查询。
注1:递归查询的工作方式递归查询是最常见的查询方式,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机,在域名服务器查询期间,客户机将完全处于等待状态。
注2:递归解析,简单来说就是你向一个域服务器提出递归解析请求,域服务器就全权帮你解析域名,就是在他的授权域内有这个解析的返回信息给你,没有的话也会交给它自动帮你找域外的服务器分析,直到把结果返回给你。
通过询问其他DNS服务器和提供这个响应给发出请求的客户端,递归式DNS来为客户端提供域名解析的答案。以下是一个例子:
![]() |
| 图1 递归式DNS查询过程 |
1、一个用户在Web浏览器中输入www.it168.com。该计算机联系它的本地DNS服务器,以确定safe.it168.com的IP地址。
2、DNS服务器在它的本地表(或缓存)中查找“www.it168.com”,如果找到则将其返回客户端,如果没有发现,DNS服务器发送一个查询给根服务器,来查询“www.it168.com”的IP地址。
3、根服务器回应一个到“www.it168.com”优异域(TLD)服务器的指向。
4、DNS服务器然后联系优异域名(TLD)服务器来确定“www.it168.com”的IP地址。
5、这个优异域(TLD)服务器回应一个针对“www.it168.com”的名称服务器。
6、这个DNS服务器联系得到的“www.it168.com”的名称服务器来确定它的IP地址。
7、该名称服务器检查定义了CNAME记录的一个域文件,发现“www.it168.com”是“www.it168.com.test.lab.com”的一个别名。DNS返回这个CNAME和“www.it168.com.test.lab.com”的A记录。
8、这个DNS服务器发送这个响应给最初的客户端:www.it168.com=216.57.210.200
那么一个递归查询如何变成一个DDoS攻击?为了发起这种攻击,攻击者需要知道被攻击者的IP地址。
攻击者然后使用该地址来作为发送解析命令的源地址,然后有意思的事情就发生了。以下是原理:
![]() |
| 图2 攻击原理图 |
1、攻击者发送信号给被控制的僵尸机器。
2、僵尸(bots)程序针对这个递归DNS不断的执行这条记录的查询。
3-8、和上面的过程的2-7步完全相同
9、递归DNS获得了某域名的IP地址后,把所有信息都回复给源地址(在这儿就是被攻击者的IP地址了)
随着参与到这个攻击的僵尸(bots)程序的增加,你就实现了一个DDoS攻击。假若你的服务器是这种攻击的目标,你的网络将会被拖垮至发生中断。
对这种攻击有一个更好的比喻是,在寄出杂志里常见的那种广告回函卡,勾选各种想索取的信息,然后把回信地址填上目标信箱,就会让那个信箱爆掉,同时消除与你有关的链接。用DNS服务器发动DDOS攻击,就是运用这种原理。
有什么解决的办法?其实答案非常简单:
运行两个不同的DNS服务器。一个供外部使用,一个供内部使用。
在外部服务器上,禁用递归查询。一旦递归查询被禁用,外部DNS服务器将不会代表其他名称服务器或客户端发送查询,这就阻挡了攻击者从你的DNS服务器发出大量的DoS攻击。
而在内部DNS服务器上开放递归查询,只对内部人士开放。
结束语
开放式DNS的递归功能是不是缺陷?或许他本身不是,但是它是缺陷的引发因素。由此带来了IP欺骗、拒绝式服务攻击、蠕虫和其他令人头疼的问题。
