GNU/Linux >> Linux の 問題 >  >> Debian

Debian8でmod_unixdを使用してApache2.4をChrootする(Jessie)

このガイドでは、DebianJessieシステムでApache2.4を使用してmod_unixdを設定する方法について説明します。 mod_unixdを使用すると、安全なchroot環境でApacheを実行し、ApacheまたはインストールされているWebアプリケーションの脆弱性を悪用しようとする侵入の試みに対するサーバーの脆弱性を軽減できます。モジュールmod_unixdは、古いapache2.2で使用されていたmod_chrootモジュールの代わりです。

1予備メモ

Apacheが動作しているDebian8システムが実行されていることを前提としています。このチュートリアルに示されているように:Apache 2、PHP 5、MariaDBを使用したDebian 8JessieLAMPサーバーチュートリアル。それに加えて、/ var / wwwディレクトリ内に1つ以上のWebサイトが設定されていることを前提としています(たとえば、ISPConfigを使用している場合)。

ここで使用するサーバーのIPアドレスは192.168.1.100です。 およびホスト名server1.example.com 。これらの値は、チュートリアルで使用されているサーバーのIPアドレスとホスト名に置き換えてください。

2Apacheの構成

Apache 2.4でChroot関数を提供するapacheモジュールmod_unixdは、Apacheコアモジュールの一部であり、Debian 8のApacheバイナリに静的にコンパイルされるため、使用するために追加のソフトウェアをインストールする必要はありません。

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

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

次に、chrootディレクトリとして/ var/wwwを使用することをApacheに通知する必要があります。 /etc/apache2/apache2.confを開き、PidFile行のすぐ下にChrootDir行を追加します。

nano /etc/apache2/apache2.conf
[...]
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
ChrootDir /var/www
[...]

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

2.1最初の方法:DocumentRootを変更する

DocumentRoot / var/wwwを持つ仮想ホストがあると仮定しましょう。次に、その仮想ホストの仮想ホスト構成を開き、DocumentRoot / var/wwwをDocumentRoot/に変更する必要があります。したがって、DocumentRoot / var / www / web1/webはDocumentRoot/web1/webなどに変換されます。この方法を使用する場合は、すべての仮想ホストのDocumentRootを変更する必要があります。

この方法は、1回だけ実行する必要があり、vhost構成を変更する必要がないため、より簡単です。 / var / www / var/wwwから/var/ www:

を指すシンボリックリンクを作成します
mkdir -p /var/www/var
cd /var/www/var
ln -s ../../ www

最後に、Apacheを停止し、/ var / run / apache2.pidから/var/www/var/run/apache2.pidへのシンボリックリンクを作成して、再開する必要があります。

service apache2 stop
ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid
service apache2 start

それでおしまい。これで、以前と同じようにWebページを呼び出すことができ、静的HTMLファイルであるかmod_phpを使用している限り、問題なく提供されるはずです。

これをphpinfo()ページでテストします。デフォルトのWebサイトのドキュメントルートにnanoを含む新しいinfo.phpファイルを開きます:

nano /var/www/html/info.php

次のコンテンツを追加します:

<php
phpinfo();

ファイルを保存し、サーバーのホスト名またはIPアドレスをブラウザーで開き、続いて/info.phpを開きます。例:

http://192.168.1.100/info.php

PHPが正しく機能している場合、次のページが表示されます。

これまでのところ良いですが、Apacheが本当​​にchrootされているかどうかをどうやって知ることができますか? chrootの外部にあるファイルにアクセスしてみましょう。たとえば、ここでは/ etc/hostsを使用します。

nano /var/www/html/testchroot.php

このコンテンツで:

<?php
$var = file_get_contents('/etc/hosts');
echo 'The content of /etc/hosts is: <br />' . $var;

ブラウザでテストファイルのURLを開きます。結果は次のとおりです。

ご覧のとおり、このPHPスクリプトから/ etc/hostsファイルのコンテンツにアクセスすることはできなくなりました。

テストファイルが不要になった場合は削除してください:

rm /var/www/html/testchroot.php
rm /var/www/html/info.php

CGIを使用している場合、例: Perl、Rubyなどの場合は、インタプリタ(/ usr / bin / perlなど)を、インタプリタに必要なすべてのライブラリと一緒にchrootjailにコピーする必要があります。必要なライブラリについては、lddコマンドで確認できます(例:

)。
ldd /usr/bin/perl
[email protected]:/var/www/html# ldd /usr/bin/perl
linux-vdso.so.1 (0x00007ffe951f4000)
libperl.so.5.20 => /usr/lib/x86_64-linux-gnu/libperl.so.5.20 (0x00007f1dafe54000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1dafc50000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1daf94f000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1daf732000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1daf387000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f1daf150000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1db0214000)
[email protected]:/var/www/html#

または、jailkitツールを使用してjail環境を構築します。必要なすべてのファイルをコピーしてもページが機能しない場合は、Apacheエラーログ/var/log/apache2/error.logを確認する必要があります。 。通常、問題がどこにあるかを教えてくれます。

  • mod_unixd:https://httpd.apache.org/docs/2.4/mod/mod_unixd.html
  • Apache:http://httpd.apache.org/
  • Debian:http://www.debian.org/

Debian
  1. Debian8でmod_pagespeedとMemcachedを使用してApacheを高速化する

  2. Debian 8(Jessie)にLighttpdを使用してWebDAVをインストールする方法

  3. Ubuntu/Debianでmod_fcgidを使用してApacheとPhpをセットアップします

  1. Debian 8でMySQLを使用してマスターマスターレプリケーションを設定する(Jessie)

  2. Debian 9にApacheを使用してphpMyAdminをインストールします-ステップバイステップのプロセス?

  3. Apache を使用して Debian 11 に phpMyAdmin をインストールする

  1. Debian9でApacheを使用してphpMyAdminをインストールして保護する方法

  2. Debian9でLetsEncryptを使用してApacheを保護する

  3. Debian10でLetsEncryptを使用してApacheを保護する