Обзор:
У меня около дюжины установок WP, размещенных на Ubuntu 14.04 LTS с PHP 5.5.9 и Nginx 1.4.6. MySQL работает на альтернативном узле, а не в общедоступной сети.
Цель:
Чтобы каталоги и файлы каждой установки WP НЕ были доступны для чтения во всем мире. Если злонамеренный пользователь получает доступ к конкретной установке WP, я не могу позволить ему перейти к альтернативной установке WP и прочитать учетные данные БД.
Подробности:
Nginx работает как www-data. Для каждого виртуального хоста создается пользователь без оболочки. Каждый виртуальный хост поддерживает одну установку WP. Пулы PHP-FPM работают индивидуально для каждого пользователя / виртуального хоста. Пулы PHP-FPM подключаются к Nginx через socks, а не через loopback IP.
Читая следующее Wordfence статьи, я попытался установить права доступа к файлам следующим образом:
Файлы - 640
Справочники - 750
Когда я настраиваю разрешения как таковые, Nginx, работающий как www-data, больше не может правильно обращаться к файлам WP. Если я верну разрешения к 644 & 755, все работает как положено.
Сайты устанавливаются в следующей структуре:
/var/www/site1.com/public
/var/www/site2.com/public
/var/www/site3.com/public
и так далее.
Каждый каталог принадлежит соответствующему пользователю и группе пользователей. то есть:
site1-com: site1-com /var/www/site1.com
У нас был взломанный сайт WP, и они смогли загрузить на сервер скрипт файлового менеджера php. Насколько я понимаю, этот сценарий запускается пользователем www-data. (Проверено с ps aux
Если это правда, я подозреваю, что злоумышленник может получить доступ ко всем другим установкам WP через свой скрипт файлового менеджера php.
Как я могу улучшить настройки разрешений, чтобы усилить безопасность? Я открыт для всех предложений, даже если это означает перенастройку всего стека.
Заранее спасибо.