什么是DDOS

分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

DNS查询过程通常都是基于UDP协议的,UDP协议是无连接状态的。所以这一弱点很容易被黑客所利用,DNS服务器收到DNS reply报文时,不管自己有没有发出去过解析请求,都会对这些DNS reply报文进行处理。DNS reply flood就是黑客发送大量的DNS reply报文到DNS缓存服务器,导致缓存服务器因为处理这些DNS reply报文而资源耗尽,影响正常业务。

 

DNS reply flood大多都是虚假源攻击,黑客控制僵尸主机发出的DNS reply报文的源IP地址通常都是伪造的,是不存在的。所以在防御的时候,就可以从回应源IP地址的真假性入手,判定这个源IP是否是真实源。

针对这种攻击行为,Anti-DDoS系统一般可使用源认证方式进行防御。源认证的方法就是构造一个DNS request报文,看客户端是否能正常回应。

 

 

1、Anti-DDoS系统部署在防护目标前,并对到达防护目标的DNS reply报文进行统计。当到达防护目标的DNS reply报文超过告警阈值时,Anti-DDoS系统启动防御。

2、Anti-DDoS系统收到某个源IP地址发来的DNS reply报文后,会重新构造一个新的DNS request报文,然后记录构造查询报文的Query ID和源端口号。

3、如果是虚假源,则不会对这个DNS request报文进行回应,认证不通过。

4、如果是真实DNS授权服务器,则会重新回应DNS reply报文。

5、Anti-DDoS系统收到DNS reply报文后,会与之前记录的Query ID和源端口号进行匹配。如果完全一致,则判定此DNS reply报文就是反弹DNS request报文的回应,源认证成功,加入白名单。

6、后续这个源再发送的DNS reply报文,直接通过,直到白名单老化。

近几年,还有一种升级版的DNS reply flood攻击,因为杀伤力巨大,而备受安全界的关注,那就是DNS反射攻击。

0x02 DNS反射攻击

DNS反射攻击是DNS reply flood的一种变异,是一种更高级的DNS reply flood。

DNS服务器是互联网最基础的设施之一,网络中有很多开放的免费DNS服务器。DNS反射攻击正是利用这些开放的DNS服务器制造的攻击。这种DNS反射攻击通常比普通的DNS reply flood攻击性更强,追踪溯源困难,更善于伪装。

 

从图中我们可以看到,黑客将自己的源IP地址伪造成被攻击目标的IP地址,然后向一系列网络中开放的DNS服务器发送大量的查询请求。通过伪造DNS请求报文的源IP地址,控制DNS回应报文的流向,这些DNS回应报文就会都被引导到被攻击目标,导致被攻击目标的网络拥塞,拒绝服务。而开放式的DNS服务器在全球有超过几千万台,这些服务器接入带宽往往都比较高,而且,DNS reply报文大小通常也是DNS request报文的几倍甚至几十倍,还可达到放大攻击的效果。对于控制成千上万台僵尸主机的黑客来说,制造几G乃至数十G的DNS攻击流量并不太困难。

DNS反射攻击和前面介绍的传统DNS reply flood有两点本质的不同:

1、传统DNS reply flood一般攻击目标是DNS缓存服务器;而DNS反射攻击一般攻击目标是客户端。

2、传统DNS reply flood大多是虚假源攻击,而DNS反射攻击中,DNS请求是真实的,所以DNS回应报文也都是真实的,是由网络中真实的DNS服务器发出的,属于真实源攻击。这种情况下,再使用前面刚讲过的源认证方式,对于DNS反射攻击就不适用了。

那是不是就没有办法防御了呢?

当然不是,魔高一尺,道高一丈。我们看看Anti-DDoS系统是怎么处理这种攻击的。

Anti-DDoS系统借鉴防火墙的会话表机制,利用DNS交互交互过程中,DNS request报文首包建会话的机制,防御DNS反射放大攻击。

 

Anti-DDoS系统对DNS反射攻击采用的防御手段就是会话检查。会话表五元组信息包含:源IP地址、目的IP地址、源端口、目的端口和协议。当DNS request报文经过Anti-DDoS系统时,Anti-DDoS系统会创建一张会话表,记录DNS请求报文的这五元组信息。当Anti-DDoS系统再收到DNS reply报文时,就会查会话表:

如果匹配会话表,就判定是真实的DNS reply报文,允许通过。

如果没有匹配会话表,则判定这个DNS reply报文为攻击报文,禁止通过。

 

除了源认证和会话检查以外,对于DNS flood攻击还可以通过限速的方式进行防御。DNS限速有两种,针对DNS request和DNS reply报文都生效。

域名限速

如果某个域名的DNS请求或回应报文速率过高,可以针对这个域名进行限速。通常某个域名在攻击前访问量并不算高,突然有一天访问量是平时的好多倍,那这个域名可能就是受攻击了。这就好比超市卖东西,平时一天超市可能卖200包食盐,突然有一天,来了好多人买盐,超市仓库都卖空了,那这就不正常了。域名限速就是指资源有限的情况下,每天就定量提供这么多的资源, 先到先得。域名限速可以有针对性的对某个特定域名进行限制,而不影响其他域名的正常请求。

 

源IP地址限速

源IP地址限速和域名限速相比,属于另一个维度的限制。如果某个源IP地址域名解析的速率过大,就可以有针对性的对这个源IP地址进行限制,这样也不会对其他源有影响。

现在,这种利用网络基础架构发动的攻击越来越多,比如之前的暴风影音、本节的DNS反射攻击,还有后续我们即将要介绍的DNS缓存投毒攻击、HTTP攻击。作为互联网的基础设施,DNS服务器和其他各种服务器的安全稳定运行也至关重要,也是网络工程师在部署网络设备时需要重点考虑的问题。

通过这两篇帖子,大家对DNS request flood和DNS reply flood攻击的防御都有了全新的了解吧,但是DNS攻击可不止这些,除了这些传统攻击手段外,黑客利用篡改域名和IP地址映射关系的手段制造的攻击,在近几年频频发生。下一节,我们就为大家继续介绍DNS缓存投毒攻击。

 --------------------------------------

以上文章部分转载来自:http://www.uml.org.cn/safe/202008272.asp

如有侵权请第一时间联系,我将删除。

 

posted on 2022-06-15 18:00  白灰  阅读(707)  评论(0编辑  收藏  举报