Задать вопрос

Как правильно настроить vsftpd на сервере Nginx + php-fpm?

Есть сайт на WordPress. У папок права 755, у файлов 644, владелец и группа www-data. Вроде все в норме.

Проблема с редактированием файлов по FTP. Есть, к примеру, пользователь user. Он состоит в группе www-data. Но получается, что у этому пользователю по ftp не изменить никак файлы из-за прав, доступен только просмотр файлов. Делаю его владельцем - теперь user имеет полный доступ к ftp. Но плагины WP не имеют необходимого доступа к файлам, а некоторые требуют доступ к ftp. Пробовал настраивать vsftpd с юзерлистом и без.

vsftpd.conf
nginx.conf
пример хоста

Подскажите, как поступить в данном случае?
Заранее спасибо за ответы.
  • Вопрос задан
  • 3958 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@xbox
ставьте права на файлы 640, на директории 750
владельцем user1, группа www-data
При этом nginx должен запускаться от пользователя www-data, а php-fpm от пользователя user1. По Ftp заходите от пользователя user1.
user1 в группу www-data добавлять не нужно.

Если у Вас несколько сайтов, то для второго сайта владельцем ставите user2, группу www-data, по ftp подключаетесь от user2.

Если сайтов несколько то для каждого настраивается свой пул php5-fpm, каждый из которых запускается от разных пользователей.

Результат: процессы php, а значит и WordPress будут иметь полный доступ к файлам только своего проекта и не будут иметь доступа к файлам соседних по VPS проектов. Nginx будет иметь доступ ко всем проектам только на чтение. По ftp каждый пользователь будет иметь полный доступ только к своим проектам. Лишние права доступа на файлы убраны. Если взломают один из сайтов VPS то хакер обычно получает права доступа того пользователя, от которого запущен пул php-fpm. (Взлом nginx маловероятен) Т.е. при взломе хакер получает полные права на один проект, но не может даже прочитать, а тем более записать в другой проект. Чтобы дополнительно обезопасить сервер, используйте chroot в настройках php5-fpm и ftp. Это очень сильно повышает безопасность. Но настройка chroot в php5-fpm обычно требует дополнительных танцев с бубном (изменение конфигов других сервисов, которые перестают работать из-за изменения путей и т.п.).

Я раньше легкомыслено относился к настройкам безопасности, пока случайнр не нашел на своем VPS в двух проектах одинаковый шел-скрипт. После того, как я понял, что это за скрпит, я его запустил (просто в браузере набрал адрес соответствующий) и реально обалдел. Шел-скрипт позволял легко ходить по всем папкам проектов (отдельным сайтам), расположенным на VPS, позволял произвольно записывать и удалять файлы в этих проектах, позволял заходить в корень файловой структуры, например в папку /etc и читать все конфиги в этой папке . Хоть конфиги были с доступом только на чтение, реально в них хранится куча конфиденциальной информации. Например, некоторые пароли стандартные сервисы в таких конфигах хранят в незашифрованном виде. Скрипт позволял выводить список запущенных процессов и произвольно убивать процессы, запущенные от того же пользователя и т.п. Кроме этого все основные способы, необходимые для поиска уязвимых мест и дельнейшего вредительства в скрипте автоматизированы. Т.е. через этот шел-скрипт во многих случаях мне было удобнее работать с сервером, чем через putty и winscp. И в дальнейшем этот шел-скрпит я использовал для тестирования безопасности каждого проекта. Т.е. кроме решения локальной задачи, я Вам рекомендую сразу в комплексе безопасность проверить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Ernillew
@Ernillew
Администрирую *nix-системы с 1997 года
pure-ftpd и виртуальный пользователь который будет матчится под реального от которого работает nginx.
Ответ написан
merryjane
@merryjane
Системный администратор
Можно заменить на proftpd.
Там можно создать виртуальных пользователей и переопределить им uid\gid на реальных (например www-data). Получится что у них будут такие же права как у nginx.
Настраивается это очень легко парой строчек в стандартном конфиге.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы