一、前言
DNS诞生于上世纪80年代,就像很多新的技术出现只是为了解决一些简单的问题一样,其诞生之初也仅仅是为了解决网络上主机数量爆炸性的增长、IP地址不便于记忆的问题。其发明者可能连自己也没有想到,在几十年后的今天,互联网会发展到如此规模,DNS的应用更是如同水和空气一般无处不在。
DNS诞生的年代,互联网的规模和应用场景远不如今天复杂,更没有现如今如此严峻的网络安全环境,因此其设计之初并没有过多的考虑安全因素,基于无连接UDP协议的报文交互、尽力而为的服务方式成为了现如今互联网世界里的一个安全薄弱的环节,攻击成本低、攻击收益高的特性更是成为了黑客们的重点目标。
针对或利用DNS发动的网络威胁事件、攻击手段日益增多,根据攻击方式的特征大致可分为资源耗尽型、欺骗性、渗透性等攻击类型,本文将选取DNS资源耗尽型攻击类中的“反射放大攻击”作为主题,浅析其攻击实现原理和防范的思路。
二、攻击原理解析
DNS反射放大攻击是一种典型的分布式拒绝服务攻击,是众多反射放大攻击中的一种,攻击者利用了DNS的多种脆弱特性,发动互联网上的僵尸网络“肉鸡”(受黑客远程控制的电脑等),通过将DNS报文的源地址修改为受攻击者地址,同时面向大量互联网公共递归请求海量的全记录类型域名查询,造成被攻击者的网络带宽、服务器性能资源的耗尽。详细步骤如下图:
1.肉鸡侧
像很多其他ddos攻击一样,攻击者同样是利用海量的互联网肉鸡作为枪炮发动攻击,每台肉鸡都会发起大量的DNS请求,但DNS的请求报文中均发生了一些变化。
- DNS请求报文中源IP地址修改为受害者的服务IP
- DNS请求报文中类型为ANY(即请求某域名的全部记录类型,递归DNS服务器将回答A、AAAA、MX、NS、SOA、HINFO、AXFR、TXT等),如下图:
2.互联网公共递归侧
互联网的公共递归收到大量源地址为受害者、请求类型为ANY的域名解析请求,如下图举例,请求baidu.com的ANY类型,请求数据包大小为80字节,应答的数据包大小却为620字节,为请求数据包的7.75倍,某些域名放大效果甚至可达50-100倍,攻击者的小流量攻击,经过互联网递归应答的放大,流量翻数十倍,达到四两拨千斤的攻击效果。
正常解析请求和应答数据包大小
Any全类型解析请求和应答数据包大小
3.被攻击者侧
当大流量的DNS响应数据包到达被攻击者一侧时,出口带宽和服务器资源将面临极大的压力,要么出口带宽彻底拥堵、要么服务资源因为处理无用DNS响应数据包被耗尽,达到拒绝服务的目的。
原理分析:99.9%的域名解析交互流量都是基于UDP的,UDP协议是一种无连接的协议,不存在TCP中的三次握手,因此即使出现IP报文源地址被修改,DNS请求报文交互的过程依然可以完成,互联网大量的开放递归DNS收到请求后,将经过放大的应答报文全部回复至受害者,致使受害者的服务中断,此时互联网的递归侧成了反射镜、放大镜,绝大多数互联网公共递归服务并没有太多手段避免沦为作恶的帮凶。
三、反射放大攻击防护思路
通过简单分析反射放大攻击的原理,其攻击过程中的主要特征为:
- 大量源地址指向受害者的DNS查询
- 查询大量的ANY类型的域名解析
- 将互联网公共递归DNS服务器作为攻击媒介
1.防御阵地的选择
主阵地:防御DNS反射放大攻击,最好的方式为斩断这一攻击链条中的关键环节—开放式的互联网公共递归,即将防御主阵地设置在开放式的互联网公共递归;大量经过伪装的DNS查询报文首先到达互联网公共递归侧,经过递归侧DNS服务的清洗、过滤,可在很大程度上解决反射放大攻击带来的危害。
即使越过公共递归侧,反射放大攻击报文将到达权威侧,权威DNS同样具备识别、拦截反射放大攻击的能力,通过递归、权威的两层过滤,可有效的斩断反射放大的攻击链条。
次阵地:用户侧也需采取措施,采用分布式的架构分散攻击的流量,减少某一节点遭受的攻击流量,同时提升单一节点的网络带宽、服务器性能资源,可承受一定量级的反射放大攻击。
2.DNS服务所需的安全防御能力
既然将防御主阵地设置在了互联网公共递归侧,那么对递归DNS就提出了更高的要求,递归DNS不能再是傻瓜式的、尽力而为的提供解析服务,需具备一定的识别、拦截反射放大攻击报文的能力,可从以下2个方面入手进行识别、拦截:
- DNS反射放大攻击行为识别与拦截
互联网场景中的域名解析请求,绝大多数的解析类型为A、AAAA、TXT、MX、CNAME、NS等,ANY类型少之又少,因此递归DNS在遇到ANY类型解析时需提高警惕,可通过设定ANY报文数量和时间周期的阈值,允许在一段时间周期内响应一定量级的ANY解析请求,但是如果超出该量级即可判定为异常解析请求,可直接拒绝响应。
权威侧也具备同样能力,针对本权威区域的域名的请求不提供ANY类型的应答,该策略也可作为权威DNS的安全配置基线。
- 限制反射方法攻击过程中的连接并发数
发生DNS反射放大攻击时,递归DNS将收到大量的同一源地址的域名解析请求,且请求类型为ANY,递归DNS可通过限制某一源地址的并发请求数,设定并发数上限,将有效减少反射放大攻击的流量。
3.面向互联网的权威DNS关闭递归功能,避免沦为帮凶
互联网中存在着大量各组织机构自建的权威DNS服务,目的是面向互联网提供自身的权威域名解析服务,这些权威DNS多为开源软件,但大多数机构没有注意到的是开源DNS软件大多数均为默认开启递归功能,因此很容易被拉入到ddos攻击黑产中去,成为DNS反射放大攻击的帮凶。及时关闭面向互联网的权威DNS非必要的递归功能,确保自己的服务器、带宽资源不被恶意利用也是降低整体DNS反射放大攻击威胁重要的一环。
结语:互联网开放的递归/权威DNS服务器成千上万,小部分DNS具备一定安全防护的能力并不能彻底解决上述问题,只有包括运营商在内的公共递归DNS、权威DNS服务运营者共同发力,逐步提升互联网DNS服务的整体安全防护能力,才能使利用DNS发动DDoS攻击的空间越来越小。
原文链接:https://blog.csdn.net/weixin_38354951/article/details/113123111
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22061