DNSSEC対応してみるよ

あってるかな?

trusted-keys {
	br. 257 3 5 "(snip)";
	cz. 257 3 5 "(snip)";
	se. 257 3 5 "(snip)";
	bg. 257 3 5 "(snip)";
	pr. 257 3 5 "(snip)";
	museum. 257 3 5 "(snip)";
	se. 257 3 5 "(snip)";
	dlv.isc.org. 257 3 5 "(snip)";
};


options {
    //(snip)
	dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside "." trust-anchor "dlv.isc.org.";
    //(snip)
};
logging {
     channel dnssec_log {
        file "/var/log/dnssec.log" versions 4 size 3m;
        print-time yes;
        print-category yes;
        print-severity yes;
        severity info;
     };
        category dnssec { dnssec_log; };

GOVはためしたけど怒られた、ORGは?

      • サービス再起動
% rndc reconfig
      • DO bitをつけて(+dnssec) ADフラグで返ってくることを確認

% dig +dnssec iis.se. @localhost | grep flags
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 1
; EDNS: version: 0, flags: do; udp: 512

    • unboundのばあい

trust-anchor: "dlv.isc.org. DS 19297 5 1 (snip)"
trust-anchor: "br. DS 18457 5 1 (snip)"
trust-anchor: "cz. DS 7978 5 1 (snip)"
trust-anchor: "se. DS 6166 5 1 (snip)"
trust-anchor: "bg. DS 61993 5 1 (snip)"
trust-anchor: "pr. DS 62704 5 1 (snip)"
trust-anchor: "museum. DS 39226 5 1 (snip)"
trust-anchor: "se. DS 49678 5 1 (snip)"
trust-anchor: "gov. DS 50599 5 1 (snip)"
dlv-anchor: "dlv.isc.org. DS 19297 5 1 (snip)"

      • サービス再起動

% unbound-control reload

      • DO bitをつけて(+dnssec) ADフラグで返ってくることを確認

% dig +dnssec iis.se. @localhost | grep flag
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 1
; EDNS: version: 0, flags: do; udp: 4096

  • 権威サーバで自分のゾーンに署名してISC DLV Treeにぶらさげてみる
    • BINDのばあい
      • KSK(自分のZSKの署名のための鍵)生成
        • あまり更新しないだろう=重くても解読されにくいように2048bit

% dnssec-keygen -r /dev/random -f KSK -a RSASHA1 -b 2048 -n ZONE example.net
Kexample.net.+005+56731

      • ZSK(自分のゾーンへ署名するための鍵 )生成
        • よく更新するだろう=軽めに1024bitで

% dnssec-keygen -r /dev/random -a RSASHA1 -b 1024 -n ZONE example.net
Kexample.net.+005+21507

      • KSK公開鍵をゾーン中のRRに追加

% cat Kexample.net.+005+56731.key >> /var/named/etc/namedb/master/example.net.zone

      • DLV登録

% cat Kexample.net.+005+56731.key

https://dlv.isc.org/

      • DLV登録したとき教えてくれるdlv.example.net RRを追加

dlv 0 IN TXT "DLV:1:(snip)"

      • ゾーンにサイン(署名)

% dnssec-signzone -t -o example.net -l dlv.isc.org example.net.zone
example.net.zone.signed
Signatures generated: 25
Signatures retained: 0
Signatures dropped: 0
Signatures successfully verified: 0
Signatures unsuccessfully verified: 0
Runtime in seconds: 1.685
Signatures per second: 14.834

      • named.confのmaster fileをサイン済みのものに変更

% vi /etc/namedb/named.conf
zone "example.net" {
type master;
file "master/example.net.zone.signed";

% rndc reload

      • DO bitをつけて(+dnssec) ADフラグで返ってくることを確認

% dig +dnssec example.net. | grep flags
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 7
; EDNS: version: 0, flags: do; udp: 4096