2.5. 自動鍵生成およびゾーン保守機能を使用した DNSSEC ゾーン署名
クライアントに対してゾーン情報の信頼性を確保するには、Domain Name System Security Extensions (DNSSEC) を使用してゾーンに署名できます。署名されたゾーンには、追加のリソースレコードが含まれています。
外部 DNS サーバーがゾーンの信頼性を検証できるように、ゾーンの公開鍵を親ゾーンに追加してください。詳細は、お使いのドメインプロバイダーまたはレジストリーにお問い合わせください。
ゾーンに対して DNSSEC ポリシー機能を有効にすると、BIND が自動的にアクションを実行します。これには、鍵の作成、ゾーンへの署名、ゾーンのメンテナンス (鍵の再署名や定期的な交換など) が含まれます。BIND では、単一の ECDSAP256SHA 鍵署名を使用する組み込みの default DNSSEC ポリシーを使用できます。ただし、独自の鍵、アルゴリズム、タイミングを使用するには、独自のポリシーを作成してください。
前提条件
-
サーバーに
bindパッケージをインストールした。 - DNSSEC を有効にするゾーンを設定した。
-
namedまたはnamed-chrootサービスが実行されている。 - タイムサーバーと時刻を同期するようにサーバーを設定した。DNSSEC 検証を有効にする前に、必ずシステム時刻が正しいか確認してください。
手順
ゾーンの DNSSEC を有効にするために、
/etc/named.confファイルにdnssec-policy default;とinline-signing yes;を追加します。zone "example.com" { ... dnssec-policy default; inline-signing yes; };BIND をリロードします。
# systemctl reload namedchange-root 環境で BIND を実行する場合は、
systemctl reload named-chrootコマンドを使用してサービスをリロードします。BIND は公開鍵を
/var/named/K<zone_name>.+<algorithm>+<key_ID>.keyファイルに保存します。このファイルを使用して、親ゾーンが必要とする形式でゾーンの公開鍵を表示します。DS レコード形式:
# dnssec-dsfromkey /var/named/Kexample.com.+013+61141.keyexample.com. IN DS 61141 13 2 3E184188CF6D2521EDFDC3F07CFEE8D0195AACBD85E68BAE0620F638B4B1B027DNSKEY 形式:
# grep DNSKEY /var/named/Kexample.com.+013+61141.keyexample.com. 3600 IN DNSKEY 257 3 13 sjzT3jNEp120aSO4mPEHHSkReHUf7AABNnT8hNRTzD5cKMQSjDJin2I3 5CaKVcWO1pm+HltxUEt+X9dfp8OZkg==
- ゾーンの公開鍵を親ゾーンに追加するように要求します。詳しい手順については、お使いのドメインプロバイダーまたはレジストリーにお問い合わせください。
検証
DNSSEC 署名を有効にしたゾーンのレコードについて、独自の DNS サーバーにクエリーを実行します。
# dig +dnssec +short @localhost A www.example.com192.0.2.30 A 13 3 28800 20220718081258 20220705120353 61141 example.com. e7Cfh6GuOBMAWsgsHSVTPh+JJSOI/Y6zctzIuqIU1JqEgOOAfL/Qz474 M0sgi54m1Kmnr2ANBKJN9uvOs5eXYw==この例では、BIND が同じホスト上で稼働しており、
localhostインターフェイスでクエリーに応答することを前提としています。公開鍵が親ゾーンに追加され、他のサーバーに伝播された後、署名済みゾーンへのクエリーに対してサーバーが認証済みデータ (
ad) フラグを設定していることを確認します。# dig @localhost example.com +dnssec... ;; flags: qr rd ra **ad**; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ...