update

2010年04月06日

前回は、DNSSECそのものの設定でした。今回は、それにDynamic Update(動的更新)の機能を組み込む。

DNSのDynamic Updateは、ホストが自分のホスト名とIPアドレスをDNSのゾーンに自動で登録することのできる機能である。
DHCPでIPアドレスを動的に割り当てられたホストのIPアドレスを、第三者が知ることは難しい。
当該ホストが起動時にIPアドレスを割り当てられた後、自分のホスト名とIPアドレスをDNSに申告し登録してもらえば、第三者はそのホスト名を頼りにIPアドレスを知ることが出来る。

ここでは、DNSSECで保護されているゾーンファイルにDynamic Updateを適用する方法をまとめる。
といっても、特別なことはなく、ゾーンレコードのupdateが起きるとDNSは自動でゾーンの再署名をやってくれる。

1.Dynamic update用の鍵の作成

dnssec-keygenコマンドで鍵ペアを作る。DNS Updateは、updateを申告する側とDNS側で同じ鍵を持つ事前共有鍵方式である。ここで作った鍵ペアの秘密鍵(.private)を使う。

$ dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n user dynamic1

Kdynamic1.+157+55555
と表示され、*.keyと*.privateの鍵ペアができる。

$ cat Kdynamic1.+157+55555.key 
dynamic1. IN KEY 0 3 157 w5g6K4q8KQ4j...(omitted)...VzX8mV+wUTdl rISj/0KbMQyqZ7/0Cr9Xg007zteASw==

$ cat Kddns.+157+55555.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: w5g6K4q8KQ4jUDZ0...(omitted)...g007zteASw==
Bits: AAA=
Created: 20100402065821
Publish: 20100402065821
Activate: 20100402065821

2.プライベート鍵の読み込み

named.confに*.privateファイルを登録する。
ここではdynamic1.privateというファイルを用意し、それをinclude文でnamed.confに読み込ませる。

$ cat dynamic1.private 
key dynamic1 {
algorithm HMAC-MD5;
secret "w5g6K4q8KQ4j...(omitted)...g007zteASw==";
};

$ cat named.conf
include "rndc.key";
include "dynamic1.private"; ←この行を追加

options {



};

3.named.confのゾーン定義ブロックに、updateを許可する行を追加する

zone "beta.alpha" {
type master;
file "beta.alpha.zone.signed";
allow-update { key dynamic1; }; ←この行を追加
};

4.namedの設定再読み込み

$ rndc reload

5.ファイルパーミッション

ゾーンファイルのパーミッションが、namedプロセスの実行IDで書き込み権があることを確認する。

また、公開鍵秘密鍵共に読込み権があるかも確認する。

6.テスト更新

テストスクリプトの用意

$ cat update.test
server localhost
update add host1.beta.alpha 86400 IN A 192.168.10.10


↑最後には必ず空の改行(行頭に改行)をいれておく。それがないとupdate queryが飛ばない。

updateの実施

(1)パターン1

$ nsupdate -k Kddns.+157+55555.private updatetest

(2)パターン2

$ nsupdate -k dynamic1.private updatetest

パターン1と2では、与えている鍵は同じだが、記述形式が異なる。
パターン1の場合、Kddns.+157+55555.keyも存在しないといけない。
updateをするときTSIGは共有鍵方式の認証なので、公開鍵は使っていない(と思う)。 *.keyがなぜ必要かは、いまいち理解できていない。
自動的にSIG(0)を使っている?

7.更新の確認

更新がsuccessしたら、登録したホストがひけるか確認。

$ dig +dnssec @localhost host1.beta.alpha. a

エラーなく、無事にAレコードがひけたら成功。



sylphide_ffr31mr at 17:25コメント(0)トラックバック(0) 
記事検索
最新コメント
livedoor プロフィール
月別アーカイブ
  • ライブドアブログ