12. 安全考虑事项 (Security Considerations)
本文档介绍 DNS 安全扩展, 并描述包含新安全记录和 DNS 协议修改的文档集. 这些扩展通过对资源记录集施加数字签名来提供数据来源认证和数据完整性. 本节讨论这些扩展的限制.
为了使安全感知解析器能够验证 DNS 响应, 从受信任起点到包含响应数据的区域之间路径上的所有区域都必须已签名, 且解析过程中涉及的所有名称服务器和解析器都必须符合本文档集定义的安全感知要求. 安全感知解析器无法验证源自未签名区域的响应, 源自未由安全感知名称服务器提供服务区域的响应, 也无法验证其只能通过非安全感知递归名称服务器获得的任何 DNS 数据. 如果认证链中存在断裂, 导致安全感知解析器无法获取并验证其所需的认证密钥, 则安全感知解析器无法验证受影响的 DNS 数据.
本文档简要讨论了为 DNS 查询增加安全性的其他方法, 例如使用由 IPsec 保护的信道, 或使用 TSIG ([RFC2845]) 或 SIG(0) ([RFC2931]) 等 DNS 事务认证机制. 但事务安全本身并不是 DNSSEC 的组成部分.
按定义, 非验证安全感知存根解析器不会自行执行 DNSSEC 签名验证. 因此, 它既容易受到代表其执行这些检查的安全感知递归名称服务器所遭受或发起的攻击影响, 也容易受到其与这些安全感知递归名称服务器之间通信所遭受的攻击影响. 非验证安全感知存根解析器应该使用某种形式的信道安全来防御后一种威胁. 针对前一种威胁, 唯一已知的防御方法是让安全感知存根解析器自行执行签名验证; 到那时, 按定义它也就不再是非验证安全感知存根解析器.
DNSSEC 不防护拒绝服务攻击. DNSSEC 使 DNS 面临一类新的拒绝服务攻击, 这类攻击基于针对安全感知解析器和安全感知名称服务器的密码操作, 因为攻击者可以尝试利用 DNSSEC 机制消耗受害者资源. 此类攻击至少有两种形式. 攻击者可以通过篡改响应消息中的 RRSIG RR 或构造不必要的复杂签名链, 消耗安全感知解析器签名验证代码中的资源. 攻击者也可以向支持 DNS 动态更新的安全感知名称服务器发送连续更新消息, 迫使该安全感知名称服务器比原本必要的频率更频繁地重新签署区域中的某些 RRset, 从而消耗其资源.
由于有意的设计选择, DNSSEC 不提供机密性.
DNSSEC 使敌对方能够沿 NSEC 链枚举区域中的所有名称. NSEC RR 沿区域内所有名称的规范排序, 从一个已有名称链接到另一个已有名称, 从而断言哪些名称在区域中不存在. 因此, 攻击者可以按顺序查询这些 NSEC RR, 以获得区域中的所有名称. 虽然这并不是对 DNS 本身的攻击, 但攻击者可能通过枚举区域内容来绘制网络主机或其他资源的映射.
DNSSEC 给 DNS 引入了显著的额外复杂性, 因而也为实现缺陷和区域误配置引入了许多新的机会. 特别是, 在解析器中启用 DNSSEC 签名验证可能因 DNSSEC 配置错误或缺陷, 导致整个合法区域实际上变得不可达.
DNSSEC 不防护对未签名区域数据的篡改. 区域切点处的非权威数据 (父区域中的 glue 和 NS RR) 不会被签名. 这在验证认证链时不会造成问题, 但它确实意味着非权威数据本身在区域传送操作期间容易被篡改. 因此, 虽然 DNSSEC 可以为 RRset 提供数据来源认证和数据完整性, 但无法为整个区域提供这些保障; 必须使用其他机制 (例如 TSIG, SIG(0) 或 IPsec) 来保护区域传送操作.
更多安全考虑事项请参见 [RFC4034] 和 [RFC4035].