DNSSEC是为解决DNS欺骗和缓存污染而设计的一种安全机制。本文概要介绍DNSSEC在BIND上的配置,最后介绍国际上的部署情况和它可能对互联网安全机制的影响。
DNSSEC的配置
尽管DNSSEC 的工作原理看起来让人气馁,实际的配置操作却并不复杂。本节以BIND 9为例介绍DNSSEC的基本配置。尽管BIND 9.3以上就开始支持DNSSEC,仍然建议使用当前最高版本的BIND(当前最新的版本是9.8)。
配置或部署DNSSEC有两种场景:
(1 )配置安全的域名解析服务器(Resolver),该服务器可以保护使用它的用户,防止被DNS 欺骗攻击。这里只涉及数字签名的验证工作。
(2)配置安全的权威域名服务器(Name Server),对权威域的资源记录进行签名,保护服务器不被域名欺骗攻击。
配置安全解析服务器
激活DNSSEC
首先,在BIND的配置文件(一般是/etc/named.conf)中打开DNSSEC选项,比如:
options {
directory "/var/named";
dnssec-validation yes;
….
};
配置Trust anchor
其次,要给解析服务器配置可信锚(Trust Anchors),也就是你所信任的权威域的DNSKEY。理想情况下我们可以配置一个根的密钥就够了,但是目前DNSSEC还没有完全部署的情况下,我们需要配置很多安全岛(Secure Island)的密钥,可以从很多公开的网站下载这些可信域的DNSKEY文件,包括:
(1)Root Zone DNSSEC Trust Anchors:https://www.iana.org/dnssec/。2010年7月部署实施,如果DNSSEC全部部署成功,这一个公开密钥就足够了。
(2)The UCLA secspider : https://secspider.cs.ucla.edu,由美国加州大学洛杉矶分校(UCLA)张丽霞教授的实验室维护。
(3)The IKS Jena TAR:https://www.iksjena.de/leistungen/dnssec.php
这些文件大概是这样的格式:
trusted-keys {
"test.net." 256 35 "AQPzzTWMz8qS…3mbz7Fh
……
….fHm9bHzMG1UBYtEIQ==";
"193.in-addr.arpa." 257 3 5 "AwEAAc2Rn….HlCKscYl
kf2kOcq9xCmZv….XXPN8E=";
};
假设上述trust anchors的文件为/var/named/trust-anchors.conf,则在/etc/named.conf中增加下面一行:
include "/var/named/se-c-trust-anchors.conf";
测试
在完成上述配置修改之后重新启动named进程,然后选择一个trust anchor文件中有的区或者它下一级的域名,在解析服务器上用dig测试一下,例如:
#dig @127.0.0.1 +dnssec test.net. SOA
如果配置正确,应该返回test.net的SOA记录和相应的RRSIG记录,另外返回的头部中应该包含A D 标志位,表示DNSSEC相关的数字签名验证是正确的,类似下面的样子:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
1397
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 2,
ADDITIONAL: 3
如果没有得到期望的结果,需要查看DNS的日志来找出问题。BIND为DNSSEC相关的事件增加了一个dnssec类别,可以在/etc/named.conf配置日志如下:
logging {
channel dnssec_log {
file "log/dnssec" size 20m; // a DNSSEC log channel 20m;
print-time yes; // timestamp the entries
print-category yes; // add category name to entries
print-severity yes; // add severity level to entries
severity debug 3; // print debug message <= 3 t
};
};
category dnssec { dnssec_log; };
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。