Boxは、BoxのDNSドメインに対してDNSSECを有効にしました。 この記事では、DNSSECが有効になっているBoxのbox-test.comドメインとDNSSECが無効になっているドメインの例としてComcastが管理するdnssec-failed.orgドメインを使用して、企業のローカルDNSサーバーでBoxのDNSSEC検証が正常に機能しているかどうかをテストする方法について説明します。
背景
DNSSECの仕組みやその他のツールについては、以下のリンク先を参照することをお勧めします。
DNSSECプロトコルでは、クライアントがドメインレコードのDNSSEC検証を明示的に実行する必要があります。 ほとんどのオペレーティングシステムとデバイスでは「スタブリゾルバ」のみがサポートされています。スタブリゾルバは、直接的なDNSSEC検証をサポートしておらず、DNSの再帰検索機能を企業が管理する再帰DNSサーバーに委ねています。ドメインレコードのDNSSEC検証を有効にするほとんどの企業は、その最初のDNSサーバーで検証を実施します。 これは、ITチームが管理するBIND DNSサーバー、クラウドインフラストラクチャプロバイダが管理するDNSサーバー、エンタープライズセキュリティスイート (Cisco Umbrella、Palo Alto NetworksのDNS Securityなど)、またはパブリックDNSサーバー (Cloudflare、OpenDNS、Google Public DNSなど) である場合があります。
トラブルシューティング方法
独自のドメインネームサーバーのローカル環境でBoxドメインのDNSをオーバーライドした場合、オーバーライドしたドメインがDNSSEC検証で拒否されるリスクがあります。 DNSSEC検証の問題は、一部のクライアントがBoxドメインのDNSレコードを検索できないという形で発生する場合があります。 BoxによるDNSSECのリリース後に発生するDNS解決に関する一貫性のない問題を診断するには、以下の一般的な方法をお勧めします。
自社の設定に関係なく、サードパーティのサイトを使用して、DNSSECのキーが問題のある特定のドメイン名に対して有効かどうかを確認する
「delv」、またはWindows PowerShellの「Resolve-DnsName」を使用して、クライアントまたはサーバーインスタンスからDNSSEC検証を確認する
DNSSEC検証を実施したすべてのDNSサーバーのログを確認する
サードパーティのDNSSEC検証サイト
Boxでは、DNSSECの有効化時に以下のサードパーティのサイトを使用して、ドメインレジストラによって更新されたトップレベルドメインでの暗号の信頼性を、外部DNSプロバイダが生成したキーを使用して検証します。
box-test.comに対するDNSSEC検証の成功を示す例:
問題が見つかる例:
ISC BINDが提供するLinuxディストリビューション向け「delv」ツールを使用する
「delv」コマンドは、ほとんどのLinuxディストリビューションで使用可能です。 Red Hatディストリビューションでは、「bind-utils」RPMに含まれています。 LinuxサーバーインスタンスからDNSサーバーを介してDNSSEC検証が正常に機能していることを簡単に確認できます。
$ delv www.box-test.com
; fully validated
www.box-test.com. 300 IN A 107.152.24.234
www.box-test.com. 300 IN RRSIG A 13 3 300 20240105002433 20240103002433 44688 box-test.com. eZFkt/oTe0+xO55ti3BFR64ObkMG55wttbYYqOLjxAQnnfdWPXw/wUos y+ZH2fNaHYI7PgVYF4MzOQ20yP40GA==
何らかの理由で「fully validated」が返されない場合は、理由を説明するメッセージが表示されます。 疑わしいDNSSECの問題についてBoxサポートの支援を求める場合は、ご自身のケースについて以下のような情報を提供してください。
$ delv dnssec-failed.org
;; validating dnssec-failed.org/DNSKEY: no valid signature found (DS)
;; no valid RRSIG resolving 'dnssec-failed.org/DNSKEY/IN': 169.254.169.254#53
;; broken trust chain resolving 'dnssec-failed.org/A/IN': 169.254.169.254#53
;; resolution failed: broken trust chain
delvには、「+multi +vtrace」など、他にも便利なトレースオプションがあることに注意してください。 例は、https://kb.isc.org/docs/aa-01152で確認できます。
注意事項
macOSで提供される「delv」は、追加の設定なしでは正しく機能しないことに注意してください。 ただし、macOSのHomebrewに「bind」パッケージを介して提供される「delv」は、上記の想定どおりに動作します。
Windows PowerShellで提供される「Resolve-DnsName」ツールを使用する
Windows PowerShellには、「delv」の代替手段が用意されています。 「Resolve-DnsName」コマンドは、次に示すように使用できます。
PS C:\> Resolve-DnsName -Name box-test.com -DnssecOk
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
box-test.com A 300 Answer 74.112.186.129
Name : box-test.com
QueryType : RRSIG
TTL : 300
Section : Answer
TypeCovered : A
Algorithm : 13
LabelCount : 2
OriginalTtl : 300
Expiration : 1/19/2024 8:56:47 PM
Signed : 1/17/2024 8:56:47 PM
Signer : box-test.com
Signature : {254, 20, 145, 36...}
上記のテストで「RRSIG」が返されない場合は、理由を説明するメッセージが表示されます。 疑わしいDNSSECの問題についてBoxサポートの支援を求める場合は、テストの結果を提供してください。
Resolve-DnsName PowerShellコマンドに関するその他のヘルプについては、こちらを参照してください。
DNSサーバーログでDNSSEC検証エラーを確認する
DNSサーバーログの確認方法は、DNSサーバーのベンダーによって異なります。 BINDのトラブルシューティングの説明については、https://dnsinstitute.com/documentation/dnssec-guide/ch05s03.html#troubleshooting-logging-debugを参照してください。