Назад | Перейти на главную страницу

Apache - suExec - FastCGI - PHP = проблема безопасности

Я установил Apache с FastCGI (mod_fastcgi), suExec и PHP в свой локальный блок разработки. Работает отлично, кроме одного.

Допустим, у меня есть два пользователя:

user1 - /home/user1/public_html
user2 - /home/user2/public_html

Я обнаружил серьезную дыру в безопасности в своей конфигурации: я могу включить файл из корневого веб-каталога user2 в файл user1. Как предотвратить? Какие-нибудь советы?

php-cgi процесс выполняется под правильным пользователем.

Единственный способ сделать это правильно - запретить одному пользователю читать файлы из домашнего каталога другого пользователя, но оставить их доступными для чтения веб-серверу.

Вы можете сделать это (пример):

смонтировать файловую систему с параметрами acl: mount -o acl /dev/sda /home

Разрешите веб-серверу доступ к нему:

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

Если цель состоит в том, чтобы запустить php от имени пользователей, чтобы разделить их, попробуйте apache2-mpm-itk, его гораздо проще развернуть, чем fast-cgi, и он отлично работает.

Для использования вам нужно только добавить эту строку в конфигурацию виртуального хоста:

AssignUserId someuser somegroup

Вы также можете установить MaxClientsVHost и NiceValue, если хотите.

Я предлагаю вам установить base_path внутри вашего VirtualHost:

php_admin_value open_basedir /usr/local/www/sixeightzero