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

Безопасные среды PHP с помощью PHP-FPM и SFTP

Я хотел бы настроить безопасную среду для небольшого количества ненадежных веб-сайтов PHP на сервере Debian. Сейчас все работает на одном и том же Apache2 с mod_php5 и vsftpd для доступа к административным файлам, так что есть возможности для улучшения.

Идея состоит в том, чтобы использовать nginx вместо apache, SFTP через OpenSSH вместо vsftpd и chrooted (в sshd_config), отдельных пользователей для каждого веб-сайта со своим собственным пулом процессов PHP. Все эти пользователи и nginx входят в одну группу.

Теперь теоретически я могу установить 700 разрешений для всех сценариев PHP и 750 для статических файлов, которые должен обслуживать nginx. Теоретически, если сайт скомпрометирован, все данные других пользователей в безопасности, верно?

Есть ли лучшие решения, которые требуют меньше времени на настройку и меньше памяти для каждого веб-сайта?

Ура

Использование директивы chroot внутри конфигурации php-fpm должно гарантировать достаточную безопасность; тогда, позволяя пользователям оставаться только внутри chrooted ftp (или scp), было бы достаточно с правильной конфигурацией Apache (не позволяйте символическим ссылкам вводить его в заблуждение!: P).
Тогда, имея все chrooted, должно быть достаточно: вам даже не нужно будет устанавливать права доступа для файлов, поскольку они не будут доступны для чтения из другой chrooted среды. :)
Возможны и другие решения, позволяющие избежать потребления памяти ... просто используйте кеширование с лаком или что-то подобное (я знаю, кстати, это будет не так просто настроить для недоверенных пользователей).

Принимая во внимание вашу желаемую конфигурацию дел для nginx, я только что наткнулся на отличный bash скрипт предназначен для использования на Debian и Ubuntu, который автоматизирует большинство задач, которые необходимо выполнить для достижения сценария настройки, аналогичного описанному вами.

Скрипт bash автоматизирует создание новых виртуальных хостов (серверных блоков) на nginx и позволяет запускать несколько пулов PHP. Все процессы PHP-FPM порождены из главного и для того, чтобы каждый пул работал от имени другого пользователя и / или группы. Каждый пул можно дополнительно изолировать, запустив его в среде chroot и переопределив значения php.ini по умолчанию для каждого пула.

Проверьте это на сайте разработчика:

http://www.sebdangerfield.me.uk/2012/05/nginx-and-php-fpm-bash-script-for-creating-new-vhosts-under-separate-fpm-pools/

Что еще делает скрипт:

  • Создает нового системного пользователя для сайта
  • Создает новый файл конфигурации vhost для nginx с использованием базового шаблона
  • Создает новый пул PHP-FPM с uid и gid, установленными для нового пользователя системы.
  • Создает новый каталог для сайта в домашнем каталоге нового пользователя.
  • Перезагружает Nginx, чтобы разрешить обнаружение нового виртуального хоста
  • Перезапускает PHP-FPM для создания нового пула рабочих PHP.

Надеюсь, это поможет вам оптимизировать время настройки.