全面提升BIND DNS服务器安全(下)
7. 请求限制
如果任何人都可以对DNS服务器发出请求,那么这是不能接受的。限制DNS服务器的服务范围很重要,可以把许多入侵者据之门外。修改BIND的配置文件:/etc/named.conf加入以下内容:
![]() |
这样所有的用户都可以访问yourdomain.com的DNS服务器,但是只有168.192.1.0网段的主机用户可以请求DNS服务器的任意服务。
另外也不要允许其他网段的主机进行递归询问,在上面文件最后加入一行即可:
![]() |
8. 其他強化措施:
(1)使用存取控制清单 (Access Control Lists),主要目的在于产生地址配对清单。
语法:acl “name” { address_match_list };
address_match_list:地址匹对清单。
例子:acl “mis”{192.168.200.15,192.168.143.192/26};
(2)使用Forwarders代询服务器机制,它将自己无法解析的查询转送到某特定的服务器。
语法:forwarders ip_address_liest
例子:以下是建议的 forwarders 设定(在/etc/named.conf中)
orwarders { // 指定提供查询的上层 DNS。
www.twnic.net.tw ; // 到上层 (twnic) 的 DNS 查询。
};
需注意的是通常我们指定的是到本身上一层 dns,但也可能因 dns 缓存有误而转送到错误的服务器上。
(3)使用allow-transfer:目的在于只允许授权的网域主机能更新、读取 DNS 辖区内的记录。
语法:allow-transfer { <address_match_list> };
例子:address_match_list:允许进行 DNS 辖区数据传输主机的 IP 列表。
(4)allow-update:目的在于指定能向本 dns 服务器提交动态 dns 更新的主机
语法:allow-update { <address_match_list> };
例子:address_match_list:允许能向本 DNS 服务器提交动态 DNS 更新的主机 IP 列表
9. 使用DNSSEC
DNS欺骗spoofing 对目前网络应用, 最大的冲击在于 冒名者借着提供假的网域名称与网址的对照信息, 可以将不知情用户的网页联机, 导引到错误的网站, 原本属于用户的电子邮件也可能因而遗失, 甚而进一步空开成为阻断服务的攻击。所幸, 目前较新的 BIND 版本, 针对这一类问题, 已经有加入许多改进的方法, 不过真正的解决方案, 则有赖封包认证机制的建立与推动。DNSSEC就是试图解决这一类问题的全新机制, BIND9 已经完整加以设计并完成。DNSSEC引入两个全新的资源记录类型:KEY和SIG,允许客户端和域名服务器对任何DNS数据的来源进行密码验证。
DNSSEC主要依靠公钥技术对于包含在DNS中的信息创建密码签名。密码签名通过计算出一个密码hash数来提供DNS中数据的完整性,并将该hash 数封装进行保护。私/公钥对中的私钥用来封装hash数,然后可以用公钥把hash数译出来。如果这个译出的hash值匹配接收者刚刚计算出来的hash树,那么表明数据是完整的。不管译出来的hash数和计算出来的hash数是否匹配,对于密码签名这种认证方式都是绝对正确的,因为公钥仅仅用于解密合法的hash数,所以只有拥有私钥的拥有者可以加密这些信息。
