その名前が示すように、chroot 操作は、実行中のプロセスとその子プロセスの見かけのルート ディレクトリを変更します。 / 以外のルート ディレクトリでプログラム (プロセス) を実行できます。プログラムは、指定されたディレクトリ ツリーの外にあるファイルを参照したり、アクセスしたりすることはできません。
たとえば、プログラムを実行し、そのルート ディレクトリを /home/oracle/jail として指定できます。この場合、プログラムのルート ディレクトリは実際には /home/oracle/jail です。プログラムは、階層内でこのディレクトリより上のファイルを認識することも、アクセスすることもできません。この人工的なルート ディレクトリは、chroot 監獄と呼ばれます。その目的は、潜在的な攻撃者のディレクトリ アクセスを制限することです。 chroot jail は、特定のプロセスとそれが使用しているすべてのユーザー ID をロックダウンして、プロセスが実行されているディレクトリのみがユーザーに表示されるようにします。プロセスには、ルート ディレクトリで実行されているように見えます。
chroot Jail で DNS および FTP サービスを実行する
chroot jail を利用するために 2 つのサービスが設定されています。 DNS をセットアップして、named が刑務所で実行されるようにすることができます。 vsftpd FTP サーバーは、クライアントの chroot jail を自動的に開始できます。
chroot Jail の DNS
bind-chroot パッケージを使用すると、named を chroot 監獄で実行するように設定できます。このパッケージをインストールすると、/var/named/chroot ディレクトリが作成され、すべての BIND ファイルの chroot jail ディレクトリになります。
- /var/named ディレクトリは /var/named/chroot/var/named になります。
- /etc/named* ファイルは /var/named/chroot/etc/named* ファイルになります。
このパッケージをインストールすると、ROOTDIR シェル変数も /etc/sysconfig/named ファイルの /var/named/chroot に設定されます。 chroot jail で named を実行する利点は、ハッカーが BIND エクスプロイトを介してシステムに侵入した場合、システムの残りの部分へのハッカーのアクセスが chroot jail ディレクトリの下のファイルに分離されることです。
chroot Jail の FTP クライアント
デフォルトでは、匿名ユーザーは chroot 監獄に入れられます。匿名ユーザーが vsftpd サーバーにログインすると、ユーザーのホーム ディレクトリは /var/ftp になります。ただし、ユーザーに表示されるのは/.
だけです。たとえば、/var/ftp/upload という名前のディレクトリは、匿名ユーザーには /upload として表示されます。これにより、匿名ユーザーはディレクトリ階層の /var/ftp より上のファイルにアクセスできなくなります。
vsftpd サーバーにアクセスするローカル ユーザーは、ホーム ディレクトリに配置されます。 /etc/vsftpd/vsftpd.conf ファイルでオプションを有効にして、ローカル ユーザーを chroot 監獄に入れることができます。人工ルート ディレクトリはユーザーのホーム ディレクトリです。 vsftpd 構成ファイルには、ローカル ユーザー用の chroot jail を実装するための次のオプションがあります。
- chroot_list_enable
- chroot_local_user
- chroot_list_file
ローカル ユーザーが vsftpd サーバーにログインすると、chroot_list_enable ディレクティブがチェックされます。このディレクティブが YES に設定されている場合、サービスは /etc/vsftpd/chroot_list をチェックします ファイル (デフォルト) または chroot_list_file で指定された別のファイル
次に、別のディレクティブ chroot_local_user がチェックされます .このディレクティブが YES に設定されている場合、chroot_list chroot しないユーザーのリストになります。このディレクティブが NO に設定されている場合、ユーザーはホーム ディレクトリで chroot 監獄に入れられます。