■問題を解く鍵 【3】
【3】DNSサーバの最小権限での実行とルートディレクトリの変更方法
(1)非特権ユーザーでの実行
サーバプロセスをroot権限で実行するのは危険です。侵入者が不正な手段でroot権限を獲得した場合、ファイルシステムへの無制限のアクセスが可能となってしまいます。この危険を防ぐため、サーバプロセスnamedを、-uオプションにより非特権ユーザーを実効ユーザーに指定して起動することができます。
(例)実効ユーザーを非特権ユーザーnamedに指定して、サーバプロセスnamedを起動# name -u named # ps -ef | grep named UID PID PPID C STIME TTY TIME CMD named 15453 1 0 14:47 ? 00:00:00 /usr/sbin/named -u named |
(2)chroot
namedにオプション-tでディレクトリを指定すると、プロセス起動後にシステムコールchroot()を発行して、ルートディレクトリを-tで指定したディレクトリに変更します。このため、もし侵入者が不正な手段でnamedの権限を獲得しても、アクセスはchrootしたディレクトリ内に限定されるため、被害を最小限に食い止めることができます。
-tを使用する場合は、設定ファイルやDNSのゾーンファイルやデバイスファイルなど、起動後にアクセスするファイルはすべて、chrootしたディレクトリの下になければなりません。
CentOS 5.2の場合は、bind-chrootパッケージをインストールすると/var/named/chrootディレクトリ以下に必要なファイルが用意され、bindパッケージに含まれている/etc/sysconfig/namedファイルに、“ROOTDIR=/var/named/chroot”の記述があるため、“/etc/init.d/named start”コマンドを実行すると、namedは、"-t /var/named/chroot”のオプションを付けて起動されます。
# cat /etc/sysconfig/named ROOTDIR=/var/named/chroot # /etc/init.d/named start # ps -ef | grep named named 18255 1 0 00:54 ? 00:00:00 /usr/sbin/named -u named -t /var/named/chroot |
(1)BIND 9 Administrator Reference Manual
(2)dnssec-keygenコマンドのオンラインマニュアル(man dnssec-keygen) (3)rndcコマンドのオンラインマニュアル(man rndc) (注) (1)〜(3)は、CentOS 5.2では、bindパッケージに含まれています。 (4)RFC2535、RFC4034、RFC2845 |
Copyright © ITmedia, Inc. All Rights Reserved.