海浪家园

使用DNSSec 防范DNS攻击 ——Unbound的安装和使用

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设置成功。

退出移动版