Брандмауэр для веб-приложений (ModSecurity)

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

ModSecurity - это модуль для Apache. Поэтому он может проверять только те HTTP-запросы, которые доходят до Apache. Для большей производительности веб-сервер Apache по умолчанию работает в связке с другим веб-сервером - nginx. Если вы включите опцию Обрабатывать PHP-файлы с помощью nginx (динамический контент), то брандмауэр веб-приложений не сможет проверять HTTP-запросы, так как они не будут доходить до Apache. Если вы включите опцию Обрабатывать статические файлы с помощью nginx (статический контент), то HTTP-запросы не будут доходить до Apache, поэтому ModSecurity не будет их проверять.

Примечание. Чтобы использовать брандмауэр для веб-приложений (ModSecurity) администраторам, которые обновляют Plesk с версии 11.5, необходимо приобрести новую лицензию для Plesk 12 у компании Odin или своего поставщика.

Чтобы включить брандмауэр веб-приложений:

  1. Откройте  Инструменты и настройки  >  Брандмауэр для веб-приложений (ModSecurity)  (раздел  Безопасность ). Нужно установить компонент ModSecurity на ваш сервер.


    Web_Application_Firewall

  2. Выберите режим работы брандмауэра Включен или Только обнаружение. Каждый входящий HTTP-запрос и соответствующий ответ будут проходить через набор проверочных правил. В случае успешной проверки запрос будет передаваться веб-сайту. Если проверка не удастся, это событие будет занесено в журнал. В режиме Только обнаружение больше никаких действий выполнено не будет. В режиме Включен будет предоставлен HTTP-ответ с кодом ошибки.

    Примечание. Режимы брандмауэра для веб-приложений можно устанавливать на уровне сервера и домена. Однако режим, установленный на уровне домена, не может быть выше режима, установленного для сервера. Например, если брандмауэр для веб-приложений на уровне сервера работает в режиме Только обнаружение, его нельзя будет установить в режим On для доменов. Будут доступны только режимы Отключен и Только обнаружение.

  3. Выберите набор правил, который будет проверяться брандмауэром для каждого входящего HTTP-запроса, или загрузите собственный набор правил. Вы можете выбрать следующие наборы правил:
  4. Чтобы включить автоматическое обновление выбранного набора правил, поставьте галочку Обновлять набор правил и выберите период обновления.
  5. Выберите готовый набор параметров или укажите собственные директивы ModSecurity. Вы можете выбрать следующие готовые наборы параметров:

ModSecurity хранит свои журналы в двух местах:

После включения ModSecurity сайт может начать работать с ошибками. В журнале ошибок сайта могут появится ошибки с кодом 403, 404 или 500, которые исчезают после того, как вы переключите брандмауэр обратно в режим Только обнаружение или Отключен. В этом случае проверьте журнал ModSecurity, чтобы выяснить точную причину проблемы. Вы можете отключить слишком строгие правила безопасности или изменить параметры соответствующего сайта.

Чтобы понять, почему не был выполнен HTTP-запрос к тому или иному сайту, и отключить правило безопасности:

  1. Откройте  Инструменты и настройки  >  Брандмауэр для веб-приложений (ModSecurity).
  2. Щелкните по ссылке Журнал ModSecurity, чтобы скачать журнал аудита и открыть его в новом окне браузера.
  3. В открывшемся журнале выполните поиск (Ctrl+F в большинстве браузеров) по доменному имени сайта, испытывающего проблемы. Например, ваш-домен.ru. Браузер выделит строку вида HOST: ваш-домен.ru. Чуть выше выделенной строки вы увидите запись вида --eece5138-B--. Восемь символов между дефисами (в нашем примере это eece5138) - это идентификатор события, вызванного HTTP-запросом.
  4. Найдите другие записи с таким же идентификатором события. Вам нужна запись, у которой после идентификатора события стоит буква H (в нашем примере это eece5138-H--). Эта запись содержит идентификатор и описание правила безопасности, проверявшего данный HTTP-запрос. Идентификатор правила безопасности - это целое число, начинающееся с цифры 3 и заключенное в кавычки и - вместе с префиксом id - в квадратные скобки. Например, [id "340003"].
  5. Найдите идентификатор правила безопасности по фрагменту [id "3.
  6. Откройте  Инструменты и настройки  >  Брандмауэр для веб-приложений (ModSecurity).
  7. В разделе Правила безопасности выберите правило безопасности по его ID (например, 340003), тегу (например, CVE-2011-4898) или регулярному выражению (например, XSS) и нажмите OK.

Советы для тех, у кого ModSecurity был установлен на сервере до обновления до Plesk 12: