Apache設定 · 1 min read · Jan 02, 2026

Fedora 12でのmod_chrootを使用したApache2のChroot

Fedora 12でのmod_chrootを使用したApache2のChroot

バージョン 1.0
著者: Falko Timme
Twitterでフォローしてください

このガイドでは、Fedora 12システムでApache2とmod_chrootを設定する方法を説明します。mod_chrootを使用すると、Apache2を安全なchroot環境で実行でき、Apache2やインストールされたWebアプリケーションの脆弱性を悪用しようとする侵入試行に対してサーバーをより安全に保つことができます。

これがあなたにとって機能することを保証するものではありません!

1 前提条件

稼働中のFedora 12システムに動作するApache2があると仮定しています。例えば、このチュートリアルに示されているように: 完璧なサーバー - Fedora 12 x86_64 [ISPConfig 2]。さらに、/var/wwwディレクトリ内に1つ以上のWebサイトが設定されていると仮定します(例えば、ISPConfigを使用している場合)。

2 mod_chrootのインストール

Fedora 12用の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 restart

3 Apacheの設定

/var/wwwディレクトリをchroot監獄を含むディレクトリとして使用したいと思います。FedoraのApacheはPIDファイル/var/run/httpd/httpd.pidを使用します。Apacheが/var/wwwにchrootされると、/var/run/httpd/httpd.pidは/var/www/var/run/httpd/httpd.pidに変換されます。したがって、今そのディレクトリを作成します:

mkdir -p /var/www/var/run/httpd  
chown -R root:apache /var/www/var/run/httpd

次に、Apacheに/var/wwwをchrootディレクトリとして使用することを伝える必要があります。/etc/httpd/conf/httpd.confを開き、PidFile行のすぐ下にChrootDir /var/www;という行を追加します。また、PidFile run/httpd.pid行をコメントアウトし、PidFile /var/run/httpd/httpd.pidという行を追加します:

vi /etc/httpd/conf/httpd.conf

| [...] # # PidFile: サーバーが起動するときにプロセス識別番号を記録するファイル # #PidFile run/httpd.pid PidFile /var/run/httpd/httpd.pid ChrootDir /var/www [...] |

次に、ドキュメントルートが変更されたことをvhostsに伝える必要があります(例えば、DocumentRoot /var/wwwは現在DocumentRoot /に変換されます)。これを行うには、各vhostのDocumentRootディレクティブを変更するか、より簡単に、ファイルシステムにシンボリックリンクを作成します。


3.1 最初の方法: DocumentRootの変更

DocumentRoot /var/wwwのvhostがあると仮定しましょう。その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ディレクトリを削除し、/var/run/httpdから/var/www/var/run/httpdへのシンボリックリンクを作成し、再度起動します:

/etc/init.d/httpd stop
rm -fr /var/run/httpd  
ln -sf /var/www/var/run/httpd /var/run/httpd  
/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 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。