
第7回 Dynamic DNSの基礎とnsupdateコマンド
鶴長 鎮一
2003/7/8
Dynamic DNSの動作確認とセキュリティ対策
■/var/log/messagesの確認
デバッグ情報を表示させることで、リアルタイムにupdateの正否を確認できますが、サーバ側の/var/log/messagesでも状況を把握できます。
Jun 30 01:12:30 host named[XXXXX]: client 192.168.20.21#40865: update 'example.jp/IN' denied |
| ACLなどでupdate拒否された例 |
Jul 1 00:31:13 host named[XXXXX]: client 192.168.20.21#41321: updating zone 'example.jp/IN': adding an RR |
| updateに成功した例。続けてjnlファイルが作成され、差分ゾーン転送が実行されている |
Jul 1 01:09:54 host named[XXXXX]: client 192.168.20.21#41323: updating zone 'example.jp/IN': update failed: 'name in use' prerequisite not satisfied (NXDOMAIN) |
| prereqで設定した前提条件によるupdateが実行されなかった例 |
ログを確認していると、named起動時に次のような行が記録されている場合があります。
Jun 30 15:40:11 host named[XXXXX]: zone 'example.jp' allows updates by IP address, which is insecure |
これは、IPアドレスを基にした規制では不十分であるという警告です。これに対しては、TSIGを用います。
■TSIG(Transaction Signature)の利用
TSIGは、すでに第5回で登場しています。第5回ではゾーン転送時のセキュアな手段として紹介しましたが、ここでも威力を発揮します。
設定作業は第5回と同じように行います。まず、dnssec-keygenコマンドで共有鍵を作成します。作業するのは、マスター・ゾーンサーバ側、nsupdateを実施するクライアント側のどちらでも構いません。
# /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n HOST example.jp |
| 注:コマンドパスおよびexample.jpは、環境に応じて書き換えてください。 |
「key」「private」といった拡張子を見ると、公開鍵暗号方式が使用されているように思えますが、ここではHMAC-MD5を使用しており、2つのファイルの中に記載されるパスフレーズは同じものです。以下のnamed.confの設定ではKexample.jp.+157+01798.keyから鍵を抽出していますが、Kexample.jp.+157+01798.privateを使っても同じになります。
$ more Kexample.jp.+157+01798.key |
次に、生成されたファイルから共有鍵(上の赤字の個所)を抜き出し、named.confに埋め込みます。
key "example.jp" { |
| /etc/named.conf |
named.confの変更を有効にするために、namedプロセスの再起動やrndcコマンドでreloadを実行しましょう。
次に、nsupdateを行うクライアント側の設定です。先ほど作成したファイルのうち、どちらか1つをクライアント側にコピーしておきます。
$ /usr/bin/nsupdate -k ./Kexample.jp.+157+24115.key |
| 注:コマンドパスおよび鍵ファイルへのパスは環境に応じて書き換えてください。 |
前述のとおり、公開鍵/秘密鍵のような区別がないため、.privateファイルでも同じようにnsupdateを実行できます。
$ /usr/bin/nsupdate -k ./Kexample.jp.+157+24115.private |
これで、「allows updates by IP address, which is insecure」と/var/log/messagesに警告が表示されることはなくなります。残念なのは、TSIG署名とIP ACLによる制限でand条件を掛けられないことです。TSIG署名かIP ACLどちらかの条件を満たせばupdateが可能なため、「TSIG署名かつIP ACL」のような制限を掛けることはできません。
■update-policyの利用
BIND 9では、allow-updateだけではなくupdate-policyを利用することができます。allow-updateはゾーンそのものの許可の有無を設定するものでしたが、「Aレコードだけupdateさせたい」「MXレコードは変えさせない」など、update-policyを利用すればレコードの種類ごとにセキュリィティポリシーを設定できます。
key "example.jp" { |
| named.conf |
update-policyには、次のような指定を行います。
grant keyの名前 nameタイプ name (type) |
| 許可する場合 |
deny keyの名前 nameタイプ name (type) |
| 許可しない場合 |
nameタイプには、次のものを使用します。
| name | 更新を行うFQDNホスト名がnameと同じ場合 |
| subdomain | 更新を行うFQDNホスト名がnameをドメインの一部に持つとき |
| wildcard | 更新を行うFQDNホスト名がnameのワイルドカード指定にマッチする場合 |
| self | 更新を行うFQDNホスト名が「keyの名前」と同じ場合(後ろのname指定は無視されるが、省略はできない) |
例に使用した、
grant example.jp wildcard *.example.jp. A; |
は、「example.jp.」にマッチするFQDNホスト名のupdateで、かつAレコードを登録する場合のみ許可されることになります。この設定であれば、MXが書き換えられて見当外れのサーバにメールが配送されたり、NSが書き換えられてしまうなどのトラブルを未然に防ぐことができます。仮に、CNAMEやMXなどのAレコード以外の登録を行おうとすると、
Jul 2 04:31:31 host named[XXX]: client 127.0.0.1#1046: updating zone 'example.jp/IN': update failed: rejected by secure update (REFUSED) |
のような警告が/var/log/messagesに記録されます。
■jnlファイルとトラブルの対処法
大変便利なupdateですが、ゾーンファイルを直接編集する際は、特に注意が必要です。BIND 9のDynamic DNSはupdate要求をjnlファイルにいったん蓄えるため、すぐにディスク上のゾーンファイルに反映させません。
namedプロセスが不意に停止しても、jnlファイルがあれば反映されていない情報も再度同期を試みます。しかし、手動でゾーンファイルを編集してしまうと、差分情報であるjnlファイルとの整合性が取れなくなり、/var/log/messagesに次のような警告が記録されます。
Jul 2 01:57:43 host named[XXXXX]: zone example.co.jp/IN: journal rollforward failed: journal out of sync with zone |
こうなってしまった場合は更新差分の反映をあきらめてjnlファイルを削除し、再度namedを起動します。
◆
今回は、BIND 9付属のnsupdateを使ってDynamic DNSの使い方を紹介しました。次回は、DHCPなどの動的IP割り当てサービスとの連携方法や、簡単なスクリプトを使った自家製Dynamic DNSサーバを構築します。
|
3/3
|
|
|
||||||
|
||||||
| 連載 実用 BIND 9で作るDNSサーバ |
| Linux Squareフォーラム サーバ構築・運用関連記事 |
| 連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
|
| 特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
|
| 連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
|
| 連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
|
| 連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
|
| 特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
