FreeBSD

BIND 9.18 の DNSSEC の設定

BIND も進化していて、 以前設定したときよりも格段に簡単になった。 ZSK や KSK を手で生成する必要は無くなっている。

0. 古い DS レコードの削除

既に auto-dnssec で DNSSEC を運用している場合、 そのまま設定を変更してしまうとすぐに古いキーがすべて無効になって新しいキーが生成されてしまい、 DS レコードを変更するまで名前解決ができなくなってしまう。 (i.e. 単純に auto-dnssec: maintain; を dnssec-policy: default; に書き換えてしまうとハマるということ)

それを避けるため、 レジストラに依頼して DS レコードを削除してもらい、 いったん DNSSEC をやめておく。

1. named.conf の設定

まず、options セクションに key-directory を追加する。 このディレクトリは bind の持ち物にしておく。

options {
        directory       "/usr/local/etc/namedb/working";
        key-directory   "/usr/local/etc/namedb/keys";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

        allow-query {
                localhost;
                localnets;
        };
        allow-transfer {
                none;
        };
        dnssec-validation       auto;
        dnssec-lookaside        auto;
};

次に、DNSSEC を有効にするゾーンに dnssec-policy と inline-signing を追加する。

zone "example.jp" {
        type    master;
        file    "/usr/local/etc/namedb/master/example.jp.db";
        allow-query {
                any;
        };
        allow-transfer {
                10.0.0.2;  // secondary
        };
        dnssec-policy: default;
        inline-signing: yes;
};

inline-signing: yes の場合、named(8) はゾーンファイルと同じ場所にいくつかのファイルを作るので、そのディレクトリに bind で書き込めるようにしておく。

# cd /usr/local/etc/namedb
# mkdir keys master
# chown bind keys master

2. DS レコードの登録

rndc reload 等して変更を反映させると、新しいキーが生成される。 Kexample.jp.+013+nnnnn.key のような名前のファイルが出来るので、dnssec-dsfromkey(1) で DS レコードを生成する。

# dnssec-dsfromkey /usr/local/etc/namedb/keys/Kexample.jp.+013+02268.key
example.jp. IN DS 2268 13 2 3FC9EBC2892630837CA698247B7CC15C5ABF26045106FCE4715DB9357A8DFC69

上流に登録するのは DS よりも後の部分。 レジストラに依頼して、whois の [Signing Key] (汎用 JP ドメイン)や s. [署名鍵](属性型 JP ドメイン)のところにこれらが表示されるようになれば完了。

3. 状態の確認

キーの状態は rndc(8) コマンドで確認できる。

# rndc dnssec -status example.jp
dnssec-policy: default
current time:  Sun Apr  9 17:47:34 2023

key: 2268 (ECDSAP256SHA256), CSK
  published:      yes - since Thu Dec 31 17:31:34 2022
  key signing:    yes - since Thu Dec 31 17:31:34 2022
  zone signing:   yes - since Thu Dec 31 17:31:34 2022

  No rollover scheduled
  - goal:           omnipresent
  - dnskey:         omnipresent
  - ds:             rumoured
  - zone rrsig:     omnipresent
  - key rrsig:      omnipresent

DS レコードが引けるようになってしばらく経っても ds: のところが rumoured のままになっている場合は、参考サイト[1] にあるとおり

# rndc dnssec -checkds published example.jp

を実行しておく。

A. 参考サイト

[1] DNSSEC Key and Signing Policy
[2] DNSSEC Analyzer