DNS安全扩展(DNSSEC),是由IETF提供的一系列DNS安全认证的机制(可参考RFC2535)。引入DNS SEC技术是为了防范在 DNS 中发现的一些无法避免的漏洞,攻击者可以利用这些漏洞劫持这一使用名称在 互联网 上搜寻某个人或某个站点的过程。这种攻击的目的是取得对会话的控制以实施某种操作,例如使用户进入劫持者自己设立的欺骗性网站,以便收集用户的帐户和密码。
本文描述的如何在你的Linux(Ubuntu)和Mac系统上启用DNSSec支持,防止域名劫持。通过安装和配置开源 DNS服务软件unbound,就可以在本地启用DNSSec的支持。
安装
Ubuntu:
sudo apt-get install unbound
MacOS
sudo port install unbound
sudo port load unbound
配置DNSSec
下载可信任的Root anchor:
wget https://data.iana.org/root-anchors/root-anchors.xml
root-anchors.xml:
.
19036
8
2
49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
用root-anchors.xml中的值掉,替换下面一行中的, , , 和 内容(因为root-anchors的内容可能有变化,应以root-anchors.xml文件的内容为准):
. IN DS
替换后的结果,大致象这样:
. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
将该行保存到文件:/var/lib/unbound/root.key。如果是Mac 那么应该是/opt/local/var/lib/unbound/root.key
修改文件的拥有者为 unbound (记住Mac Ports的存放位置在/opt/local/):
chown unbound:unbound /var/lib/unbound/root.key
ls -l /var/lib/unbound/root.key
-rw-r--r-- 1 unbound unbound 759 May 12 12:12 /var/lib/unbound/root.key
创建或修改unbound配置文件,添加如下的配置项:
server:
auto-trust-anchor-file: “/var/lib/unbound/root.key”
重新启动unbound服务:
Linux
sudo service unbound stop
sudo service unbound start
Mac:
sudo lauchctl stop unbound
sudo lauchctl start unbound
将你的机器的DNS解析指向本地刚架好的DNS服务:
修改:/etc/resolv.conf
nameserver 127.0.0.1
如果你用dhcp,你也许还要看看这个文件:/etc/dhcp/dhclient.conf.
测试
; <<>> DiG 9.6.0-APPLE-P2 <<>> org. SOA +dnssec ;; global options: +cmd ;; Got answer: ;; ->>HEADER<在首部的标志(flags)中,你应该看到ad,表示dnssec设置成功。