如我们的博客 ↗所述,Cloudflare 使用 NSEC 的否定应答实现可防护 zone walking1。此实现也称为 Compact Denial of Existence(RFC 9824 ↗),消除了 NSEC3 的需求且效率显著更高。
但是,若因合规原因必须使用 NSEC3,可按以下说明启用。
使用 Edit DNSSEC Status 端点,将 status 设为 active,dnssec_use_nsec3 设为 true。你应将 $ 开头的值替换为 zone ID 和认证凭据。有关使用 Cloudflare API 的更多信息,请参阅 Fundamentals。
Required API token permissions
At least one of the following token permissions is required:DNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dnssec" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"dnssec_use_nsec3": true,
"status": "active"
}'若你使用 Cloudflare 作为 Secondary DNS 提供商并配合预签名 DNSSEC,将 dnssec_use_nsec3 设为 true 意味着 Cloudflare 将使用从主 DNS 提供商传输的 NSEC3 记录。
否则,NSEC3 记录将在请求时生成并签名。
要验证 NSEC3 正在使用,请考虑以下场景:
如下命令将触发使用 NSEC3 进行不存在证明的签名否定响应。在响应的 Authority Section 下查找 NSEC3 记录。
dig +dnssec doesnotexist.example.com若名称 www 存在但 TXT 类型不存在,以下示例将触发使用 NSEC3 的签名 NODATA 响应。在响应的 Authority Section 下查找 NSEC3 记录。
dig +dnssec www.example.com TXTNSEC3 仅适用于 Enterprise 计划上的 zone。
-
攻击者利用 NSEC 否定应答获取给定 zone 中所有名称的方法。当此类否定应答提供链中上一个和下一个名称的信息时,这是可能的。 ↩