UDP DNS Query Flood***采用的方法是向被***的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络世界上根本不存在的域名,被***的DNS 服务器在接收到域名解析请求的时候首先会在服务器上查找是否有对应的缓存,如果查找不到并且该域名无法直接由服务器解析的时候,DNS 服务器会向其上层DNS服务器递归查询域名信息。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。
根据微软的统计数据,一台DNS服务器所能承受的动态域名查询的上限是每秒钟9000个请求。而我们知道,在一台P3的PC机上可以轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的DNS服务器瘫痪,由此可见DNS 服务器的脆弱性。目前最常用的DNS服务器软件是Bind。
通常***者采用的手段包括:
1) 利用发包程序向DNS服务器发送不带任何负载的NULL数据包。由于数据包本身不符合协议规定,服务器在收到报文的时候将直接丢弃。因此这种***方式除非***流量比较大,否则不会有明显的效果。
2) 利用程序构造DNS解析请求固定的域名,由于DNS服务器在解析请求的时候会在系统cache存放上一次解析的结果,这种***方式也需要较大的流量。
3) 向DNS服务器发起解析请求随机的、不存在的域名;这样DNS服务器就需要进行频繁的字符串匹配,由于在本地无法查到对应的结果,服务器必须使用递归查询向上层域名服务器提交解析请求,引起连锁反应。
目前尚没有防火墙能对DNS服务器的***进行防护,只有少数的专业防护设备可以做到。

防护仍然可以从统计学的角度出发。作为安装在DNS服务器前面的防护设备,在平时运行时可以统计哪些域名是经常被解析请求的,哪些域名是从来都没有被解析请求过的,学习域名解析的结果,对那些经常无法解析的域名引入类似的信誉机制。在***发生的时候,防护设备利用内建的高速cache根据平时学习到的域名解析的结果主动响应解析请求,这样减轻DNS服务器的负载。同时,根据统计的结果,过滤部分明显非法的解析请求(例如某个从来未被解析过的域名),对突然发起大量频度较低的域名解析请求的源IP地址进行带宽限制。通过采取这些方法,可以将***带来的影响降到最低点。

155036134.jpg