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

Защита php на общем apache

Я собираюсь установить apache + php на сервер, где два пользователя, A и B, развернут свой веб-сайт. Я пытаюсь добиться изоляции пространства пользователей по соображениям безопасности: то есть скрипты с сайта A не должны иметь возможность читать файлы на сайте B.

Для этого я установил suphp. Файлы веб-сайта пользователя A принадлежат A: A с perm = 700, а файлы пользователя B принадлежат B: B с perm = 700. Suphp отлично работает, но apache жалуется на разрешения на чтение .htaccess.

Как я могу позволить apache читать .htaccess в каждом каталоге A и B, сохраняя изоляцию между сайтом A и сайтом B? Я играл с правами собственности (group = www-data) и разрешениями (750), но не нашел способа сохранить предоставленную изоляцию. Любая идея?

Может быть, запустив apache от имени root, но есть ли в этом случае недостатки?

Что ж, я решил.

Домашние каталоги: perm = 750, owner = A: www-data (или B: www-data). Внутри домов все каталоги и файлы принадлежат A: A (или B: B) с perm = 644 или 755 для dir. При этом apache, работающий как www-data, всегда может читать .htaccess во всех каталогах, в то время как пользователь A не может читать какое-либо содержимое пользователя B, поскольку его домашний каталог равен 750, то есть 0 для A.

Спасибо за предоставленные предложения; они полезны для повышения безопасности

В качестве примечания, чтобы сделать это еще более строгим, вы можете добавить следующее:

disable_functions = “apache_child_terminate, apache_setenv, define_syslog_variables,    escapeshellarg, escapeshellcmd, eval, exec, fp, fput, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, highlight_file, ini_alter, ini_get_all, ini_restore, inject_code, mysql_pconnect, openlog, passthru, php_uname, phpAds_remoteInfo, phpAds_XmlRpc, phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode” 

в: /etc/php5/apache2/conf.d/disable_functions.ini

http://forums.eukhost.com/f42/disables-dangerous-php-functions-6020/

Надеюсь это не до оффтопа.