用BIND DNS服务器中的IP地址限制区域传送

现在黑客可以利用多种技术来攻击DNS服务器,如缓存投毒利用虚假IP地址替换域名系统表中的地址,进而制造破坏。此外还有注册劫持,DNS欺骗等。

防御这些攻击的最简单方法之一即是通过定义ACL(访问控制列表)来限制在域名服务器之间的区域传送。区域传送(Zone Transfer)是在多个DNS服务器之间复制区域数据库文件的过程,它主要通过拷贝过程完成。笔者看到许多管理员允许BIND在其网络之外进行大量的区域传送。笔者认为没有必要这样做,这样只会给攻击者造成机会。

如何用IP地址限制区域传送?

用户需要在其/etc/named.conf文件中定义ACL(访问控制列表)。比如,用户想允许102.169.191.10和 125.111.124.6这两个地址进行区域传送。

 

以下是引用片段:
# vi named.conf

 

下面是域fundcraft.com的示例:

 

以下是引用片段:
acl trusted-servers {
102.169.191.10; //ns2
125.111.124.6; //ns3
};
zone fundcraft.com {
type master;
file “zones/fundcraft.com”;
allow-transfer { trusted-servers; };
};

下一步便是增加区域fundcraft.com,在这里需要注意用户必须使用每个区域配置中的主机集合实施阻止;对于每一个区域/域来说,重新启动即是:

 

 

以下是引用片段:
# /etc/init.d/named restart

 

如何测试区域传送是否正常工作?

用户可以采用UNIX 的DNS工具命令,如nslookup,host,dig等。例如,对于我们上面举的例子来说,可以采用host命令来请求区域传送:

 

以下是引用片段:
$ host -T axfr fundcraft.com

 

其输出结果为:

 

以下是引用片段:
Connection to 74.86.49.133#53(74.86.49.133) for axfr failed: connection refused.

 

签名处理程序

DNS一般工作在问答模式。如果一个客户端需要来自DNS的信息,就向服务器发送信息,服务器反回应答。现在服务器能够先检查问题,看一下其IP地址,并由此决定是否回答其问题。单纯使用源IP地址的授权并不安全。签名处理程序,也常简称为TSIG,它增加了加密签名,以此作为一个验证DNS会话的方法。它采用共享密钥在通信双方之间建立信任。

TSIG的作用就是对那些宣称来自某服务器的DNS信息验证其真实性。笔者常将其用于验证首选和备用DNS服务器之间的区域传送。我们推荐采用签名处理程序,用它来授权区域传送。如此一来要进行IP地址的DNS欺骗就很困难了。