Skip to main content

12. Security Considerations (安全考虑事项)

本文档介绍了 DNS 安全扩展并描述了包含新安全记录和 DNS 协议修改的文档集。这些扩展使用资源记录集上的数字签名提供数据源认证和数据完整性。本节讨论这些扩展的局限性。

为了让安全感知解析器验证 DNS 响应, 从受信任起点到包含响应区域的区域的路径上的所有区域都必须签名, 并且解析过程中涉及的所有名称服务器和解析器都必须是本文档集中定义的安全感知的。安全感知解析器无法验证来自未签名区域、来自不由安全感知名称服务器提供服务的区域或解析器只能通过不安全感知的递归名称服务器获取的任何 DNS 数据的响应。如果认证链中存在中断, 使得安全感知解析器无法获取和验证其所需的认证密钥, 则安全感知解析器无法验证受影响的 DNS 数据。

本文档简要讨论了为 DNS 查询添加安全性的其他方法, 例如使用由 IPsec 保护的通道或使用 DNS 事务认证机制 (如 TSIG ([RFC2845]) 或 SIG(0) ([RFC2931])), 但事务安全本身不是 DNSSEC 的一部分。

根据定义, 非验证安全感知存根解析器不自己执行 DNSSEC 签名验证, 因此既容易受到代表其执行这些检查的安全感知递归名称服务器的攻击 (以及来自它们的攻击), 也容易受到其与这些安全感知递归名称服务器之间的通信的攻击。非验证安全感知存根解析器应使用某种形式的通道安全来防御后一种威胁。针对前一种威胁的唯一已知防御措施是让安全感知存根解析器执行自己的签名验证, 此时, 根据定义, 它将不再是非验证安全感知存根解析器。

DNSSEC 不能防范拒绝服务攻击。DNSSEC 使 DNS 容易受到基于针对安全感知解析器和安全感知名称服务器的加密操作的新类别拒绝服务攻击, 因为攻击者可以尝试使用 DNSSEC 机制消耗受害者的资源。这类攻击至少采取两种形式。攻击者可能能够通过篡改响应消息中的 RRSIG RR 或构造不必要的复杂签名链来消耗安全感知解析器的签名验证代码中的资源。攻击者还可能能够通过发送更新消息流来消耗支持 DNS 动态更新的安全感知名称服务器中的资源, 这些更新消息迫使安全感知名称服务器比原本必要的频率更频繁地重新签名区域中的某些 RRset。

由于故意的设计选择, DNSSEC 不提供机密性。

DNSSEC 引入了敌对方通过跟随 NSEC 链枚举区域中所有名称的能力。NSEC RR 通过沿着区域内所有名称的规范排序从现有名称链接到现有名称来断言区域中哪些名称不存在。因此, 攻击者可以按顺序查询这些 NSEC RR 以获取区域中的所有名称。虽然这不是对 DNS 本身的攻击, 但它可能允许攻击者通过枚举区域的内容来映射网络主机或其他资源。

DNSSEC 为 DNS 引入了大量额外的复杂性, 因此为实现错误和配置错误的区域引入了许多新机会。特别是, 在解析器中启用 DNSSEC 签名验证可能会由于 DNSSEC 配置错误或错误而导致整个合法区域变得实际上无法访问。

DNSSEC 不能防止对未签名区域数据的篡改。区域切割处的非权威数据 (父区域中的粘合记录和 NS RR) 未签名。在验证认证链时这不会造成问题, 但这确实意味着非权威数据本身在区域传输操作期间容易受到篡改。因此, 虽然 DNSSEC 可以为 RRset 提供数据源认证和数据完整性, 但它不能为区域提供, 必须使用其他机制 (如 TSIG、SIG(0) 或 IPsec) 来保护区域传输操作。

有关其他安全考虑事项, 请参见 [RFC4034] 和 [RFC4035]。