DNSSEC は役に立ちますか?

DNSSEC は役に立ちますか?

DNSSEC は、DNS 結果が何であれ、それが本物であることを確認することを目的として、ゾーン データを検証および認証します。

  1. DNS リゾルバが、権威ネームサーバーが正しいデータを改ざんせずに送信したことを検証したとしても、DNS リゾルバが改ざんされた DNS 応答を DNS クライアントに送信するのをどのように防ぐのでしょうか。

  2. DNS リゾルバが DNSSEC をサポートしていない場合でも、ゾーンに対して DNSSEC が有効になっている権威ネームサーバーに DNS クエリを送信できますか?

ありがとう

答え1

DNSSECは役に立ちますか?

何を防御したいのかを説明し始めるまでは、この質問には答えられません (この文で「DNSSEC」の代わりにどんな単語を入れても)。

防御したいリスク/脆弱性/脅威のリストがあれば、どのような解決策が存在するかを調べ、それぞれの解決策がどの程度役立つかを判断できます。

DNSSECある種の DNS の問題には有効ですが、すべての問題に有効というわけではありません。新しい問題 (署名とキーの継続的なメンテナンスなど) だけでなく、新しい機能 ( NXDOMAINDNSSEC によって適切に検証された場合、a より下のすべてを積極的にキャッシュする) も発生します。

DNS リゾルバが、権威ネームサーバーが正しいデータを改ざんせずに送信したことを検証したとしても、DNS リゾルバが改ざんされた DNS 応答を DNS クライアントに送信するのをどのように防ぐのでしょうか。

これは今日と何ら変わりません。パブリック DNS リゾルバ ( 8.8.8.81.1.1.1など9.9.9.9) を使用する場合、もちろんゴミデータが送られてくるリスクは完全にあります。これはトレードオフです。DoH/DoT は、あなたとこのリゾルバ間のコンテンツ送信のみを保護し、コンテンツ自体は保護しないため、ここでは何も解決しません。クエリを実行しているドメイン名が DNSSEC で保護されている限り、どのコンテンツが DNSSEC によって「保護」されます (これは質問で忘れている部分であり、実際に DNSSEC を困難にしている部分です。ドメイン名の所有者が DNSSEC を有効にする必要があります)。そしてDNS リゾルバは新しい署名を使用して検証を行う必要があります。この 2 つの変数の式の 1 つが存在しない場合、DNSSEC は機能しないため役に立ちません。

したがって、問題は、どの再帰ネームサーバーを使用するか、どこで実行するかという点に大きく関係します。もちろん、最大限の制御のためには、リゾルバーを自分のマシンで実行する必要があります。外部リソースと DNS リゾルバーをそこで使用することもできますが、最終的な DNSSEC 検証は、他のネームサーバーではなく自分のネームサーバーで実行する必要があります。もちろん、これは、DNSSEC のすべての作業を「無料で」行う他のリソースに頼るよりも手間がかかります。

DNS リゾルバが DNSSEC をサポートしていない場合でも、ゾーンに DNSSEC が設定されている権威ネームサーバーに DNS クエリを送信できますか?

はい。DNSSEC データを取得したいリゾルバは、リクエスト内の「DO」フラグを切り替える必要があります。

ドキュメントよりdig:

        +[no]dnssec
         This option requests that DNSSEC records be sent by setting the DNSSEC OK (DO) bit in the OPT record in the additional section of the query.

それは次のように見ることができます:

$ dig +dnssec example.com

; <<>> DiG 9.16.18 <<>> +dnssec example.com
;; global options: +cmd
;; Sending:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40492
;; flags: rd ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
                           ^^

あるいは、RFC 4035 の§3.2.1 から:

3.2.1. DOビット

セキュリティ対応の再帰ネーム サーバーのリゾルバー側は、ネーム サーバー側で受信した開始要求の DO ビットの状態に関係なく、要求を送信するときに DO ビットを設定する必要があります。開始クエリの DO ビットが設定されていない場合、ネーム サーバー側は応答から認証 DNSSEC RR を削除する必要がありますが、開始クエリが明示的に要求した DNSSEC RR タイプを削除してはなりません。

DNS クライアント (再帰リゾルバ) がこれを実行し、かつ照会先の権威ネームサーバで DNSSEC が有効になっている場合 (つまり、ゾーンに // レコード タイプがある場合RRSIG) NSECNSEC3リゾルバはそれらのレコードを取得し、DNSSEC 検証を実行できます。

CD(リゾルバではない DNS スタブ/クライアントが) 再帰リゾルバを照会する場合、次のように定義されたフラグを使用するオプションがあります。

        +[no]cdflag
        This option sets [or does not set] the CD (checking disabled) bit in the query. This requests the server to not perform DNSSEC validation of responses.

(二重否定の可能性に注意してください)。

クライアントが を使用しない場合CD、DNSSEC 検証は無効にならず、したがって有効になり、リモート サーバーは最終的な回答を提供するか (レコードに対して DNSSEC が有効になっており、検証が成功した場合)、NXDOMAINDNSSEC 検証が失敗した場合は で応答します。フラグはAD、すべてのレコードが安全であると検証されたことを示すために設定されます (該当する場合) (クエリが再帰ネーム サーバーから送信された場合、そのフラグは権威ネーム サーバーから存在することはできません。これは、特定のレコードを検証するには IANA ルートからの完全な DNSSEC チェーンが必要になるためです)。

答え2

  1. 理想的には、クライアント上でローカルに検証するか (今日ではそれほど一般的ではありませんが、聞いたことがないわけではありません)、クライアントから信頼できる検証リゾルバまでのギャップを埋めることができる安全なネットワーク パスに依存します。
    この安全なネットワーク パスは、DNS-over-TLS、DNS-over-HTTPS、DNSCrypt など、またはある程度のローカル ネットワーク (信頼レベルは低いですが、攻撃シナリオのサブセットには依然として役立ちます) を意味します。
  2. はい

関連情報