Как грамотно организовать безопасность для веб-сервера на CentOS 7?
1. Как должны быть распределены пользователи и группы nginx, php-fpm, проекта? (т.е. от кого процесс запускается, и кто в какую группу входит) Уже правильно распределены.2. Где правильно располагать папку проекта, под чьими правами и какие там должны быть разрешения для файлов и папок? Желательно отдельный выделенный радел, чтобы можно было понакрутить в параметрах монтирования всякие nosuid, nodev. Хотя и так сойдёт. Пользователь nginx или кто там ещё есть.3. Нужно ли отключать SELinux? Не нужно. Если умеешь его готовить, то всё остальное не нужно.4. Или я всё делаю неправильно и нужно использовать docker? Изоляция, которую даёт docker, не основная его функция.
3. Нужно ли отключать SELinux
Вообще некорректно поставлен вопрос. Его никогда не нужно выключать, если к этому нет конкретных предпосылок. В вашем случае вы используете широко известный софт, он к SELinux относится хорошо. Понимать настройку SELinux, возможно придется. Но понимать и "нужно отключать" разные вещи.4. Или я всё делаю неправильно и нужно использовать docker?
Опять - нужно. Так можно дойти до того, что "нужно использовать Debian, а не CentOS". Выше правильно сказали, что docker в первую очередь ориентирован не для обеспечения безопасности конфигурации.
Минимально для безопасности VPS нужно:
1) доступ по ключу, а не по паролю;
2) firewall, разрешающий только то, что нужно (ssh, http, https).
И погуглите насчет secure nginx, что-то в этом роде.
Т.е. защищать надо, начиная с точек, к которым остальные имеют доступ. А это открытые порты к сервисам, которые вы не можете от других закрыть.