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:
用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设置成功。
DNSSEC不是更容易被用于放大攻击的吗?
放大攻击是附属效应,更重要的是结果可信。坛子博主你不是已启用DNSSEC了嘛,我还没找到方法可以启用,Godaddy要额外购买premium才支持dnssec。
我是CDN商提供的,所以容易一些。