By Jamie Norrish
問題を避けるためのオプション設定
いくつか簡単な作業を行えば、サーバをより安全にでき、 またサーバの負荷を低減できます。 ここで紹介する内容は出発点に過ぎません。 セキュリティのことを考えるなら (考えるべきです)、 ネット上にある他のリソースにあたってください ( 最後の章をご覧ください)。
以下の指定は named.conf
に行います。
これらの指定をこのファイルの options
の内部に書くと、
このファイルでリストされたすべてのゾーンに適用されます。
特定の zone
エントリの内部に書くと、
そのゾーンだけに適用されます。
zone
内部に書かれたエントリは
options
に書かれたエントリよりも優先されます。
スレーブサーバがドメインに対する問合わせに応えるには、
プライマリサーバからゾーンの情報を転送してくる必要があります。
しかしスレーブサーバ以外のホストには、この転送の必要はないはずです。
ですからゾーン転送は
allow-transfer
オプションを使って制限しましょう。
例えば ns.friend.bogus の IP アドレスである
192.168.1.4 と、
それからデバッグ用の自分自身を追加するならば:
zone "linux.bogus" { allow-transfer { 192.168.1.4; localhost; }; };
ゾーン転送を制限すれば、外部の人々から見えるのは、 彼らが直接尋ねたホストに関する内容だけに限られます。 DNS 設定の詳細全体を問合わせることはできなくなるのです。
まず、内部ネットワークとローカルのマシンからのものをのぞき、 あなたの管理するドメイン以外への問合わせは禁止しましょう。 これは、 悪意を持ってあなたの 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; }; };
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 で解説しています。きっと興味を持たれる読者が多いでしょう。