NSEC 查询
查询 NSEC 记录以验证 DNSSEC 否定响应与区域覆盖
Query NSEC records to verify DNSSEC negative responses and zone coverage
查询 NSEC 记录以验证 DNSSEC 否定响应与区域覆盖
本页提供关于 NSEC 记录查询的原创、经人工审校的内容,解释经认证的否定应答、可遍历枚举问题,以及何时应选择 NSEC3。
NSEC (Next Secure) records are a crucial component of DNSSEC that provide authenticated denial of existence. They prove that a particular domain name or record type does not exist in a DNS zone, preventing attackers from spoofing non-existent records.
NSEC:提供清晰的不存在证明,但允许区域遍历(枚举所有域名)。
NSEC3:使用哈希域名来防止区域遍历,同时仍然提供不存在证明。
# Generate DNSSEC keys dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com dnssec-keygen -a RSASHA256 -b 1024 -n ZONE -f KSK example.com
# Sign zone with NSEC records dnssec-signzone -o example.com -t example.com.zone
# BIND configuration
zone "example.com" {
type master;
file "example.com.zone.signed";
key-directory "keys/";
auto-dnssec maintain;
};向你的域名注册商提交 DS 记录:
# Generate DS record dnssec-dsfromkey Kexample.com.+008+12345.key
症状: NSEC 查询无结果
可能原因:
解决方案:
dig +dnssec SOA example.comdig +dnssec NSEC3PARAM example.com症状: NSEC 链验证失败
可能原因:
解决方案:
症状: 存在 NSEC 记录,但签名无效
可能原因:
解决方案:
dig +dnssec +multiline NSEC example.com- 查询 NSEC 记录delv example.com- 验证 DNSSEC 链dnssec-verify example.com.zone.signed- 验证区域签名named-checkzone example.com example.com.zone- 检查区域语法NSEC 记录提供认证的不存在证明,但会暴露区域中的所有域名,从而允许“区域遍历”攻击。NSEC3 使用加密哈希隐藏真实域名,同时仍提供相同的安全优势,防止区域枚举。
这可能意味着:(1)未启用 DNSSEC,(2)你的域名使用 NSEC3 而非 NSEC,(3)区域未正确签名,或(4)你的 DNS 服务商以不同方式处理 DNSSEC。请向你的 DNS 服务商了解他们的 DNSSEC 实现。
区域遍历允许攻击者枚举你区域中的所有子域,这可能暴露你希望保密的内部基础设施或服务。虽然不能直接利用,但它提供了侦察信息。如果在意隐私,请考虑使用 NSEC3。
NSEC 记录在签名区域时自动生成。当你添加或删除区域中的域名时,应更新 NSEC 记录。NSEC 记录的 RRSIG 签名应在过期前刷新(通常每 30 天)。
不可以。一个区域只能使用 NSEC 或 NSEC3 之一,不能同时使用。你必须选择一种认证不存在证明的方式。大多数现代实现更倾向于使用 NSEC3,因为它具有隐私优势。
NSEC 链断裂会导致 DNSSEC 验证失败,从而给终端用户带来解析错误。当解析器无法验证链时,可能会返回 SERVFAIL 响应。这通常需要重新签名区域以修复链的完整性。
大多数现代 DNS 服务商都支持 DNSSEC 和 NSEC 记录,但实现细节各不相同。有些服务商自动管理 DNSSEC 签名,并默认使用 NSEC3。请向你的 DNS 服务商了解其具体的 DNSSEC 能力和配置选项。