2.4.2 华为Anti-DDoS系统如何防御DNS Reply Flood攻击
针对这种攻击行为,Anti-DDoS 系统一般可使用源认证方式进行防御。源认证的方法就是通过构造一个DNS请求报文,试探客户端是否能正常回应的过程
源认证过程如下。
① Anti-DDoS系统部署在受保护服务器前,并统计到达服务器的DNS回应报文。当到达服务器的DNS回应报文超过告警阈值时,Anti-DDoS系统启动防御。
② Anti-DDoS系统收到某个源IP地址发来的DNS回应报文后,会重新构造一个新的DNS请求报文,然后记录构造查询报文的Query ID和源端口号。
③ 如果是虚假源,则Anti-DDoS系统不会回应这个DNS回应报文,认证不通过。
④ 如果是真实DNS授权服务器,则Anti-DDoS系统会重新回应DNS回应报文。
⑤ Anti-DDoS系统收到DNS回应报文后,会将其与之前记录的Query ID和源端口号进行匹配。如果完全一致,则系统判定此DNS回应报文就是反弹DNS请求报文的回应,源认证成功,将其加入白名单。
⑥ 后续这个源再发送的DNS回应报文都会被直接通过,直到白名单老化。
这是一种传统的DNS reply flood攻击和防御形式。近几年,还有一种升级版的DNS reply flood攻击,因为危害性较大,而备受安全界的关注,这就是DNS反射攻击。
2.4.3 DNS反射攻击
DNS反射攻击是DNS reply
flood攻击的一种变异,是一种更高级的DNS reply flood攻击。
如图2-26所示,DNS 服务器是互联网的基础设施之一,网络中有很多开放的免费DNS服务器。DNS反射攻击正是黑客通过这些开放的DNS服务器制造的攻击。这种DNS反射攻击通常比普通的DNS reply flood攻击的攻击性更强,追踪溯源更难。
黑客将自己的源IP地址伪造成被攻击目标(主机A)的IP地址,然后向网络中开放的DNS服务器发送大量的查询请求。黑客通过伪造DNS请求报文的源IP地址,控制DNS回应报文的流向,这些DNS回应报文都会被引导到被攻击目标,导致被攻击目标的网络拥塞,从而拒绝正常服务。而全球有几千万台开放式的DNS服务器,这些服务器的接入带宽往往都比较高,而且,DNS回应报文的大小通常也是DNS请求报文的几倍甚至几十倍,因此,这种攻击还可达到放大攻击的效果。对于控制成千上万台僵尸主机的黑客来说,制造几GB乃至数十GB的DNS攻击流量并不太困难。
DNS反射攻击和前面介绍的传统DNS
reply flood攻击有两点本质的不同。
① 传统DNS reply flood攻击的攻击目标一般是DNS缓存服务器;而DNS反射攻击的攻击目标一般是客户端。
② 传统DNS reply flood攻击大多是虚假源攻击,而在DNS反射攻击中,DNS请求报文都是真实的,DNS回应报文也都是真实的,这是由网络中真实的DNS服务器发出的,属于真实源攻击。在这种情况下,源认证方式便不适用DNS反射攻击了。
Anti-DDoS系统借鉴防火墙的会话表机制,利用DNS交互过程中DNS请求报文首包创建会话的机制,防御DNS反射的放大攻击,如图2-27所示。
Anti-DDoS系统对DNS反射攻击采用的防御手段就是会话检查。会话表五元组信息包含:源IP地址、目的IP地址、源端口、目的端口和协议。当DNS请求报文经过Anti-DDoS系统时,Anti-DDoS 系统会创建一张会话表,记录 DNS 请求报文的这五元组信息。当Anti-DDoS系统再收到DNS回应报文时,就会查会话表:如果它与会话表匹配,系统就判定它是真实的回应报文,允许它通过;如果它与会话表匹配,则系统判定这个回应报文为攻击报文,禁止它通过。
除了源认证和会话检查以外,DNS 攻击还可以通过限速的方式被防御。DNS 限速有两种:域名限速和源IP地址限速,针对DNS请求报文和DNS回应报文都生效。




