このページの内容は古くなっています。 最新の情報は BIND 9.18 の DNSSEC 設定をご覧ください。 [2023-04-18]
FreeBSD 9.3-RELEASE に付属の named が BIND 9.9.5 になり、inline signing が使えるようになったので、設定してみた。
cf. | Inline Signing in ISC BIND 9.9.0 -- Examples |
In-line Signing With NSEC3 in BIND 9.9+ -- A Walk-through |
要点
dnssec-keygen コマンドを使って ZSK と KSK を生成する。
# mkdir /etc/namedb/keys # cd /etc/namedb/keys # dnssec-keygen -3 example.jp > zsk-example.jp # ZSK が生成される Generating key pair.........++++++ .....++++++ # dnssec-keygen -3 -fk example.jp > ksk-example.jp # KSK が生成される Generating key pair......+++ .........+++
zsk-example.jp ksk-example.jp ファイルの中に、それぞれ生成されたキーのファイル名が入る。
Kexample.jp.+007+02268.key のような感じのファイルができる。
上流に登録する DS は KSK から作る。
# dnssec-dsfromkey `cat ksk-example.jp`.key > ds-example.jp
ds-example.jp の中身はこんな感じ。
# cat ds-example.jp example.jp. IN DS 2268 7 1 AA902BA2DEA0FE792F001A968621DA57F0F119FD example.jp. IN DS 2268 7 2 3FC9EBC2892630837CA698247B7CC15C5ABF26045106FCE4715DB9357A8DFC69
最後に、これらのファイルとディレクトリを bind の持ち物に変更しておく。
# chown bind * .
まず、options セクションに key-directory を追加する。
options { directory "/etc/namedb/working"; key-directory "/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 を有効にするゾーンに auto-dnssec と inline-signing を追加する。
zone "example.jp" { type master; file "/etc/namedb/master/example.jp.db"; allow-query { any; }; allow-transfer { 10.0.0.2; // secondary (slave) }; auto-dnssec maintain; inline-signing yes; };
named は、ゾーンファイルと同じ場所にいくつかのファイルを作るので、この例だと /etc/namedb/master/ に bind で書き込める必要がある。
ところが、named の起動スクリプトは、デフォルトのままだと起動時に /etc/namedb/master/ の owner:group permission を root:wheel 0755 に戻してしまう。
選択肢はふたつ。
後者にしてみた。
# chown bind /etc/namedb/master # echo 'named_chroot_autoupdate="NO"' >> /etc/rc.conf # service named restart
# rndc signing -nsec3param 1 0 10 9876abcd example.jp # rndc loadkeys example.jp
9876abcd のところは salt なので任意の 16 進数(8 桁まで)。
dnssec-dsfromkey の出力のうち、DS よりも後の部分をレジストラに登録する。
example.jp. IN DS 2268 7 1 AA902BA2DEA0FE792F001A968621DA57F0F119FD example.jp. IN DS 2268 7 2 3FC9EBC2892630837CA698247B7CC15C5ABF26045106FCE4715DB9357A8DFC69
空白も含めてそのまま、ふたつとも。
whois の [Signing Key] のところにこれらが表示されるようになれば完了。