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

многопользовательская среда виртуального хостинга PHP и безопасность

Я хочу настроить многопользовательскую среду виртуального хостинга PHP.

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

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

Есть ли способ запустить PHP в среде setuid для каждого из VirtualHosts, определенных Apache? Кто-нибудь уже прошел через эту настройку, которая может помочь мне в шагах, необходимых для этого? Как это делают крупные хостинговые компании?

Спасибо, Корин

Среды Setuid работают очень хорошо. Если вы используете CPanel, вы можете легко настроить это с помощью easyapache. В противном случае вам придется настроить его вручную. suPHP - отличное начало здесь.

Что касается того, почему вам следует беспокоиться, это о многоуровневой безопасности. Было несколько эксплойтов PHP, которые позволяют обойти ограничения open_basedir. Если это ваша единственная защита, то, возможно, кто-то сможет это обойти. Если вы используете open_basedir и suPHP (с правильными разрешениями), вы защитите своих клиентов от эксплойтов в open_basedir.

suPHP также значительно упрощает поиск источника злоупотреблений. Используя только open_basedir, вы не можете определить, какой процесс принадлежит какому пользователю. Если бы какой-то пользователь загрузил скрипт, который начал использовать весь ЦП, потребовались бы серьезные исследования, чтобы определить, какой именно. С suPHP все, что вам нужно сделать, это использовать «top», чтобы увидеть как оскорбительного пользователя, так и полный путь к скрипту.

Есть ли способ запустить PHP в среде setuid для каждого из VirtualHosts, определенных Apache?

Это не способ решения проблемы. Apache работает как единый идентификатор пользователя. Есть системы вроде suPHP, но зачем беспокоиться, когда можно использовать стандартные пакеты и установить open_basedir который явно решает описанную вами проблему.

Подумайте, как вы можете разрешить пользователям безопасно управлять своими сайтами - полагаясь на права собственности на файлы, вы фактически ограничиваете возможность пользователей самостоятельно управлять безопасностью файлов. Они должны иметь возможность манипулировать файлами / каталогами (по умолчанию) таким образом, чтобы они не были доступны для записи с помощью uid веб-сервера, при необходимости предоставляя механизм для обработки загрузок (желательно за пределами корня документа).