このページの内容は古くなっています。 最新の情報は 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] のところにこれらが表示されるようになれば完了。