一、什么是拒绝服务攻击
即攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。
二、DNS拒绝服务攻击常见手段
1、利用DNS软件版本漏洞攻击
如在BIND 9版本(版本9.2.0以前的 9系列)如果有人向运行BIND的设备发送特定的DNS数据包请求,BIND就会自动关闭。攻击者只能使BIND关闭,而无法在服务器上执行任意命令。
2、DDOS 攻击,
概述:
DNS反射放大攻击是一种通过向开放的DNS服务发送伪造源发地址的查询请求来将应答流量导向攻击目标的一种拒绝服务攻击手段(原理参见图1)。这种攻击利用DNS服务器来对被攻击者造成拒绝服务攻击。
图1
解决办法:
为避免您的DNS服务器被用来进行DNS反射攻击,建议您做首先确认自己的DNS服务的类型及用途:
a) 自己架设的权威查询服务器(主要用于解析*.imoocc.com这类学校二级域名的)
b) 自己架设的递归查询服务器(主要给自己底下的用户提供递归DNS查询服务的,功能类似166.111.8.28)
c) 设备或是服务自带的DNS,不是自己假设的(如路由器自带的等)
根据服务不同的功能,请参考如下操作:
a) 用于提供权威解析的DNS服务,请关闭该服务器上的递归查询功能(操作方式参见附录)
b) 用于递归查询服务的DNS服务器,请限制递归查询服务的使用范围。(操作方式参见附录)
c) 对于设备或系统自带的DNS服务,请先确认该DNS服务是否是必须,如果不是必须请关闭该功能。如果是必须提供的服务,请将该服务的服务范围进行限制(如内网或是特定的网段)。
附录:
Linux+BIND:
1、关闭DNS递归查询服务
通过修改BIND的配置文件可以实现关闭DNS递归查询的功能,默认配置文件路径为/etc/named.conf,有两种可能的方法:
(1)在配置文件的options配置中,将recursion选项设为no(默认为yes)
(2)在配置文件的options配置中,将recursion选项设为yes,在view配置中,将allow-recursion设为{none;}
第一种设置方法是将递归查询改为迭代查询,第二种方法可以完全避免应答,但是仅在BIND9以上版本中拥有该选项。
无论采取何种方法,修改配置后应当重新加载并清除缓存(reload & flush)
2、限制对域外用户提供DNS解析服务
通过修改BIND的配置文件可以限制提供DNS解析服务的范围,默认配置文件路径为/etc/named.conf,在options选项中修改allow-query语句:
allow-query {166.111.0.0/16;59.66.0.0/16;}
则可以限制仅有166.111以及59.66网段可以访问,设置其他网段类似。
3、利用防火墙等对ANY Request进行过滤
如果是在linux系统中安装的DNS服务软件,则可以通过iptables对ANY Request请求进行过滤:
iptables -A INPUT -p udp --dport 53 -m string --hex-string "|00 00 ff 00 01|" --to 255 --algo bm -m comment --comment "IN ANY?" -j DROP
iptables -A FORWARD -p udp --dport 53 -m string --hex-string "|00 00 ff 00 01|" --to 255 --algo bm -m comment --comment "IN ANY?" -j DROP
此方法需要对数据包进行深度过滤,对服务性能影响较大,如果能够在DNS配置中实现DNS ANY Request防护,不建议使用第三种方法。