DNSSECのトラブルシューティングを行う
DNSSECのトラブルシューティングを行う
DNSSECはDNSを保護します。 この資料では、DNS解決に影響するDNSSECの問題を検出する方法について説明します。
本記事の内容
- digを使用してDNSSECをテストする
- digを使用してDNSSECの信頼の連鎖(Chain of Trust)を表示する
- digを使用してDNSSEC検証のトラブルシューティングを行う
- DNSVizを使用してDNSSEC検証のトラブルシューティングを行う
- 次のステップ
- 関連リソース
digを使用してDNSSECをテストする
Dig_は、DNSレコードのネームサーバーにクエリを実行するためのコマンドラインツールです。たとえば、dig はDNSリゾルバーに_ www.cloudflare.com のIPアドレスを問い合わせることが できます_+short_オプションは結果のみを出力します):
$ dig www.cloudflare.com +short 198.41.215.162 198.41.214.162
_dig_を使用してDNSSECレコードを検証します。 以下の例では、
$ dig www.cloudflare.com +dnssec +short 198.41.214.162 198.41.215.162 A 13 3 300 20180927180434 20180925160434 35273 cloudflare.com. DYYZ/bhHSAIlpvu/HEUsxlzkC9NsswbCQ7dcfcuiNBrbhYV7k3AI8t46 QMnOlfhwT6jqsfN7ePV6Fwpym3B0pg==
サブドメインの公開鍵ではなく、ルートドメインの公開鍵にクエリを実行します:
$ dig DNSKEY cloudflare.com +short 257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+ KkxLbxILfDLUT0rAK9iUzy1L53eKGQ== 256 3 13 koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z 1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==
DNSレスポンスには、次の2つのレコードが含まれます:
- DNSKEYレコード256は、ゾーン署名鍵(zone-signing key)と呼ばれる公開鍵であり、_A、MX、CNAME、SRV_などのDNSレコードの署名を検証するのに使用されます。
_+short_オプションを_dig_と使用しない場合に、レスポンスヘッダーにadフラグが表示されると、DNSレスポンスはDNSSEC認証されます:
$ dig www.cloudflare.com [...] ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65326;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 [...] ;; QUESTION SECTION: ;www.cloudflare.com. IN A [...] ;; ANSWER SECTION: www.cloudflare.com. 15 IN A 198.41.215.162 www.cloudflare.com. 15 IN A 198.41.214.162
digを使用してDNSSECの信頼の連鎖(Chain of Trust)を表示する
ドメイン署名の完全検証(例:cloudflare.com)は最上位のドメインでの鍵署名鍵を検証する必要があります(例:.com)。 続いて、同様の検証が
DNSSECが有効になっている場合、レジストラーのDNSで_DSレコード_が必要になります。 _DSレコード_には、公開鍵署名鍵のハッシュと鍵に関するメタデータが含まれます。
_dig_を使用して、_DSレコード_を検索します:
$ dig +short DS cloudflare.com 2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9
_dig_は答えが
$ dig DS cloudflare.com +trace [...] cloudflare.com。86400 IN DS 2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9 [...] com. 172800 IN NS e.gtld-servers.net. [...] ;; Received 1213 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 37 ms
上記のすべての手順を手動で実行する簡単な方法は、 DNSVizオンラインツールを使用することです。詳細については、 DNSVizを使用したDNSSEC検証のトラブルシューティング または DNSVizを介したcloudflare.comのDNSSEC結果の例を参照してください。
digを使用してDNSSEC検証のトラブルシューティングを行う
レジストラーで古いDNSSECレコードを更新または削除せずに、権威DNSプロバイダーを変更すると問題が発生します:
$ dig A brokendnssec.net @1.0.0.1 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10663
を実行して、_SERVFAIL_レスポンスがDNSSECに関連付けられているかどうかを確認します
$ dig A brokendnssec.net @1.0.0.1 +dnssec +cd +short 104.20.49.61 104.20.48.61
上記の例では、+cd オプションを使用しているときに正しいDNSレスポンスを受信した場合はDNSSECの誤設定が行われますが、DNSSECを使用したクエリは SERVFAIL_レスポンス_を返します。 この問題は、権威ネームサーバーは変更されるが、DSレコード が更新されない場合に発生することが多いです。 この問題は、攻撃者がクエリに対するレスポンスを偽造しようとした場合にも発生することがあります。
DNSVizを使用してDNSSEC検証のトラブルシューティングを行う
- http://dnsviz.net/に移動します。
- 表示されるテキストフィールドにドメイン名を入力します。
- DNSVizが過去に一度もサイトを分析したことがない場合は、表示される**「分析(Analizye)」**ボタンをクリックします。
- DNSVizが過去にサイトを分析したことがある場合は、
次のステップ
DNSSEC実装で問題が検出された場合は、ドメインのレジストラーに連絡して、_DSレコード_が権威DNSプロバイダーが指定したものと一致することを確認します。 Cloudflareが権威DNS プロバイダーである場合は、 「Cloudflareを使用してDNSSECを設定する」に記載されている手順を行います。