Как грамотно организовать безопасность для веб-сервера на CentOS 7?

Дано: VPS, CentOS, Nginx, PHP7 (FPM), MariaDB.
Есть проект /var/www/theproject.
Если отойти ото всяческой специализации, есть ли испытанные временем безопасные настройки для данной конфигурации?
Я имею ввиду следующее:
1. Как должны быть распределены пользователи и группы nginx, php-fpm, проекта? (т.е. от кого процесс запускается, и кто в какую группу входит)
2. Где правильно располагать папку проекта, под чьими правами и какие там должны быть разрешения для файлов и папок?
3. Нужно ли отключать SELinux?
4. Или я всё делаю неправильно и нужно использовать docker?
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 2
1. Как должны быть распределены пользователи и группы nginx, php-fpm, проекта? (т.е. от кого процесс запускается, и кто в какую группу входит)
Уже правильно распределены.

2. Где правильно располагать папку проекта, под чьими правами и какие там должны быть разрешения для файлов и папок?
Желательно отдельный выделенный радел, чтобы можно было понакрутить в параметрах монтирования всякие nosuid, nodev. Хотя и так сойдёт. Пользователь nginx или кто там ещё есть.

3. Нужно ли отключать SELinux?
Не нужно. Если умеешь его готовить, то всё остальное не нужно.

4. Или я всё делаю неправильно и нужно использовать docker?
Изоляция, которую даёт docker, не основная его функция.
Ответ написан
@MarvinD
3. Нужно ли отключать SELinux

Вообще некорректно поставлен вопрос. Его никогда не нужно выключать, если к этому нет конкретных предпосылок. В вашем случае вы используете широко известный софт, он к SELinux относится хорошо. Понимать настройку SELinux, возможно придется. Но понимать и "нужно отключать" разные вещи.

4. Или я всё делаю неправильно и нужно использовать docker?

Опять - нужно. Так можно дойти до того, что "нужно использовать Debian, а не CentOS". Выше правильно сказали, что docker в первую очередь ориентирован не для обеспечения безопасности конфигурации.

Минимально для безопасности VPS нужно:
1) доступ по ключу, а не по паролю;
2) firewall, разрешающий только то, что нужно (ssh, http, https).

И погуглите насчет secure nginx, что-то в этом роде.

Т.е. защищать надо, начиная с точек, к которым остальные имеют доступ. А это открытые порты к сервисам, которые вы не можете от других закрыть.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы