我们再来结合一组抓包深入了解此过程。
① 客户端向DNS服务器第一次发送DNS请求报文
② Anti-DDoS系统代替Web服务器进行回应,并将TC标志位设置为1,希望客户端通过TCP方式重新发起DNS查询
这种方式是防御DNS request flood攻击的一种基本的认证模式,适用于客户端是浏览器的认证方式。随着这种防御方式在现网中的应用,其局限也渐渐地显现出来。比如现网中有一些真实的客户端,并不支持通过TCP方式进行DNS查询,在这种情况下,这种防御方式就不适用了。所以,现在对于缓存服务器的DNS request flood攻击的防御模式已经逐渐被另一种“被动防御”模式所取代。
2.被动防御
被动模式其实就是“以不变应万变”,Anti-DDoS系统利用DNS的重传机制,不反弹 DNS 查询报文,而是直接不处置,将其丢弃,然后看客户端是否重传
Anti-DDoS系统在第一次收到DNS请求报文后,就会记录DNS请求报文的域名、源 IP 地址等基本信息,并 HASH 成一个值,将其记录到系统的表里。后续一定时间戳内,如果Anti-DDoS系统再收到与这个HASH值相同的DNS请求报文时,就认定其为重传包,对其执行放行操作。时间戳会随着收到的每一个相同HASH值的DNS请求报文包而不断地被刷新
.CNAME模式
授权服务器直接服务的“客户”通常是缓存服务器,而不是客户端的浏览器。所以在源认证的时候,授权服务器的防御机制和缓存服务器的机制不同。授权服务器利用的是DNS的CNAME(别名)机制。
DNS协议允许将多个域名映射到同一个IP地址上,此时可以将一个域名作为A记录指向服务器 IP 地址,然后将其他域名作为别名,指向之前有 A 记录的域名。这样类型的存在是为了保证在IP地址变更时,系统不必一个一个地对域名做出相应更改指向。应用此种机制后,系统只需要更改
A 记录的相应域名到新 IP 地址上,其他别名将自动被更改到新IP地址上
通过对这3种模式的了解,我们不难发现,无论是TC源认证、被动防御还是CNAME模式,它们都是利用DNS协议对发送请求的客户端是否真实存在所进行的源探测。其中,TC源认证利用的是DNS协议的TCP查询方式;被动模式利用的是DNS协议的重传机制;而CNAME利用的是DNS协议的别名机制。
2.4 DNS Reply Flood攻击与防御
2.4.1 DNS Reply Flood攻击原理
DNS查询过程通常都是基于UDP的。UDP是无连接状态的,所以这一弱点很容易被黑客利用。DNS服务器收到DNS回应报文时,不管自己有没有发过解析请求,都会处理这些DNS回应报文。DNS reply flood攻击就是黑客发送大量的DNS回应报文到DNS缓存服务器,导致缓存服务器因为处理这些DNS回应报文而耗尽资源,影响正常业务的过程
DNS reply flood攻击大多都是虚假源攻击,黑客控制僵尸主机发出的DNS回应报文的源IP地址通常都是伪造的,是不存在的。所以在防御的时候,系统就可以从回应源IP地址的真假性切入,判定这个源IP是否是真实源。




