10月 122011
 

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<<- opcode: QUERY, status: NOERROR, id: 27936
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 7, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;org.                           IN      SOA

;; ANSWER SECTION:
org.                    888     IN      SOA     a0.org.afilias-nst.info. noc.afilias-nst.info. 2009625234 1800 900 604800 86400
org.                    888     IN      RRSIG   SOA 7 1 900 20110606012602 20110516002602 54497 org. RoVZ6I2R3SLp3zM/wJn5ZXyy1LbopZb4uIunAYvqVTSSLoGCgt5/ElIe 2e89yamyY6NvRJK7i/IJJGiTaGhio1auqP7l+JvApiHfIR1NPcAnQ2GW zga3CLVqg+JLX0EaUWngbzZuQHDr/XitLxiWAEHIWtrHOrXT2ziSYYWk vwY=

;; AUTHORITY SECTION:
org.                    85117   IN      NS      a0.org.afilias-nst.info.
org.                    85117   IN      NS      a2.org.afilias-nst.info.
org.                    85117   IN      NS      b0.org.afilias-nst.org.
org.                    85117   IN      NS      b2.org.afilias-nst.org.
org.                    85117   IN      NS      c0.org.afilias-nst.info.
org.                    85117   IN      NS      d0.org.afilias-nst.org.
org.                    85117   IN      RRSIG   NS 7 1 86400 20110530155751 20110509145751 54497 org. NX+b9BrLM9GtKGWPfrjFGyWHKEoB8ZYSAX8Y+yPlsQcOSnEnJIbg49ha Sgz/CFghOpMsUQLwXyue+hoZGchEwuU8eoEM1VhltAVMoSXN4Lba4taJ 5vGRGVcvTqgiRTCCWx19EdFwkV3Qk5oghM3opCf++xMzGfmdmKmmUrNj MTc=

;; Query time: 12 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon May 16 08:45:47 2011
;; MSG SIZE  rcvd: 536

在首部的标志(flags)中,你应该看到ad,表示dnssec设置成功。

  3 条评论 到 “使用DNSSec 防范DNS攻击 ——Unbound的安装和使用”

  1. DNSSEC不是更容易被用于放大攻击的吗?

    • 放大攻击是附属效应,更重要的是结果可信。坛子博主你不是已启用DNSSEC了嘛,我还没找到方法可以启用,Godaddy要额外购买premium才支持dnssec。

    • 我是CDN商提供的,所以容易一些。

回复土木坛子 取消回复

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>