linux — exec () и пользователь root в переполнении стека

Я строю панель управления в PHP.
Этот CP будет управлять пользователями Linux, их сеансами экрана и файлами.

Я хочу перечислить все подходы и выбрать наиболее безопасный способ, который будет удобен и для пользователя.

/ и т.д. / sudoers

wwwuser ALL = NOPASSWD: ALL

Это позволяет выполнять любую команду через пользователя сервера www.
Это кошмар безопасности.

Pros

  • Все команды доступны

Cons

  • Все команды доступны

/ и т.д. / sudoers

wwwuser ALL = NOPASSWD: /path/to/scripts/scripts/

Этот метод использует небольшие скрипты bash с несколькими строками. К сожалению, эти сценарии должны принимать аргументы, увеличивающие поверхность атаки.
Например, этот скрипт создает нового пользователя

#/bin/bash
useradd $1 -s /bin/bash

Я не могу перечислить все разрешенные имена пользователей, поэтому я должен использовать аргументы.

Pros

  • Разрешены только команды из белого списка, если скрипт вызывается с помощью escapeshellarg ()
  • Придает эластичность созданным именам пользователей, папкам и т. Д.

Cons

  • Изменение аргументов через enduser невозможно, например. для запуска Java-приложений на экране.

В этом методе все команды, которым нужны права root, отправляются в очередь.
Очередной демон запускается от имени пользователя root и может создавать пользователей и т. Д.

Pros

  • Более низкая поверхность атаки, чем позволяет wwwuser запускать любую команду
  • Упругие аргументы для запуска или имена файлов для создания больше не проблема

Cons

  • Безопасность в основном зависит от самого приложения

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]