В настоящее время я использую nginx 1.0.11 и PHP-FPM. У каждого сайта есть собственный пользователь / группа, и их домашний каталог находится в /srv/www/...
. У меня есть пулы PHP-FPM, настроенные для работы в качестве пользователя и группы сайтов на отдельных портах (9001 для site1, 9002 для site2 ...). Помогает ли это с точки зрения безопасности?
nginx работает как www-data: www-data. В настоящее время, если у меня есть PHP-скрипт на site1 (/srv/www/site1.com/www/public_html/script.php)
я могу это сделать include $_SERVER['DOCUMENT_ROOT'] . "/../../../site2.com/www/public_html/index.html";
и прочтите файлы этого сайта.
Как я могу предотвратить это? Я заглянул в chroot
но в домашнем каталоге каждого сайта есть символические ссылки на /dotfiles
которые мне нужно сохранить, и я предполагаю, что nginx потребуется доступ к журналам на /var/logs/nginx/...
Посмотри на open_basedir. Есть несколько известных способов обойти это, но их можно предотвратить в config.
Почему в точечных файлах используются символические ссылки вместо жестких?