攻击原理
DNS request flood攻击既可以针对DNS缓存服务器,又可以针对DNS授权服务器。
针对缓存服务器攻击
攻击者直接或间接向DNS缓存服务器发送大量不存在的域名解析请求,会导致缓存服务器不停的向授权服务器发送这些不存在域名的解析请求,一收一发更加重服务器的负担,最终导致DNS缓存服务器超载直到最终导致瘫痪,影响正常业务。
针对授权服务器攻击
如果攻击的是DNS授权服务器,大量不存在的域名解析请求会导致服务器应接不暇,致使DNS服务器严重超载,无法继续响应正常用户的DNS请求,从而达到攻击的目的。
DNS request flood攻击源可能是虚假源,也可能是真实源,针对不同类型的攻击源,采取的防御方式也不同。
防御原理
针对虚假源攻击缓存服务器
源认证方式可以有效防御DNS request flood虚假源攻击。基于目的地址对DNS Request报文的速率进行统计,当DNS request报文的速率超过阈值时,启动源认证防御。源认证只针对访问受攻击域名的源IP地址实施,以减少误判和避免对正常业务的访问延时。
DNS查询有TCP和UDP两种方式,通常DNS查询都是用的UDP协议,此时TC位置0,但是可以通过将TC位置1,将查询协议改为TCP方式。Anti-DDoS防护系统可以利用修改DNS报文中的TC标识位,对客户端进行认证。源认证主要交互流程如下:
针对虚假源攻击授权服务器
授权服务器源认证(即ns重定向方式),可以有效防御DNS Request Flood虚假源攻击。重定向只针对访问受攻击域名的源IP地址实施,以减少误判和避免对正常业务的访问延时。
基于目的地址对DNS Request报文的速率进行统计,当DNS request报文的速率超过阈值时,启动重定向。
- 返回给请求源一个别名地址,如果请求源是虚假源,则不会回应重定向报文,认证不通过报文丢弃。
- 如果请求源是真实源,则重新请求发送的重定向地址。认证通过将此真实源加入白名单。
- 再次重定向正确的地址,请求源重新请求正确地址,报文命中白名单,直接放行到达授权服务器,完成报文交互。
针对真实源攻击
如果是真实源攻击,经过上述防御过程后,通过的DNS报文还很大,则可以继续采用以下方式进行防御。
DNS请求报文限速:对于大流量的DNS request flood攻击也是一种非常有效的防御方式。
DNS request报文限速源IP行为控制,丢弃超出阈值的DNS request报文。
另外还需要对异常DNS报文的检查将非标准格式的DNS报文直接丢弃。