您现在的位置是:首页 > IT基础架构 > 网络与安全 >
使用Windows Server2008 R2 DNSSEC保护DNS连接
2010-05-19 17:27:00作者:绿茶来源:
摘要使用Windows Server2008 R2 DNSSEC保护DNS连接...
随着即将到来的Ipv6混乱时代,通过DNS名称访问计算机将比以往任何时候都更加重要。在过去的Ipv4时代,大家都发现运用IP网号点分四组机制能够很容易记住Ipv4地址。然而,Ipv6地址空间如此之大,十六进制格式如此之复杂,每个Ipv6地址都有128位,这是Ipv4地址长度的四倍,常人完全不可能记住这么长的IP地址。虽然更大的地址空间是为了满足不断增加的计算机的需求,但这也让我们更难以记住地址。
问题:DNS数据库的不安全性
这样造成的结果肯定是我们将越来越依赖于DNS,因此我们需要找到一种方法来确保DNS数据库内的数据总是准确而可靠,而其中最有效的途径就是确保DNS数据库的安全性。众所周知,DNS一直属于相对不安全的系统。
由于这种不安全本质,DNS很容易成为攻击目标,DNS服务器曾遭遇过劫持攻击(将DNS域名解析重定向至流氓DNS服务器)、DNS记录欺骗以及DNS缓存中毒,让用户相信他们正在连接到合法网站,而实际上是连接到包含恶意内容的网站或者网址嫁接(pharming)获取用户信息。网址嫁接与网络钓鱼攻击类似,二者区别在于,网络钓鱼攻击是通过诱使用户点击电子邮件中的链接来登录到恶意网址,而网址嫁接则更加高明,用户在浏览器输入合法网站的正确网址,然而被更改的DNS记录则会将合法网址重定向至假的网络嫁接网址。
解决方案: Windows Server 2008 R2 DNSSEC
你可以在局域网使用Windows Server 2008 R2 DNSSEC来保护DNS环境,DNSSEC是能够提高DNS协议安全性的扩展集,这些扩展向DNS添加初始权限、数据完整性和认证否定存在,该解决方案还可以向DNS添加几条新记录,包括DNSKEY、RRSIGN、NSEC和 DS。
DNSSEC如何运作
DNSSEC的作用在于可以对DNS数据库中的所有数据都做标记,采用的方法与其他数据签名电子通信类似,例如电子邮件。当DNS客户端向DNS服务器发出一个请求时,DNS服务器会返回请求数据的数字签名,然后拥有DNS数据签名CA的公钥的客户端就能够解密哈希数值(签名)然后验证响应。为了实现这个过程,DNS客户端和服务器都要配置为使用相同的信任锚(trust anchor),信任锚是与特定DNS区域相关的预先设定的公钥。
DNS数据库签名适用于基于文件(非Active Directory集成)和Active Directory集成区域,签名复制则可以用于这些区域授权的其他DNS服务器。
Windows 2008 R2 和Windows 7 DNS客户端都默认配置为存根解析器。这种情况下,DNS客户端将允许DNS服务器代表客户端执行验证,但是DNS客户端能够接收从DNSSEC启用的DNS服务器返回的DNSSEC响应。DNS客户端本身被配置为使用名称解析策略表(NRPT)来确定应该如何与DNS联系。例如,如果NRPT指明DNS客户端需要确保DNS客户端与服务器间连接的安全,那么就可以对请求执行证书验证。如果安全验证失败,就说明域名解析过程中存在信任问题,并且域名查询请求也将失败。在默认情况下,当客户端向发出请求的程序返回DNS查询响应时,只有当DNS服务器验证信息后才会返回该信息。
确保结果的有效性
主要有两种方法来确保DNS请求结果的有效性。首先,你需要确保DNS客户端连接的DNS服务器确实是DNS客户端应当连接的DNS服务器,而不是攻击者部署的DNS服务器。Ipsec是用于验证DNS服务器的有效方式。DNSSEC使用SSL来确保连接的安全性。DNS服务器通过可信任方(例如私人PKI)签名的证书来验证其本身。
请记住,如果你部署了执行Ipsec的服务器和域隔离,那么你必须将TCP和UDP端口53从政策中分离。否则,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服务器来解析局域网中的名称。
NSEC和NSEC3
NSEC和NSEC3是可以用于为DNS记录提供认证否定存在的有效方法,NSEC3是原来NSEC的升级版,允许我们防止“区域走动”,即防止攻击者重新获取DNS区域的所有名称。这是攻击者用于侦察网络的有力工具,这种功能在Windows Server 2008 R2中不支持,仅支持NSEC。
以下是对NSEC3的有限支持:
Windows Server 2008 R2可以承载有NSEC3代表的NSEC区域,但NSEC3子区域并不在windows DNS服务器上。
Windows Server 2008 R2可以作为非授权DNS服务器,为NSEC签名并有NSEC3子区的区域配置了信任锚。
Windows 7可以用于非微软DNS服务器(支持NSEC3)来进行域名解析
当某区域被NSEC签名时,你可以配置NRPT不对该区进行验证。这样做的话,DNS服务器将不会执行验证,并会直接返回数据。
要部署DNSSEC的,需要按照以下步骤进行:
了解DNSSEC的重要概念
将DNS服务器升级到Windows Server 2008 R2
审查区域签名要求,选择密钥滚动机制,并确定计算机和DNSSEC保护区域的安全性
生成和备份为区域签名的密钥,确保DNS仍在运行,并在签名区域后回答查询请求
将信任锚分发到使用DNSSEC执行DNS验证的非授权服务器
为DNS服务器部署证书和Ipsec政策
配置NRPT设置,并向客户端计算机部署Ipsec政策
总结
在本文中,我们探讨了DNSSEC和保护DNS基础设施对企业的重要性。Windows Server 2008 R2中存在的很多新功能可以帮助企业保护DNS基础设施的安全,这主要通过使用签名DNS区域、SSL安全连接到可信DNS服务器以及Ipsec验证和加密来实现。
(本文不涉密)
责任编辑: