在 DNSSEC 中,NSEC 记录用于提供不存在的证明。问题在于,这些记录提供了指向现有域名(任一方向上最近的已知域)的指针,从而构建了一个可以“遍历”的链,最终通过进一步失败的查询公开给定区域中的所有域名。
据我了解,该方法依赖于对没有相应记录的域进行查询。具有通配符 DNS 记录的区域是否仍然容易受到这种攻击?
在 DNSSEC 中,NSEC 记录用于提供不存在的证明。问题在于,这些记录提供了指向现有域名(任一方向上最近的已知域)的指针,从而构建了一个可以“遍历”的链,最终通过进一步失败的查询公开给定区域中的所有域名。
据我了解,该方法依赖于对没有相应记录的域进行查询。具有通配符 DNS 记录的区域是否仍然容易受到这种攻击?
如果您担心攻击者会在您的区域中行走,您应该将其配置为使用 NSEC3 而不是 NSEC 进行拒绝。这适用于通配符记录,在任何一种情况下都与区域行走无关。
NSEC3 使用名称的散列来断言记录不存在。攻击者无法从哈希中获取原始名称,因此他不会收到指向区域中相邻名称的提示。
与 NSEC 的情况一样,攻击者仍然可以判断出响应是由于存在通配符记录。但是,无论区域是否包含通配符记录,NSEC 都可以进行区域遍历(而 NSEC3 则不可能)。
Server 2012(及更高版本)和 BIND 9+ 中的 Windows DNS 支持 NSEC3。旧版本仅支持带有 NSEC 的 DNSSEC。