|
|
目前对DNS服务器的攻击基本都是假冒IP的潮水攻击。普通情况下,DNS查询是UDP协议,无需像TCP那样的三次握手过程,因此DNS服务器无法识别请求包里的源IP是否真实有效。如果大量的假冒IP进行攻击,就造成名字服务器要么计算资源耗尽,要么带宽耗尽,从而拒绝服务。
* A \0 J/ Q; m% X" X- e由于客户端是假冒IP,因此DNS服务器端的安全策略,例如DNS RRL、或者iptables,都作用不大。唯一有效的方式是从源头制止这种攻击,即各ISP、IDC都要严格执行BCP 38,拒绝非本网络的源IP对外发起请求。+ ]/ \, n6 e. V6 _
3 F# B) S" O+ {6 t9 d6 k$ u3 F除了直接攻击DNS服务器外,还有一种情况是DNS服务器被利用来攻击别人。如果攻击者想攻击某个站点,他假冒这个站点的IP,对互联网上开放的DNS服务器发起查询,DNS服务器会将查询应答包返回给站点IP。由于开放的DNS服务器数量众多(比如运营商的递归服务器、各个公司自己的权威服务器),假如攻击者同时往1000台DNS服务器发起查询,那么1000个服务器的返回包到达后,巨大的流量直接把目标站点干掉。示意图请见:
( w( A. q9 s- ?1 t; H' b% R) {( g2 c: R) g/ x; Q
这种情况下,可以利用RRL、iptables来保护自己的名字服务器免被攻击者利用来攻击别人。
+ l- w# ~, z; v# i8 l2 ~一个简单的iptables规则可以如下:* {, t3 E% y! f: f+ K
iptables -I INPUT -p udp –dport 53 -m state –state NEW -m recent –set
O. c* N: m7 P! ^) Fiptables -I INPUT -p udp –dport 53 -m state –state NEW -m recent –update –seconds 60 –hitcount 1000 -j DROP0 H7 D* Y( ~, S, V1 w
上述规则的作用是,如果在1分钟内对DNS的查询频率超过1000次,就拦截掉该源IP。
$ j9 i6 N1 L, j. u, K$ _% s% L- c+ V% M: E2 z, J
原文:http://www.nsbeta.info/archives/389 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|