squeeze+bindでDNSSECに対応する(セカンダリDNS)

■セカンダリDNSもDNSSEC対応にしてみる
 ※zoneファイルが必要、「managed-keys.bind」はプライマリDNSからコピー。

 squeeze+bindでDNSSECに対応する
 http://d.hatena.ne.jp/labunix/20120503

■必要なパッケージの導入

$ sudo apt-get install -y dnssec-tools libmailtools-perl libcrypt-openssl-random-perl

■「logging」をinfoからdebugにする。
 bindデーモンの再読み込みでdebugモードに。
 「rndc reload」でzoneがクリアされる。

$ sudo cp -pi /etc/bind/named.conf.options /etc/bind/named.conf.options.rndc
$ sudo /etc/init.d/bind9 reload
$ sudo rndc reload
03-May-2012 19:28:43.770 general: info: reloading zones succeeded
03-May-2012 19:28:43.775 database: debug 1: calling free_rbtdb(.)
03-May-2012 19:28:43.775 database: debug 1: done free_rbtdb(.)

■「bind.keys」を確認してincludeする。
 ※includeすると、rndcポートがリッスンできなくなるので、まだ行わない。

$ wc -l /etc/bind/bind.keys
49 /etc/bind/bind.keys

■「file」指定で、少なくとも「zone」ファイルを作成して署名する
 デバッグレベルが6以上だとやはりプライマリDNSと同じ警告が出る。

$ ls /var/cache/bind/
localdomain.rev  localdomain.zone  managed-keys.bind  named_dump.db
$ cd /etc/bind && sudo zonesigner -genkeys -usensec3 -zone localdomain /var/cache/bind/localdomain.zone

        if zonesigner appears hung, strike keys until the program completes
        (see the "Entropy" section in the man page for details)

Generating key pair..................++++++..................................
.....................................++++++
Generating key pair...........++++++ ..................++++++
Generating key pair..........................................................
.......................................................................+++
.............................................................................
.............................................................................
...........+++
Verifying the zone using the following algorithms: RSASHA256.
Zone signing complete:
Algorithm: RSASHA256: KSKs: 1 active, 0 stand-by, 0 revoked
                      ZSKs: 1 active, 1 stand-by, 0 revoked

zone signed successfully

localdomain:
        KSK (cur) 43765  -b 2048  05/03/12      (localdomain-signset-00003)
        ZSK (cur) 15129  -b 1024  05/03/12      (localdomain-signset-00001)
        ZSK (pub) 28920  -b 1024  05/03/12      (localdomain-signset-00002)

zone will expire in 4 weeks, 2 days, 0 seconds
DO NOT delete the keys until this time has passed.

$ wc -l /var/cache/bind/localdomain.zone.signed
157 /var/cache/bind/localdomain.zone.signed

$ sudo /usr/sbin/donuts --level 9 /var/cache/bind/localdomain.zone.signed  localdomain
localdomain:
  Warning:     Only 1 NS record(s) for localdomain found, but at least 2
               are suggested/required

1 errors found in /var/cache/bind/localdomain.zone.signed
$  sudo /usr/sbin/donuts --level 5 /var/cache/bind/localdomain.zone.signed  localdomain
0 errors found in /var/cache/bind/localdomain.zone.signed
■debugログでエラーも警告も出ていないので、
 セカンダリDNSの「/var/cache/bind/managed-keys.bind」は空なので、
 プライマリDNSからコピー(これが無いと起動出来ない)
 dnssecのオプションを追加して、DNSSECを有効にする。

$ sudo diff -b /etc/bind/named.conf.options.rndc /etc/bind/named.conf.options
33a34,37
>       dnssec-enable yes;
>       dnssec-validation yes;
>       dnssec-lookaside auto;
>       managed-keys-directory "/var/cache/bind/";
35a40
> include "/etc/bind/bind.keys";
40c45
<       severity info;
---
>       severity debug;
48a54,55
>

$ sudo named-checkconf && sudo /etc/init.d/bind9 reload

■adフラグの確認

$ dig +dnssec jprs.jp @127.0.0.1 2>&1| grep -A 1 HEADER
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38463
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 1