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

Запуск одного веб-приложения на сервере - почему бы не использовать root?

У меня есть один облачный сервер для размещения только одного веб-сайта (django + gunicorn + nginx), база данных postgres будет развернута на другом облачном сервере.

В этом случае мне следует создать специального пользователя для своего сайта? Кажется, что вместо этого проще использовать root, и это дает немного больше рисков для безопасности, но не намного, если я размещу там только одно приложение?

Технически вам ничто не мешает это сделать. Однако во всех отношениях это ужасная идея.

Идея запуска приложений от имени непривилегированных пользователей не связана с запуском одного или нескольких приложений. Это связано с риском компрометации самого приложения. Запустив процессы от имени пользователя root, если бы злоумышленник мог воспользоваться какой-либо ошибкой, чтобы получить прямой доступ или иным образом повлиять на ваше приложение, он делал бы это с привилегиями root и, следовательно, мог бы напрямую скомпрометировать весь сервер.

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

Использование непривилегированного пользователя очень просто и защищает вас от большого количества возможных атак на безопасность.

Похоже, проще использовать root вместо

Конфигурация nginx по умолчанию для большинства пакетов распространения имеет user директива. Рабочие процессы из коробки запускаются от имени менее привилегированного пользователя.

Некоторые из методы развертывания серийных пушек разрешить запуск от имени данного пользователя.