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

Последствия для безопасности добавления www-данных в / etc / sudoers для запуска php-cgi от имени другого пользователя

Что я действительно хочу сделать, так это позволить пользователю www-data иметь возможность запускать php-cgi от имени другого пользователя. Я просто хочу убедиться, что полностью понимаю последствия для безопасности.

Сервер должен поддерживать среду общего хостинга, в которой различные (возможно, ненадежные) пользователи имеют доступ к серверу через chroot по FTP для хранения своих файлов HTML и PHP. Затем, поскольку сценарии PHP могут быть вредоносными и читать / записывать файлы других пользователей, я хотел бы убедиться, что сценарии PHP каждого пользователя выполняются с одинаковыми правами пользователя для этого пользователя (вместо того, чтобы работать как www-data).

Короче говоря, я добавил следующую строку в свой /etc/sudoers файл, и я хотел пропустить его мимо сообщества в качестве проверки работоспособности:

www-data ALL = (%www-data) NOPASSWD: /usr/bin/php-cgi

Эта строка должна только разрешить www-data запускать такую ​​команду (без запроса пароля):

sudo -u some_user /usr/bin/php-cgi

...где some_user является пользователем в группе www-data. Каковы последствия этого для безопасности?

Это должно позволить мне изменить мою конфигурацию Lighttpd следующим образом:

fastcgi.server += ( ".php" =>
    ((
        "bin-path" => "sudo -u some_user /usr/bin/php-cgi",
        "socket" => "/tmp/php.socket",
        "max-procs" => 1,
        "bin-environment" => (
            "PHP_FCGI_CHILDREN" => "4",
            "PHP_FCGI_MAX_REQUESTS" => "10000"
        ),
        "bin-copy-environment" => (
            "PATH", "SHELL", "USER"
        ),
        "broken-scriptfilename" => "enable"
    ))
)

... позволяя мне создавать новые экземпляры сервера FastCGI для каждого пользователя.

Похоже, вы изобретаете колесо (не осознавая опасности неисправного колеса)

SuPHP - это ответ на вашу проблему, и, насколько я знаю, его можно заставить работать с lighttpd.

У Apache есть расширение, которое Безопасно позволяет серверу менять пользователей перед выполнением процесса CGI. это называется SuEXEC

Требуется множество проверок, противовесов и очистки, иначе оболочка НЕ ​​выполнит или не изменит пользователя. это потому, что есть МНОГО вещей, которые могут пойти не так, в свою очередь, поставить под угрозу безопасность вашей системы. Я бы серьезно рекомендовал не делать то, что делаете вы.

Я никогда раньше не запускал Lighttpd просто потому, что при правильной настройке, настройке, тестировании и тестировании ... он может работать очень хорошо.

Тем не мение, Я нашел это: похоже, это реализация SuEXEC, но для Lighttpd.

Вот некоторые дополнительная документация о том, как его использовать.

Удачи.

Я рекомендую использовать php-fpm вместо этого (управление всеми пользователями с помощью одного сервера, но обычно небезопасно, если вы используете кеш кода операции) или порождение бэкэндов с помощью запустить его и spawn-fcgi.

Затем удалите параметры спауна из конфигурации lighttpd (bin-path, max-procs, bin * -environment)