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

1. はじめに

この文書は Chroot-BIND 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 に出会ったことがあると思います。

chroot の処理は BIND 9 ではずっと簡単になったので、 この文書をちょっとずつ拡張することにして、 BIND のインストールにおける、 もっと一般的なコツなども含めるようにしました。 でも、この文書は BIND を安全にするための完全なるガイドではありません (し、そうするつもりもありません)。 この文書に書かれていることを行っただけでは、 まだネームサーバを安全にできたわけではないのですよ!

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-BIND.html です。

現在はこの文書の日本語版もあり、 中野武雄 nakano at apm.seikei.ac.jp が管理しています。 これは http://www.linux.or.jp/JF/JFdocs/Chroot-BIND-HOWTO.html から入手できます。

BIND は the Internet Software Consortiumhttp://www.isc.org/bind.html から入手できます。この文書の執筆時点での最新版は 9.2.0 です。 BIND 9 が使えるようになってからだいぶたち、 実際の業務に使っている人も多いようです。 しかし、より保守的な人たちは、まだ BIND 8 を使う方を好んでいるようです。 もし読者が後者に属するならば、 chroot の詳細については Chroot-BIND8 HOWTO (同じ場所にあります) の方を読んでください。でも、BIND 8 のほうが chroot をするには ずっと面倒であることもお忘れなく。

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

1.4 How?

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

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

1.5 おことわり

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

私の現在までに至る BIND の経験では、 Linux サーバにしかインストールを行っていません。 しかし、この文書の説明の大半は、 他の種類の UNIX にも容易に適用できるはずです。 私の気付いた違いについては、できるだけ記述するつもりです。 また、他のディストリビューションや他のプラットフォームを使っている 人たちからいくつか指摘を受けていますので、 それらもできるだけ含めるようにしました。

Linux を使っている人は、これらを試す前に、 使っているのが 2.4 カーネルであるかどうか確認する必要があります。 -u スイッチ (非 root ユーザで動作させる) には、 この新しいカーネルが必要です。


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