banner

Suhosin – повышаем безопасность web сервера

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

У данного модуля есть более мощный аналог - mod_securuty2, но в этой статье речь пойдёт не о нём.

Suhosin не сильно повышает нагрузку на сервер, имеет множество настроек, логирует потенциально опасные запросы. Довольно неплохо борется LFI, RFI и в бета режиме с SQLinj. Так же есть возможность тихой работы, которая логирует опасные запросы не пресекая их.

Не мение важная защита - это фильтрация значений GET, POST, COOKIE, которая не позволит использовать в запросах:

  • GLOBALS, _COOKIE, _ENV, _FILES, _GET, _POST, _REQUEST
  • _SERVER, _SESSION, HTTP_COOKIE_VARS, HTTP_ENV_VARS
  • HTTP_GET_VARS, HTTP_POST_VARS, HTTP_POST_FILES
  • HTTP_RAW_POST_DATA, HTTP_SERVER_VARS, HTTP_SESSION_VARS

Весь функционал можно посмотреть тут: Feautre list.
Одним из минусов данного модуля является возможность отключения через htaccess, так что если злоумышленник сможет каким-то образом изменить этот файл, то вся эта защита будет напрасной.
Установка проста:

yum install php-suhosin # Centos
apt-get install php-suhosin # Debian

Далее конфигурируем через php.ini.

Полный список настроек можно взять тут Configuration или тут Настройка .
Минимальные настройки по моему мнению, возможны конфликты при работе ваших скриптов:

[suhosin]
suhosin.executor.include.max_traversal=2 # Максимальная глубина пути при include (../)
suhosin.sql.bailout_on_error=On # Не выводить ошибки об sqlinj
suhosin.executor.disable_emodifier=On # Выключить модификатор e в регулярных выражениях.

Основной функционал работает из коробки и не требует каких-то настроек, поэтому ставим и проверяем работу :) .