Apache設定 · 1 min read · Dec 30, 2025
OpenSUSE 12.2でのmod_chrootを使用したApache2のChroot
OpenSUSE 12.2でのmod_chrootを使用したApache2のChroot
バージョン 1.0
著者: Falko Timme
Twitterでフォローしてください
このガイドでは、OpenSUSE 12.2システム上でApache2とmod_chrootを設定する方法を説明します。mod_chrootを使用すると、Apache2を安全なchroot環境で実行でき、Apache2やインストールされたWebアプリケーションの脆弱性を悪用しようとする侵入試行に対してサーバーをより安全に保つことができます。
これがあなたにとって機能するという保証はありません!
1 前提条件
稼働中のOpenSUSE 12.2システムがあり、Apache2が動作していることを前提としています。それに加えて、/srv/wwwディレクトリ内に1つ以上のWebサイトが設定されていることを前提としています(例: ISPConfigを使用している場合)。
2 mod_chrootのインストール
OpenSUSE 12.2用のmod_chrootパッケージは存在しないため、私たち自身でビルドする必要があります。まず、必要なパッケージをインストールします:
zypper install libgcc glibc-devel gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim apache2-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
apxs2 -cia mod_chroot.cその後、Apacheを再起動します:
systemctl restart apache2.service3 Apacheの設定
/srv/wwwディレクトリをchroot監獄を含むディレクトリとして使用したいと思います。OpenSUSEのApacheはPIDファイル/var/run/httpd2.pidを使用します。Apacheが/srv/wwwにchrootされると、/var/run/httpd2.pidは/srv/www/var/run/httpd2.pidに変換されます。したがって、今そのディレクトリを作成します:
mkdir -p /srv/www/var/run
chown -R root:www /srv/www/var/run次に、Apacheに/srv/wwwをchrootディレクトリとして使用することを伝える必要があります。/etc/apache2/httpd.confを開き、Include /etc/apache2/sysconfig.d/loadmodule.confの行のすぐ下にChrootDir /srv/www;という行を追加し、
vi /etc/apache2/httpd.conf| [...] # generated from APACHE_MODULES in /etc/sysconfig/apache2 Include /etc/apache2/sysconfig.d/loadmodule.conf ChrootDir /srv/www [...] # forbid access to the entire filesystem by default |
次に、ドキュメントルートが変更されたことをvhostsに伝える必要があります(たとえば、DocumentRoot /srv/wwwはDocumentRoot /に変換されます)。これを行うには、各vhostのDocumentRootディレクティブを変更するか、より簡単には、ファイルシステムにシンボリックリンクを作成します。
3.1 最初の方法: DocumentRootの変更
DocumentRoot /srv/wwwのvhostがあると仮定します。そのvhostのvhost設定を開き、DocumentRoot /srv/wwwをDocumentRoot /に変更する必要があります。それに応じて、DocumentRoot /srv/www/web1/webはDocumentRoot /web1/webに変換されるなどです。この方法を使用する場合は、すべてのvhostのDocumentRootを変更する必要があります。
3.2 2番目の方法: ファイルシステムにシンボリックリンクを作成
この方法は簡単です。一度だけ行えばよく、vhost設定を変更する必要がありません。/srv/www/srv/wwwから/srv/wwwへのシンボリックリンクを作成します:
mkdir -p /srv/www/srv
cd /srv/www/srv
ln -s ../ www最後に、Apacheを停止し、/var/run/httpd2.pidから/srv/www/var/run/httpd2.pidへのシンボリックリンクを作成し、再度起動します:
systemctl stop apache2.serviceln -sf /srv/www/var/run/httpd2.pid /var/run/httpd2.pid
systemctl start apache2.serviceこれで完了です。以前と同様にWebページを呼び出すことができ、静的HTMLファイルまたはmod_phpを使用している限り、問題なく提供されるはずです。
CGIを使用している場合(例: Perl、suPHP、Rubyなど)、インタープリター(例: /usr/bin/perl、/usr/sbin/suphpなど)をインタープリターに必要なすべてのライブラリと共にchroot監獄にコピーする必要があります。必要なライブラリについては、lddコマンドを使用して確認できます。例えば:
ldd /usr/sbin/suphpserver2:/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/
- OpenSUSE: http://www.opensuse.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。