http://zj1991.blog.51cto.com/1847949/1609068
目前好多做DNS解析的服务,都采用了bind开源软件。好处就不多说了。但是在安全方面是个软肋,遭受DDOS流量攻击和放大攻击是常有的事情。在14年12月isc发布了最新的bind9.10-p1稳定版,同时对rate-limit默认支持(之前bind9.9的扩展支持版本,同样支持处于开发功能,需要在编译安装的时候./configure --enable-rrl开启rate-limit功能)。rate-limit可以有效防止放大攻击和DDOS流量攻击。
DDOS流量攻击就不多说了,关于放大攻击原理,大家可参考博文:
http://blog.sina.com.cn/s/blog_90bb1f200101iazl.html
http://blog.csdn.net/yatere/article/details/6418888
https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/
isc官方对放大攻击的解释:
https://kb.isc.org/article/AA-00897/11/What-is-a-DNS-Amplification-Attack.html
了解了DNS放大攻击后,我们来看下bind最新功能rate-limit的使用方法:
isc官方给出的说明:
https://kb.isc.org/article/AA-00994/189/Using-the-Response-Rate-Limiting-Feature-in-BIND-9.9-Subscription-Version.html
在我们的named.conf配置文件中,添加方法可参考如下配置方式:
1
2
3
4
5
6
7
8
9
10
11
12
options{
.......
rate-limit {
ipv4-prefix-length 32;
window 10;
responses-per-second 20;
errors-per-second 5;
nxdomains-per-second 5;
slip 2;
};
..........
};
关于参数具体使用说明情况,大家可参考bind手册Page53-P59的说明情况。
同样,在此之前,或者不愿升级bind的,可通过iptables防止DDOS攻击和放大攻击
iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP
效果也不错。大家可有选择性的去使用。
雖然這些查詢被deny,但是持續不斷,真如殭屍一般,對系統造成不小的壓力,所以,根據 之前log的特徵值,以iptables進行封檔 iptables -t raw -A PREROUTING -p udp --dport 53 -m string --algo bm --hex-string "|0000ff0001|" -j DROP
http://kecheng.baidu.com/view/723365f2bceb19e8b9f6ba5f.html