由于DNS协议在设计之初存在的缺陷以及DNS服务器自身存在查询能力有限的缺点,导致其成为DDoS攻击的重点目标,其中既包括互联网的关键基础设施(根域名服务器和各顶级域名服务器),也包括各大网站的授权域名服务器。DNS作为互联网中关键基础设施,一旦遭遇DDoS攻击发生故障,将会对整个区域网络甚至是国家网络造成严重影响。本文针对DNS DDoS攻击的工作原理进行分析,阐述其对DNS系统造成的破坏,并提出相应的应对措施和方案。
从DNS解析的工作原理中可以了解到,当客户主机针对目标域名发起解析请求时,会委托递归解析服务器依次请求根域名服务器、顶级域名服务器,并最终在域名授权的权威服务器获得解析记录。这种查询机制简化了客户主机查询解析的过程,但带来的问题却是递归服务器的负担大大增加。以一次标准的DNS解析流程来看,递归服务器所承受的压力是客户主机的5倍。如果攻击者在客户主机对递归服务器发起DDoS攻击,则受攻击的递归服务器将承受5倍的攻击压力,可以很好地达到“以小博大”的攻击效果,同时由于DNS的多层次查询结构,导致各级域名服务器都会遭受DDoS攻击的影响。
根据攻击方式的不同,可以将DNS DDoS攻击分为DNS查询攻击和DNS反射放大攻击两种。
1.DNS查询攻击
1.1DNS查询攻击原理和特点
DNS查询攻击的目标是DNS服务器,包括递归服务器和域名授权的权威服务器。攻击者通过控制大量的傀儡主机组成僵尸网络对被攻击的DNS服务器发送大量的DNS查询请求,通常请求解析的域名是随机生成的或者是网络上根本不存在的域名,DNS服务器在接收到解析请求后会首先查看自身是否有对应的缓存,如果查找不到,DNS服务器就会进行全球解析查询,这个解析过程会给DNS服务器带来巨大的负载,从而影响正常的域名解析请求。
1.2 DNS查询攻击应对策略
由于这类攻击属于传统的伪造IP地址的DDoS攻击,因此防御的重点在于如何区分伪造地址的数据包上。目前主要有主动防御和被动防御两种方案。
主动防御是指在DNS服务器前面布置一个DNS代理,通过cookie技术和远端进行通信的方法来识别伪造地址攻击包的方法,这种方法在检验伪造地址包上具有较高的正确率,但容易遭受基于cookie验证的DDoS攻击。
被动防御目前比较有效果的是利用路由跳数进行信息验证的方法,这种方式是在受保护的DNS服务器前面部署一个防护系统,通过判断真实地址与DNS服务器之间的路由跳数来识别攻击者伪造的数据包。这种防御方法在保证较高识别准确率的同时降低了系统开销,成为终端防御伪造地址攻击的较优方法。
2 DNS反射放大攻击
2.1DNS反射放大攻击原理和特点
DNS反射放大攻击的目标是网站服务器或客户主机,攻击者控制网络上的众多傀儡主机组成僵尸网络发出攻击指令,僵尸网络接收到指令后,会伪造成受害者的IP地址向网络上大量开放递归服务器发送域名查询请求。由于域名服务器不对查询请求包的源IP地址进行真实性验证,因此会对所有请求进行应答,最终导致受害者被大量的DNS应答包堵塞,而应答包往往比请求包大数十甚至数百倍,从而形成DDoS攻击耗尽被攻击目标资源。
除了攻击目标不同外,DNS反射放大攻击还具有以下特点:
(1)DNS放大攻击的必要条件是开放的递归服务器和源IP地址伪造技术。开放的递归服务器充当放大攻击的反射体,为DNS放大攻击提供了很好的条件,此外DNS在传输层大部分采用的是UDP协议,这种无连接不可靠的协议使得源IP地址伪造变得十分简单。
(2)DNS放大攻击具有明显的流量放大效果,由于DNS协议本身的特点,较小的DNS查询包会产生较大的DNS应答包。在早期关于DNS的RFC规范文档中,UDP报文大小被限制在512字节以内,但随着互联网的发展,为了支持IPv6、DNSSEC等,DNS服务器对特定DNS查询返回的应答报文长度超过了512字节,利用这种扩展机制,一个60字节的DNS查询报文即可得到超过4000字节的应答报文。
(3)DNS放大攻击以互联网上大量开放的递归服务器作为反射体,使得追踪攻击者的难度加大,攻击隐蔽性提升。
2.2DNS反射放大攻击应对策略
在源端和中端防御方面,一个比较有效的应对DNS反射放大攻击的方法是在边界路由出口配置源路由检测,防止伪造地址包流向外部网络,并在受害服务器端路由进行过滤,将超大的DNS应答包予以丢弃,然而这种方法需要对整个网络进行广泛部署,难以在实际中应用。
所以目前防御DNS反射攻击的主流方向是在终端进行防御,在DNS服务器前面架设相应的防护系统对DDoS攻击流量进行过滤。一种方法是根据DNS请求包与应答包一一对应的特点,对DNS反弹式攻击进行检测并结合防火墙对攻击IP进行阻塞。这种方式有一定效果,但被利用的反射体DNS服务器,可能是根服务器、顶级域名服务器以及更多的权威域名服务器将被列入黑名单,受保护的服务器将无法获得正常回应的应答包。
此外,减少开放DNS服务器的数量也是应对反射放大攻击的有效方式。DNS反射放大攻击的一个重要组成部分就是对开放DNS服务器的访问权限。理想状态下,DNS服务器只向源自信任域名的设备提供服务。而在基于反射的攻击中,开放的DNS服务器将响应来自互联网任何位置的查询,因此可能被攻击者利用。限制DNS服务器,使其仅响应来自受信任来源的查询,即可使服务器无法被用于任何类型的放大攻击。
相关推荐: