この文書は Chroot-BIND8 HOWTO です。 最新版の置かれているマスターサイトは Where? を見てください。 読者は BIND (the Berkeley Internet Name Domain) の設定方法・利用方法を 既に知っているとして話を進めます。 知らない人は、まず DNS HOWTO を読むと良いでしょう。 またお使いの UNIX 系システムにおけるコンパイル・インストールについては、 読者は習熟しているものとします。
この文書は、BIND のインストール時に取ることのできる、 付加的なセキュリティ対策について説明します。 まず、BIND を ``chroot jail'' の内部で動作させるよう 設定する方法について説明します。 すなわち、BIND は閉じ込められた小さなディレクトリツリーの 外部にあるファイルを見ることができなくなるのです。 また、BIND を非 root ユーザで実行させるような設定も行います。
chroot の背後にある考え方は、とても単純です。
BIND (あるいは他のプロセス) を chroot jail の内部で実行すると、
そのプロセスはファイルシステムのうち
jail の内部しか見ることができなくなるのです。
例えば、この文書では、BIND を /chroot/named
ディレクトリに
chroot した状態で実行します。
BIND にとっては、このディレクトリの中身が /
のように見えるのです。
このディレクトリの外部には一切アクセスできません。
公開システムに ftp したことのある人は、
おそらく既にこの chroot jail に出会ったことがあると思います。
なぜ BIND を chroot jail の内部で動作させると良いのでしょうか。 それは、仮に悪い奴が BIND の穴を使ってアクセスを得たとしても、 そのアクセスできる範囲を最小限に制限できるからです。 BIND を非 root ユーザ権限で動作させるのも同じ理由からです。
これは通常言われているセキュリティ対策 (最新版を使う、アクセス制限をする、など) の、 いわば「おまけ」とみなすべきで、 これを代替するものと考えてはいけません。
読者が DNS のセキュリティに興味をお持ちなら、 他の製品を調べてみるのも良いかもしれません。 BIND を StackGuard と共に構築すれば、きっと安全性をより向上させてくれるでしょう。 使い方は簡単です。普通の gcc と同じです。 また Dan Bernstein の書いた DNScache は、BIND の代わりに利用できる安全なソフトウェアです。 【訳注: djbdns に改名したようです】 Dan は qmail の著者でもあります。
この文書の最新版は、常に Linux/Open Source Users of Regina, Sask. の web サイトより入手できます。 http://www.losurs.org/docs/howto/Chroot-BIND8.html です。
現在はこの文書の日本語版もあり、
中野武雄 nakano at apm.seikei.ac.jp
が管理しています。
これは
http://www.linux.or.jp/JF/JFdocs/Chroot-BIND8-HOWTO.html
から入手できます。
BIND は the Internet Software Consortium の http://www.isc.org/bind.html から入手できます。この文書の執筆時点での最新版は 8.2.4 です。 BIND 9 が使えるようになってからだいぶたち、 実際の業務に使っている人も多いようです。 こちらでは chroot の処理がかなり簡単かつ見通し良くなっていますので、 そろそろアップグレードを考えてもいいかもしれません。 BIND 9 を使っている方は、 Chroot-BIND HOWTO をご覧になってください。 この文書と同じ場所にあるはずです。
8.2.3 より前のすべてのバージョンの BIND 8 には、 既知のセキュリティホールがあります。 必ず最新版を使うように、気をつけてください!
私はこの文書を、 自分自身で chroot 環境な BIND をセットアップした経験に基づいて書きました。 私の場合は、既に BIND を (自分の Linux ディストリビューションの) パッケージ形式でインストールしてありました。 おそらく読者のほとんども同じでしょう。 ですので、ここでは既にインストール済みの BIND から 設定ファイルを移動して修正し、パッケージは削除して、 新しいのをインストールすることにします。 でもまだパッケージは削除しないでくださいね。 まずそこからいくつかファイルが必要になりますから。
まだ BIND をインストールしていない人でも、 この文書の方法を利用することはできます。 違いは、私が既存のファイルをコピーしてくるよう指示した部分で、 そのファイルをゼロから書き起こす必要がある、というだけです。 この際には DNS HOWTO が役に立つでしょう。
これらの記述は私のシステムでは動作しました。 しかし読者のところでの結果は異なるかもしれません。 これは 1 つのアプローチに過ぎず、 同様の設定を行うにはいろいろな方法が有り得ます (一般的なアプローチはだいたい同じになるでしょうが)。 これは、私が試みた中で最初に動作したやり方だったので、 ここに書き記したにすぎません。
私の現在までに至る BIND の経験では、 Linux サーバにしかインストールを行っていません。 しかし、この文書の説明の大半は、 他の種類の UNIX にも容易に適用できるはずです。 私の気付いた違いについては、 できるだけ記述するつもりです。