目前好多做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防止DNS放大***和流量***_第1张图片
正常DNS递归查询

使用bind新功能rate-limit防止DNS放大***和流量***_第2张图片


了解了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

使用bind新功能rate-limit防止DNS放大***和流量***_第3张图片

在我们的named.conf配置文件中,添加方法可参考如下配置方式:

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

效果也不错。大家可有选择性的去使用。