Apache設定 · 1 min read · Jan 01, 2026
CentOS 5.4でのmod_chrootを使用したApache2のChroot
CentOS 5.4でのmod_chrootを使用したApache2のChroot
バージョン 1.0
著者: Falko Timme
私をTwitterでフォローしてください
このガイドでは、CentOS 5.4システムでApache2とmod_chrootを設定する方法を説明します。mod_chrootを使用すると、Apache2を安全なchroot環境で実行でき、Apache2やインストールされたWebアプリケーションの脆弱性を悪用しようとする侵入試行に対してサーバーをより安全に保つことができます。
これがあなたにとって機能するという保証はありません!
1 前提条件
CentOS 5.4システムが稼働しており、Apache2が動作していることを前提としています。例えば、このチュートリアルに示されているように: 完璧なサーバー - CentOS 5.4 x86_64 [ISPConfig 2]。さらに、/var/wwwディレクトリ内に1つ以上のWebサイトが設定されていることを前提としています(例えば、ISPConfigを使用している場合)。
2 mod_chrootのインストール
CentOS 5.4用のmod_chrootパッケージはないため、私たち自身でビルドする必要があります。まず、必要なパッケージをインストールします:
yum groupinstall 'Development Tools'yum groupinstall 'Development Libraries'yum install httpd-devel次に、以下のようにmod_chrootをビルドします:
cd /tmp
wget http://core.segfault.pl/~hobbit/mod_chroot/dist/mod_chroot-0.5.tar.gz
tar xvfz mod_chroot-0.5.tar.gz
cd mod_chroot-0.5
apxs -cia mod_chroot.cその後、Apacheを再起動します:
/etc/init.d/httpd restart3 Apacheの設定
/var/wwwディレクトリをchroot監獄を含むディレクトリとして使用したいと思います。CentOSのApacheはPIDファイル/var/run/httpd.pidを使用します。Apacheが/var/wwwにchrootされると、/var/run/httpd.pidは/var/www/var/run/httpd.pidに変換されます。したがって、今すぐそのディレクトリを作成します:
mkdir -p /var/www/var/run
chown -R root:apache /var/www/var/run次に、Apacheに/var/wwwをchrootディレクトリとして使用することを伝えなければなりません。/etc/httpd/conf/httpd.confを開き、PidFile行のすぐ下にChrootDir /var/www;という行を追加します。また、PidFile run/httpd.pid行をコメントアウトし、PidFile /var/run/httpd.pidという行を追加します:
vi /etc/httpd/conf/httpd.conf| [...] # # PidFile: サーバーが起動するときにプロセス識別番号を記録するファイル # #PidFile run/httpd.pid PidFile /var/run/httpd.pid ChrootDir /var/www [...] |
次に、ドキュメントルートが変更されたことをvhostsに伝える必要があります(例えば、DocumentRoot /var/wwwはDocumentRoot /に変換されます)。これを行うには、各vhostのDocumentRootディレクティブを変更するか、より簡単に、ファイルシステムにシンボリックリンクを作成します。
3.1 最初の方法: DocumentRootの変更
DocumentRoot /var/wwwを持つvhostがあると仮定します。vhostの設定を開き、DocumentRoot /var/wwwをDocumentRoot /に変更する必要があります。それに応じて、DocumentRoot /var/www/web1/webはDocumentRoot /web1/webに変換されます。もしこの方法を使用したい場合は、すべてのvhostのDocumentRootを変更する必要があります。
3.2 2番目の方法: ファイルシステムにシンボリックリンクを作成
この方法は簡単です。一度だけ行えばよく、vhostの設定を変更する必要がありません。/var/www/var/wwwから/var/wwwへのシンボリックリンクを作成します:
mkdir -p /var/www/var
cd /var/www/var
ln -s ../../ www最後に、Apacheを停止し、/var/run/httpd.pidから/var/www/var/run/httpd.pidへのシンボリックリンクを作成し、再度起動します:
/etc/init.d/httpd stopln -sf /var/www/var/run/httpd.pid /var/run/httpd.pid
/etc/init.d/httpd startこれで完了です。以前と同様にWebページを呼び出すことができ、静的HTMLファイルまたはmod_phpを使用している限り、問題なく提供されるはずです。

CGIを使用している場合(例: Perl、suPHP、Rubyなど)、インタープリター(例: /usr/bin/perl、/usr/sbin/suphpなど)をインタープリターに必要なすべてのライブラリとともにchroot監獄にコピーする必要があります。必要なライブラリについては、lddコマンドで確認できます。例えば:
ldd /usr/sbin/suphp[server2:/var/www/web1/log]# ldd /usr/sbin/suphp
linux-gate.so.1 => (0xffffe000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e34000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e0f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e03000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cd2000)
/lib/ld-linux.so.2 (0xb7f23000)
[server2:/var/www/web1/log]#すべての必要なファイルをコピーしたが、ページがまだ動作しない場合は、Apacheのエラーログを確認する必要があります。通常、問題の場所を教えてくれます。また、http://core.segfault.pl/~hobbit/mod_chroot/caveats.htmlを読んで、既知の問題と解決策を確認してください。
4 リンク
- mod_chroot: http://core.segfault.pl/~hobbit/mod_chroot/
- Apache: http://httpd.apache.org/
- CentOS: http://www.centos.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。