次のページ 前のページ 目次へ

1. はじめに

この文書は Chroot-BIND8 HOWTO です。 最新版の置かれているマスターサイトは Where? を見てください。 読者は BIND (the Berkeley Internet Name Domain) の設定方法・利用方法を 既に知っているとして話を進めます。 知らない人は、まず DNS HOWTO を読むと良いでしょう。 またお使いの UNIX 系システムにおけるコンパイル・インストールについては、 読者は習熟しているものとします。

1.1 What?

この文書は、BIND のインストール時に取ることのできる、 付加的なセキュリティ対策について説明します。 まず、BIND を ``chroot jail'' の内部で動作させるよう 設定する方法について説明します。 すなわち、BIND は閉じ込められた小さなディレクトリツリーの 外部にあるファイルを見ることができなくなるのです。 また、BIND を非 root ユーザで実行させるような設定も行います。

chroot の背後にある考え方は、とても単純です。 BIND (あるいは他のプロセス) を chroot jail の内部で実行すると、 そのプロセスはファイルシステムのうち jail の内部しか見ることができなくなるのです。 例えば、この文書では、BIND を /chroot/named ディレクトリに chroot した状態で実行します。 BIND にとっては、このディレクトリの中身が / のように見えるのです。 このディレクトリの外部には一切アクセスできません。 公開システムに ftp したことのある人は、 おそらく既にこの chroot jail に出会ったことがあると思います。

1.2 Why?

なぜ BIND を chroot jail の内部で動作させると良いのでしょうか。 それは、仮に悪い奴が BIND の穴を使ってアクセスを得たとしても、 そのアクセスできる範囲を最小限に制限できるからです。 BIND を非 root ユーザ権限で動作させるのも同じ理由からです。

これは通常言われているセキュリティ対策 (最新版を使う、アクセス制限をする、など) の、 いわば「おまけ」とみなすべきで、 これを代替するものと考えてはいけません。

読者が DNS のセキュリティに興味をお持ちなら、 他の製品を調べてみるのも良いかもしれません。 BIND を StackGuard と共に構築すれば、きっと安全性をより向上させてくれるでしょう。 使い方は簡単です。普通の gcc と同じです。 また Dan Bernstein の書いた DNScache は、BIND の代わりに利用できる安全なソフトウェアです。 【訳注: djbdns に改名したようです】 Dan は qmail の著者でもあります。

1.3 Where?

この文書の最新版は、常に 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 Consortiumhttp://www.isc.org/bind.html から入手できます。この文書の執筆時点での最新版は 8.2.4 です。 BIND 9 が使えるようになってからだいぶたち、 実際の業務に使っている人も多いようです。 こちらでは chroot の処理がかなり簡単かつ見通し良くなっていますので、 そろそろアップグレードを考えてもいいかもしれません。 BIND 9 を使っている方は、 Chroot-BIND HOWTO をご覧になってください。 この文書と同じ場所にあるはずです。

8.2.3 より前のすべてのバージョンの BIND 8 には、 既知のセキュリティホールがあります。 必ず最新版を使うように、気をつけてください!

1.4 How?

私はこの文書を、 自分自身で chroot 環境な BIND をセットアップした経験に基づいて書きました。 私の場合は、既に BIND を (自分の Linux ディストリビューションの) パッケージ形式でインストールしてありました。 おそらく読者のほとんども同じでしょう。 ですので、ここでは既にインストール済みの BIND から 設定ファイルを移動して修正し、パッケージは削除して、 新しいのをインストールすることにします。 でもまだパッケージは削除しないでくださいね。 まずそこからいくつかファイルが必要になりますから。

まだ BIND をインストールしていない人でも、 この文書の方法を利用することはできます。 違いは、私が既存のファイルをコピーしてくるよう指示した部分で、 そのファイルをゼロから書き起こす必要がある、というだけです。 この際には DNS HOWTO が役に立つでしょう。

1.5 おことわり

これらの記述は私のシステムでは動作しました。 しかし読者のところでの結果は異なるかもしれません。 これは 1 つのアプローチに過ぎず、 同様の設定を行うにはいろいろな方法が有り得ます (一般的なアプローチはだいたい同じになるでしょうが)。 これは、私が試みた中で最初に動作したやり方だったので、 ここに書き記したにすぎません。

私の現在までに至る BIND の経験では、 Linux サーバにしかインストールを行っていません。 しかし、この文書の説明の大半は、 他の種類の UNIX にも容易に適用できるはずです。 私の気付いた違いについては、 できるだけ記述するつもりです。


次のページ 前のページ 目次へ