ブログ ↗ で説明しているとおり、Cloudflare の NSEC による否定応答の実装は、ゾーンウォーキング1 から保護されています。この実装は Compact Denial of Existence(RFC 9824 ↗)とも呼ばれ、NSEC3 が不要になり、効率も大きく向上します。
ただし、コンプライアンス上 NSEC3 が必要な場合は、次の手順で有効にできます。
Edit DNSSEC Status エンドポイント を使い、status を active、dnssec_use_nsec3 を true に設定します。$ で始まる値は、ゾーン 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"
}'事前署名済み DNSSEC 付きで Cloudflare をセカンダリ DNS プロバイダーとして使う場合、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 プランのゾーンでのみ利用できます。
-
攻撃者が NSEC の否定応答を悪用して、ゾーン内のすべての名前を取得する手法です。否定応答がチェーン上の前後の名前を示す場合に可能になります。 ↩