DNS区域传送(DNS zone transfer)指的是一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作只在网络里真的有备用域名DNS服务器时才有必要用到,但许多DNS服务器却被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息,所以说允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。
区域传送漏洞的危害:黑客可以快速的判定出某个特定zone的所有主机,收集域信息,选择攻击目标,找出未使用的IP地址,黑客可以绕过基于网络的访问控制。
在Linux下检查目标站点的区域传送漏洞
dig axfr @ns1.myhostadmin.net linux520.com @SOA 的DNS域名要查看的域名称
在Windows下检测目标站点的区域传送漏洞
这里set type=soa和set type=ns都可以
通过linux系统和windows系统都可以检测出该站点使用的DNS存在区域传送漏洞,通过执行命令我们可以清楚的看到整个域下的域名解析情况,从而将整个域的信息暴露无遗(如图A记录和MX记录)。
解决方案:区域传送是DNS常用的功能,区域传送的漏洞也不是没有办法解决的,严格限制允许区域传送的主机即可,例如一个主DNS服务器应该只允许它的从DNS服务器执行区域传送的功能。
针对于bind软件,可以通过allowe-transfer指令来控制,可以作为global选项或者zone选项的一个参数,我们可以使用地址列表如下
1 allowe-transfer {192.168.1.1; 172.24.123.253;};
但是使用基于地址的访问控制列表可能会被某些“意志坚定”黑客绕过,呵呵。最好的方法是使用TSIG key来严格定义区域传送的关系,如下
1 allowe-transfer {key "dns1-slave1"; key "dns1-slave2";};