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

6. 基本的なセキュリティオプション

By Jamie Norrish

問題を避けるためのオプション設定

いくつか簡単な作業を行えば、サーバをより安全にでき、 またサーバの負荷を低減できます。 ここで紹介する内容は出発点に過ぎません。 セキュリティのことを考えるなら (考えるべきです)、 ネット上にある他のリソースにあたってください ( 最後の章をご覧ください)。

以下の指定は named.conf に行います。 これらの指定をこのファイルの options の内部に書くと、 このファイルでリストされたすべてのゾーンに適用されます。 特定の zone エントリの内部に書くと、 そのゾーンだけに適用されます。 zone 内部に書かれたエントリは options に書かれたエントリよりも優先されます。

6.1 ゾーン転送の制限

スレーブサーバがドメインに対する問合わせに応えるには、 プライマリサーバからゾーンの情報を転送してくる必要があります。 しかしスレーブサーバ以外のホストには、この転送の必要はないはずです。 ですからゾーン転送は allow-transfer オプションを使って制限しましょう。 例えば ns.friend.bogus の IP アドレスである 192.168.1.4 と、 それからデバッグ用の自分自身を追加するならば:


zone "linux.bogus" {
      allow-transfer { 192.168.1.4; localhost; };
};

ゾーン転送を制限すれば、外部の人々から見えるのは、 彼らが直接尋ねたホストに関する内容だけに限られます。 DNS 設定の詳細全体を問合わせることはできなくなるのです。

6.2 不正利用から守る

まず、内部ネットワークとローカルのマシンからのものをのぞき、 あなたの管理するドメイン以外への問合わせは禁止しましょう。 これは、 悪意を持ってあなたの DNS サーバを利用しようとする試みを禁止するだけでなく、 本来不必要な問合わせを減らします。


options {
      allow-query { 192.168.196.0/24; localhost; };
};

zone "linux.bogus" {
      allow-query { any; };
};

zone "196.168.192.in-addr.arpa" {
      allow-query { any; };
};

さらに内部/ローカルからのものを除き、再帰的な問合わせも禁止します。 これによりキャッシュ汚染攻撃 (cache poisoning attack: 間違ったデータをサーバに送りつけること) の危険性が減らせます。


options {
        allow-recursion { 192.168.196.0/24; localhost; };
};

6.3 named を root 以外で実行する

named を root 以外から実行するのは良い考えです。 破られたときに、クラッカーに奪われる権限を減らすことが出来ますから。 まず named を動作させるユーザとグループを作り、 次に named を起動している init スクリプトを修正します。 新しく作ったユーザ名とグループ名を、 named の -u フラグと -g フラグに指定します。

例えば Debian GNU/Linux 2.2 なら、 /etc/init.d/bind スクリプトを以下の行のように修正します (ユーザ named、グループ named はあらかじめ作成しておきます):


start-stop-daemon --start --quiet --exec /usr/sbin/named -- -u named -g named

Red Hat や他のディストリビューションでも同様にできるはずです。 Dave Lugo は、二つの chroot を用いたセキュアな設定を http://www.etherboy.com/dns/chrootdns.html で解説しています。きっと興味を持たれる読者が多いでしょう。


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