利用Windows Server 2008 R2的DNSSEC保证DNS链接的讨论

DNSSEC的一个高层次概述和为什么保护DSN基础设施对整体架构是非常重要的。

前言

随着IPv6时代的到来,通过DNS名字访问计算机将变得比以前任何时候都更加重要。虽然这么多年来我们一直使用IPv4,利用IP网络电话号码,我们很容易记住IPv4数量巨大的地址。事实是,IPv6地址空间是如此巨大,六进制格式是如此复杂,这可能是只有一小部分非常专业的电脑迷才能记住这些在他们网络中的比电脑还要多的IP地址。毕竟,每一个IPv6地址有128位长,是一个IPv4地址的四倍。IPv6地址为因特网上越来越多的主机提供了更多的地址空间,但是它也使我们更难以记住各种地址。

问题:非安全性的DNS数据库

假定对DNS的信任度越来越高,我们就会需要一个方式来确保DNS数据库的入口总是准确的和安全的,同时对我们来说一个最有效的途径是确保我们的DNS数据库是安全的。知道最近,DNS还一直是一个相对的非安全系统,它还有一个向基层提供信任的假设。

由于这一非安全性特征,就有了很多高效益的实例,基本的信任就被打破了,同时DNS服务器就被劫持了,DNS就会有了欺骗性的记录,同时,DNS缓存也中毒了,这就导致用户相信他们正在与一个合法的网站取得联系,但是事实上,他们已经被引导到了一个包含恶意内容的或者是通过网站嫁接收集用户信息。网站嫁接和网络钓鱼是相似的,但是它不是在邮件里包含一个链接,而是当用户使用一个合法网站的正确的URL访问网站的时候,他们以为自己是安全的,其实DNS记录已经被改变并重新指向了一个错误的URL,也就是被嫁接的网站那里。

解决方法:Windows Server 2008 R2 DNSSEC

一个解决方案是,用户可以使用内网来确保DNS环境是使用Windows Server 2008 R2 DNSSEC的。DNSSEC是一个可以扩展的,同时可以提高DNS协议安全性的程序集合。这些扩展补充了源的权威性,数据整合,和对现有DNS的认证拒绝。该解决方案还增加了几个新的DNS记录,包括 DNSKEY, RRSIGN, NSEC和DS。

DNSSEC是如何工作的?

DNSSEC的作用是让所有的DNS数据库中的记录是被标记的。该方法类似其他的电子联络方式的数码签名,如:电子邮件的。当DNS客户端发出一个对DNS服务器的请求时,它就返回一个该记录的数码签名。拥有CA公钥的客户端就可以对一个DNS记录做标记了,这就可以解密哈希值(签名)和验证其反应。为了做到这一点,DNS客户端和服务器都配置了可以使用相同信任标志的配置。一个可信的标志是一个预先设置好的公钥,并与一个特定的DNS区域相关联。

DNS数据库的签署可以是基于文件的(没有动态目录集合)和动态目录集合区域,同时,可以复制到其他DNS服务器上,这对所涉及的区域是具有权威性的。

默认情况下,Windows 2008R2和Windows 7的DNS客户端是已经配置好了的,并作为非验证、安全意识、存根解析器。在这种情况下,DNS客户端就允许DNS服务器代替自己来履行验证职责,但是DNS客户端可以接受来自DNSSEC激活的DNS服务器返回的响应。DNS客户端本身事配置好的使用名称解决政策表(NRPT)来决定它如何和DNS服务器进行互动。例如,如果NRPT表明,DNS客户端应该保护DNS客户端和服务器的联系,那么,证书验证就会被强制在查询列表中。如果安全谈判失败了,它就是一个强烈的信号表明,在名称解决进程中有一个信任问题。同时,名称查询的尝试就会失败。默认情况下,当客户端对一个发出要求的应用程序返回到DNS查询响应的时候,它将知识返回了这个信息,如果DNS服务器已经验证了这些信息。

确保有效的结果

其实,这里有两个方法可以使用来确保DNS查询的结果是有效的。首先,用户需要确保DNS服务器  DNS客户端连接到你想要连接的DNS客户端的实际的DNS服务器,同时,它们不会攻击正在发送伪造响应的DNS服务器。IPsec是一个确保DNS服务器身份的有效的途径。DNSSEC使用SSL来确认链接是安全的。DNS服务器通过由可以信任的发行者签订的证书来进行自身的认证(比如那些私有的PKI)。

记住,如果存在IPsec强制服务器和强制的区域隔离,那就必须从政策上豁免TCP和UDP53端口。否则,IPsec政策将会被用来提到基于证书的权威认证。这将导致从DNS服务器得来的认证失效,同时,连接的安全性也将不能建立起来。

签名区

DNSSEC也是签名区,使用dnscmd.exe工具可是离线签名。这样就导致产生了签名区文件。签名区文件包括那个区的RRSIG、DNSKEY、DNS和NSEC相应记录。在这个区被签名后,它就必须使用dnscmd.exe工具和DNS管理控制台重新加载。

签名区的一个限制是动态更新是不可用的。Windows Server 2008 R2的DNSSEC只适用于静态区域。区域必须要每次都标记那些对区域做出的改变,在很多环境下,这可能会限制DNSSEC的功能。

信任锚的作用

在上文已经提到了信任锚。DNSKEY资源记录用来支持信任锚。一个验证DNS服务器必须包含至少一个信任锚。信任锚也只适用于那些已经被赋值的区域。如果DNS服务器可以承载了多个区域,那么就可以使用多个信任锚。

DNSSEC可以让DNS服务器在客户端查询中执行一个名称验证,只要信任锚在该区域内。客户端不需要让DNSSEC意识到验证发生了。所以,非DNSSEC的DNS客户端依然可以使用这个DNS服务器来解析局域网上的名称。

NSEC/NSEC3

NSEC和NSEC3是可以用来提供存在于DNS记录上的权威认证否认的方法。NSEC3是在原有NSEC详细规范上的一个改进,并且允许用户来避免“区域暴走”,这就允许攻击者恢复在DNS区域的所有名称。这是一个攻击者可以使用来重新联网的强有力的方法。这种能力在Windows Server 2008 R2上是不存在的,只有支持NSEC才可以被包括在内。

但是,对于NSEC3的支持是有限制的:

Windows Server 2008 R2可以包括NSEC的具有NSEC3代表的一个区域,但是,NSEC2的子区域没有在Windows DNS服务器。

Windows Server 2008 R2可以是一个非权威的配置一个信任锚的DNS服务器,该信任锚可以别标记为NSEC,同时它还有个NSEC3字区域。

在服务器是有NSEC意识的情况下,Windows7客户端可以使用非微软DNS服务器来处理DNS名称解决方案。

当一个区域被标记了NSEC的时候,用户可以在不需要对区域提供验证的情况下来配置名称解析政策表。当用户这么做的时候,DNS服务器将会执行验证,并对动态目录返回一个明确的响应。

如何部署DNSSEC

用户可以遵守以下方法来部署DNSSEC:

理解DNSSEC的关键概念;

把DNS服务器升级到Windows Server 2008R2;

回顾区域签名的要求,选择一个关键的过渡机制,同时确定电脑安全和DNSSEC保护区域的安全;

生成和备份用户签名区的关键字。确认DNS依然是工作状态,挺回答区域签名以后出现的所有问题;

把信任锚分发到所有非权威服务器上,这需要使用DNSSEC执行DNS认证;

为DNS服务器排至证书和IPsec策略;

配置NRPT设置,同时为客户端计算机部署IPsec策略。

总结

在这篇文章里,我们提供了一个对DNSSEC更高层次水平的概述,并讨论了保护DNS基础配置对整体架构是如此重要的原因。Windows Servers 2008 R2也推出了一些新功能,该功能可以帮助DNS基础配置比以前任何时候都更加安全,这种安全性的实现是通过联合DNS区域签名,SSL安全连接到具有安全性保障的DNS服务器上,同时IPsec认证和加密来实现的。