DNSSEC的背景和目的
域名系统(Domain Name System,DNS)是一些“太单纯、太幼稚”的互联网先驱者设计的,它像互联网的其他协议或系统一样,在一个可信的、纯净的环境里可以运行得很好。但是今天的互联网环境异常复杂,充斥着各种欺诈、攻击,DNS协议的脆弱性也就浮出水面。对DNS的攻击可能导致互联网大面积的瘫痪,这种事件在国内外都屡见不鲜。
DNS作为互联网最重要的基础设施之一,它的安全问题一直被互联网研究和工程领域广为关注,但是有一种普遍存在的攻击却始终没有解决,即DNS的欺骗和缓存污染问题。DNS安全扩展(DNS Security Extension, 即DNSSEC)主要是为了解决这一问题而提出的。因此,在介绍DNSSEC的原理之前有必要简单介绍DNS欺骗和缓存污染攻击的原理。
DNS欺骗攻击和缓存污染
用户在用域名访问某一个网站时,用户的计算机一般会通过一个域名解析服务器(Resolver Server,也称递归服务器(Recursive Server))把域名转换成IP地址。解析服务器一般需要查询根域名服务器(root)、顶级域名服务器(TLD)、 权威域名服务器(Authoritative Server),通过递归查询的方式最终获得目标服务器的IP 地址,然后交给用户的计算机(如图1所示)。
图1 DNS域名欺骗和缓存污染攻击
在上述任何一个请求/应答的过程中,攻击者都可以假冒应答方(根、顶级域、权威域或解析服务器)给请求方发送一个伪造的响应,其中包含一个错误的IP地址。发送请求的用户计算机或者解析服务器很天真地接受了伪造的应答,导致用户无法访问正常网站,甚至可以把IP重定向到一个伪造的网站上去。由于正常的DNS解析使用UDP协议而不是TCP协议,伪造DNS的响应报文比较容易。如果攻击者可以监听上述过程中的任何一个通信链路,这种攻击就易如反掌。
更加糟糕的是,由于DNS缓存(Cache)的作用,这种错误的记录可以存在相当一段时间(比如几个小时甚至几天),期间所有使用该域名解析服务器的用户都无法访问真正的服务器。
DNSSEC的目标、历史和意义
上述攻击能够成功的原因是DNS 解析的请求者无法验证它所收到应答信息的真实性。DNSSEC给解析服务器提供了防止受骗的武器,即一种可以验证应答信息真实性和完整性的机制。利用密码技术,域名解析服务器可以验证它所收到的应答(包括域名不存在的应答)是否来自于真实的服务器,或者是否在传输过程中被篡改过。
尽管从原理上来说DNSSEC并不复杂,但是从1997年第一个有关DNSSEC的标准RFC 2065发布至今已经十多年了,直到最近一两年才有了一定的进展。1999年IETF对DNSSEC标准进行了修订,并推出RFC2535,但这次修订很快被证明是失败的。直到2005年,一个可用的DNSSEC标准才制定出来RFC 4033-4035,目前主流域名服务软件(如BIND )实现的也是这一版本。2008年,IETF又发布了一个NSEC3 RFC5155标准,以提高DNSSEC隐私保护能力。 随着DNSSEC的推广,也许还会有一些新的问题和新的修订,DNSSEC 标准仍在发展过程中。
尽管DNSSEC的目标仅限于此(即不保护DNS信息的保密性和服务的可用性),但是DNSSEC的成功部署对互联网的安全还有其他好处,比如提高电子邮件系统的安全性,甚至可以把DNS作为一个公钥基础设施(PKI)。
本文所介绍的DNSSEC工作原理基于RFC 4033-4035,关于DNS工作原理、配置和数字签名技术超出了本文的范围,感兴趣的读者可以参考。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。