ローカル開発ボックスに、FastCGI (mod_fastcgi)、suExec、PHP を備えた Apache をインストールしました。1 つの問題を除いて、完璧に動作しています。
ユーザーが 2 人いるとします。
user1 - /home/user1/public_html
user2 - /home/user2/public_html
設定に重大なセキュリティホールを発見しました。user2 の Web ルートのファイルを user1 ファイルに含めることができます。どうすれば防げますか? 何かヒントはありますか?
php-cgi
プロセスは正しいユーザーで実行されています。
答え1
base_path
VirtualHost 内で設定することをお勧めします:
php_admin_value open_basedir /usr/local/www/sixeightzero
答え2
目的がユーザーの名前でPHPを実行し、それらを分離することである場合は、apache2-mpm-itk、fast-cgi よりもはるかに簡単に導入でき、うまく機能します。
使用するには、仮想ホストの設定に次の行を追加するだけです。
AssignUserId someuser somegroup
必要に応じて、MaxClientsVHost と NiceValue を設定することもできます。
答え3
これを正しく行う唯一の方法は、あるユーザーが別のユーザーのホームディレクトリからファイルを読み取ることを禁止し、Web サーバーでは読み取り可能にしておくことです。
これは次のようにして実現できます (例):
ACL オプションを使用してファイルシステムをマウントします。
mount -o acl /dev/sda /home
Web サーバーにアクセスを許可します:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
所有者に読み取りを許可する:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2