22 7月 10

_ こうすればできるはず、というメモ。BIND の本家 ISC からも ド キュメントが出ているが、決してそのままコピペしてはいけない。なぜなら、trust anchor が正しいものかどうか検証するという過程がごっそり抜けているから。それをやらなきゃ DNSSEC の意味がまったくないでしょうよ。このドキュメントを置いているサイトがどっかの誰かによってウソの情報に書き換えられたりしたら、それをコピペして設定 したサイトが危険に晒される。まあ実際にはそんなことはまずないだろうから、最終的にはコピペしたのと同じ結果になるはずなんだけど、じゃあコピペでいい や、というのは違うんだよ。

_ まず、PGP なり GnuPG なりを入手して使える状態にする。必ず信頼できるサイトから入手すること。このへんは BIND じゃなくて PGP の問題なので詳しい説明は略。

_ BIND 9.6.2 以降または 9.7.1-P2 以降を入手する。ソースだけでなく、PGP/GnuPG でソースの署名が正しいこともチェックする。コンパイルしてインストールし、dnssec 以外の部分をふつーに設定して動くようにする。具体的なことは略。

_ ここからやっと DNSSEC の設定。まず、root zone の DNSKEY を入手してファイルに保存する。DNSSEC の鍵には ZSK (ゾーンに署名するための鍵)と KSK (ZSK に署名するための鍵) のふたつあって、KSK/ZSK 双方の公開鍵が DNSKEY として登録される。今回必要なのは KSK の方だけ。256 なのが ZSK で 257 が KSK。

> dig dnskey . > root.key
> vi root.key		# 256 な方をコメントアウトするか消す
9.7 ではいちいち ZSK を消さなくても勝手に無視してくれるみたい。ファイル名は、必ず *.key にすること。なぜだか知らんが、ほかの名前だと後でエラーになる。この時点ではまだ DNSSEC は有効ではないので、dig で取得した値が改竄されていない保証がない。よって、以下でそれが正しいか検証する。

_ DS を作る。DS は KSK のハッシュなので、DNSKEY から生成できる(が、逆はできない)。生成には、それ専用のツールを使う。

> dnssec-dsfromkey -2 root.key
-2 は SHA-2 なハッシュを出力せよ、な意味。root zone は SHA-2 なので(root 以外は SHA-1 もある)。ファイル名が *.key じゃないとここでコケる。9.7 だと *.key じゃなくても
> dnssec-dsfromkey -2 -f filename .
とすることで可能っぽい。で、その実行結果はこうなる。
. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32 F24E8FB5

_ で、この出力と、 公開されているトラス トアンカーが一致しているかどうか確認する。ファイル形式が異なるので diff ってみるわけにはいかないけど、どうやって見ればいいかはわかるでしょ。もちろん、root-anchors.xml が正しいかどうかを PGP/GnuPG で確認すること。

_ 一致していれば、dig で取得した DNSKEY は正しかった、ということ。この DNSKEY の値を named.conf に設定する。具体的な設定方法は ISC の説明どおりでよい、はず(ここから先はまだ試してない)。ただし、実際の設定値はこのページのものをコピペするのではなく、自分で確認したも のに置き替えること。この後 rndc reconfig すれば DNSSEC validation が有効になる。トラストアンカーが一致しなかった場合、どっかでネットワークを流れるデータを改竄してる輩がいる可能性がある。それを排除してもう一度は じめから(PGP のインストールから)やりなおし。

_ せっかく作った DS は、確認完了した時点で用済みなのでポイしてよい。BIND は DNSKEY 形式しか使えないので、DS 形式のトラストアンカーは確認用途にしか使わない(自分のゾーンを DNSSEC で署名する場合にはもちろん活躍する)。unbound は DNSKEY と DS のどっちの形式でも食えるので、こんなめんどくさいことしなくても、はじめから DS 形式で公開されているトラストアンカーを コピペするだけでよい (もちろん、それがホンモノかどうかの確認は必要)。なんで DS 形式でしか公開しないんだろうか。DNSKEY 形式でも公開するべきだと思うんだけどな。手間の問題というより、この手順を正しくこなせる人ってそうそういないでしょ。

どさにっき

   Tag: DNS© BIND©