chroot で動作させるようにした方がいいという事は、BINDだけに限らず多くのソフトウェアで共通することです。chroot
とは、Linux システムファイルの中に、BINDだけが使うさらに小さなファイルシステムを仮想的に作ることです。BINDが使用するルートディレクトリを/var/named
以下に設定することで、万が一攻撃を受けて侵入された場合に、被害を/var/named
の中だけに食い止めることができるようになります。chroot にすることで、/var/named
より上位の階層へアクセスすることはできなくなりますので、よりセキュアな環境を構築することができます。
|
|
まず、自分がchroot設定されているのどうかすらわからないという方は以下のコマンドを実行してください。赤文字で記したように
-u named とだけしか表示されていなければ現在、chroot されていないことになります。
# ps aux | grep
named
named 643 0.0 0.9 30268 2336 ? S Jan05 0:07
/usr/sbin/named -u
named |
|
■/etc/sysconfig/named の編集
chrootを利用するには、/etc/sysyconfig/named の以下の行を編集します。コメントを削除し、ROOTDIRを有効にします。chrootする際のディレクトリはどこでも構いませんが、/var/named
には最初からゾーンファイルが格納されているのでこちらのほうが楽でしょう。これによって、/var/named
配下が「/」ディレクトリになります。
■/etc/named.conf のコピー
次に、/var/named 以下にディレクトリを作成します。作成したディレクトリ内にブートファイルとなるnamed.conf
を移動します。/etc/named.conf は必要がなくなりますが、スタートアップ時にファイルの存在だけは確認するので削除してはいけません。混乱を避けるためにも、/etc
以下には、空のファイルとしてnamed.conf を作成しておきます。
# mkdir /var/named/etc
# mkdir -p /var/named/var/run/named
# mv /etc/named.conf /var/named/etc/
# touch /etc/named.conf # 空のファイル |
|
■rndc.key のコピー
なお、rndc を使っている方は、named.conf の他にrndc.key やrndc.conf
も/var/named/etc にコピーする必要があります。rndc.key って何?という方はここは飛ばして構いません。
# cp /etc/rndc.key
/etc/rndc.conf /var/named/etc |
|
chroot した結果、/var/named がルートディレクトリとなるため、named.conf の
directory
"/var/named"のパスを以下のように修正します。なお、ロギング機能を使っている方は、ログファイルを格納する位置も、/var/named
から見た相対パスで指定するようにしてください。
ユーザーID及びグループIDが、named のプロセスとして/var/named にアクセスするため、ディレクトリの所有権を
named に変更しておきます。
# chown -R named.named
/var/named
# chmod 700 /var/named
# ls -l /var | grep named
drwx------ 5 named named 4096 1月 7 17:05
named |
|
以上でchroot の設定は終了です。named の再起動後、chrootできているか ps で確認してみましょう。以下のように、-t
オプションを使って/var/named にchroot されていることがわかります。
# /etc/rc.d/init.d/named
restart
# ps aux | grep named
2952 ? S 18:21 0:00 /usr/sbin/named
-u named -t /var/named |
|
各ファイルが置かれているディレクトリをまとめると以下表のようになります。
|
パス |
存在するファイル |
|
/etc |
ダミーのnamed.conf |
|
/var/named |
ゾーンデータファイル |
|
/var/named/etc |
named.conf 、rndc.key、rndc.conf
|
|
/var/named/var/run/named |
named.pid |
|
■トラブルシューティング
ログに
/etc/rndc.key: permission denied と表示された場合は、rndc.key
の所有者がroot になっている可能性があるのでchown で所有者を named に変更してください。また、うまく起動できない場合は、named.conf
に記述されているパスが間違っている可能性があるのでもう一度確認してください。必ず、
/var/named
から見た相対位置 を指定するようにしてください。