DNSSECとは?
DNSSEC(DNS Security Extensions)は、DNSレコードに暗号署名を行い、リゾルバーがレコードが改ざんされていないことを検証できるようにすることで、キャッシュポイズニングやなりすましから防御します。レコードの意味を変えることなく、通常のDNSの上に信頼の連鎖を追加します。IPeekは検証を行うDNS-over-HTTPSリゾルバーに照会し、ドメインが署名され認証されているかを報告します。
DNSSECが信頼の連鎖を構築する仕組み
DNSSECは、各ゾーンを秘密鍵で署名し、対応する公開鍵をDNSに公開することで機能します。レコードが署名され(RRSIG)、鍵が公開され(DNSKEY)、ゾーンの鍵のフィンガープリント(DSレコード)が親ゾーンに置かれます。これによりあなたのゾーンが親に結び付き、親がさらにその親に結び付き、ルートまで連続する信頼の連鎖が形成されます。検証を行うリゾルバーは、その連鎖をルートから下へたどり、各署名を確認し、署名が検証された応答のみを信頼します。
DNSSECチェック結果の読み解き方
IPeekは、ドメインがDNSSECで署名されているか、また検証を行うリゾルバーがそれを認証するかを報告します。認証された結果(多くはAD、すなわちAuthenticated Dataフラグとして示されます)は、信頼の連鎖が無傷で、レコードが検証されたことを意味します。ドメインが署名されていなければ、DNSSECが単に有効化されていないだけで、一般的でありエラーではありませんが、レコードが保護されていないことを意味します。署名されたドメインが検証に失敗するのはより深刻で、壊れた連鎖、通常はレジストラでのDSレコードの欠落や不一致を示します。
よくあるDNSSECの問題と修正方法
最もよくある失敗は壊れた信頼の連鎖で、ゾーンは署名されているのに親のDSレコードが欠落、古い、または現在の鍵と一致しない状態です。これにより検証を行うリゾルバーがSERVFAILを返し、検証リゾルバーの背後にいるユーザーにとってドメインが完全にオフラインになることがあります。通常、鍵のロールオーバー時や、DSレコードをレジストラにアップロードせずにDNSSECを有効化したときに起こります。レジストラのDSレコードがゾーンのアクティブな鍵と一致するようにし、DSの更新が伝播する前に古い鍵を決して削除しないことで修正します。