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

Зачем запрещать пользователям Apache запускать скрипты?

Когда пользователям Apache разрешено выполнять сценарии bash через PHP - почему это считается опасным? Я понимаю, что пользователи могут просматривать всю файловую систему и даже видеть, какие дополнительные пользователи размещены на машине; они также могут прочитать настройки в conf/httpd.conf. Но как эта информация поможет им взломать систему? Учтите, что suexec активен.

Внутри php.ini существуют (обычно по умолчанию) ограничения безопасности, чтобы скрипты не использовали слишком много памяти, выполняли определенные функции или вообще делали то, чего не должны.

Если вы разрешите PHP выполнять сценарий оболочки, который не ограничен таким образом, вы открываете возможности для злоумышленников. Например, они могли запустить вилка бомба и потенциально перевести ваш сервер в автономный режим. Им было бы легче принять участие в DDoS-атаке или запустить сканер уязвимостей на других серверах. Также может быть намного сложнее отладить, где что-то началось и как именно сервер был скомпрометирован, если вы разрешите дополнительный уровень абстракции.

В общем, если сервер заблокирован должным образом, вредоносный код ограничен, но серверы очень редко блокируются должным образом. Обычно требуется две или три уязвимости, чтобы скомпрометировать сервер - разрешения 777 не вызовут у вас проблемы, если кто-то не скомпрометирует код вашего веб-сайта или если злонамеренный пользователь с доступом не уйдет, но зачем рисковать?

Когда люди пытаются проникнуть на ваш сервер, они обычно делают это вслепую. Они угадывают ваши настройки PHP, они угадывают, как сконфигурирован ваш веб-сервер, они угадывают имена пользователей (/ etc / passwd читается всем), они угадывают имена ваших баз данных. Если вы позволите им читать файлы конфигурации, вы значительно упростите им жизнь. Если вы позволите им рассылать по электронной почте ваши файлы PHP, содержащие имена пользователей и пароли для строк подключения к базе данных, вы сделаете это чрезвычайно простым. Входящие брандмауэры (например, ограничение MySQL до localhost) имеют ограниченное применение, если вы позволяете им запускать с вашего сервера все, что они хотят.