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

Содержание

In this topic, you will learn how to protect your web applications (such as WordPress, Joomla!, or Drupal) from attacks using ModSecurity, an Open Source web application firewall.

> The topic gives a short overview of the way ModSecurity works, and also explains how to enable and configure it.

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

ModSecurity поддерживается как в Plesk для Linux, так и в Plesk для Windows. Он работает как модуль веб-сервера (Apache, Nginx или IIS).

## Включение ModSecurity

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

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

   Если вы не видите этой ссылки, установите компонент ModSecurity на странице Инструменты и настройки > Обновления > Установить/удалить компоненты в разделе Веб-хостинг.

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

   Примечание

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

3. (Plesk for Linux only) Go to the «Settings» tab, and then select the desired ModSecurity version from the Run rules on drop-down menu:

   - Apache (ModSecurity 2.9) (recommended). ModSecurity 2.9 only works for domains with «Proxy mode» enabled in Apache & nginx Settings.

   - Nginx (ModSecurity 3.0). ModSecurity 3.0 can only use rule sets from OWASP and Comodo. We strongly recommend trying ModSecurity 3.0 on a test server before using it in your production environment.

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

   - Atomic Standard (бесплатно, можно обновить до Atomic Advanced). Бесплатная начальная версия правил Atomic ModSecurity, поставляемая с Plesk. Включает важные функции и исправления, выпускаемые ежемесячно. Какие именно правила входят в этот набор, смотрите в разделе Наборы правил Atomic ModSecurity.

   - OWASP (бесплатно). Набор правил OWASP ModSecurity Core Rule Set (CRS) обеспечивает универсальную защиту от неизвестных уязвимостей, часто свойственных веб-приложениям. Этот набор правил доступен бесплатно. Он отличается повышенной строгостью и требует дополнительной настройки перед использованием на рабочих серверах. Если вы выберете этот набор правил, то у вас частично нарушится работа WordPress, а также перестанут работать веб-почта и общий доступ к файлам. В качестве альтернативы можно использовать наборы правил Atomic или Comodo.

   - (Plesk для Linux) Comodo (бесплатно). Бесплатная, удобная система управления трафиком на основе настраиваемых правил, которая надежно защищает ваши веб-приложения от новых угроз за счет регулярного обновления базы правил.

   - Atomic Advanced. Последняя версия правил со всеми улучшениями производительности, новыми функциями безопасности и исправлениями, ежедневно выпускаемыми Atomicorp GotRoot. Это коммерческий набор правил, который полностью поддерживается и рекомендуется для использования на рабочих серверах. Plesk предоставляет дополнительную функцию Security Core Complete от Atomicorp (полный набор инструментов безопасности), которая позволяет включать этот набор правил в Plesk. Эту дополнительную функцию можно получить следующими способами:

     - Купите продукт Advanced ModSecurity Rules by Atomicorp в онлайн-магазине Plesk.

     - Если у вас уже есть лицензия на Plesk, вы можете добавить дополнительную функцию через интерфейс Plesk Partner Central UI или через Partner API (более подробную информацию смотрите в руководствах Partner Central User’s Guide или Partner API 3.0 reference).

     - Если у вас есть лицензия Plesk, но нет доступа в Plesk Partner Central, обратитесь к своему провайдеру.

     Если у вас уже есть учетная запись на сайте Atomic, введите свое имя пользователя и пароль, чтобы включить этот набор правил.

     Примечание

     Если вы получите эту дополнительную функцию, в интерфейсе Plesk будет отображаться набор правил Atomic Advanced вместо Atomic Standard (бесплатно, можно обновить до Atomic Advanced). Это означает, что теперь вам доступен полный набор правил Atomic Advanced ModSecurity.

     Какие именно правила входят в этот набор, смотрите в разделе Atomic ModSecurity Rule Sets.

   - Другой набор правил. Вы можете загрузить свой набор правил брандмауэра для веб-приложений, например, пробный пакет от Atomic или бесплатный пакет от Comodo. Поддерживаемые форматы: zip, tar.gz, tgz, tar.bz2, conf.

5. Чтобы включить автоматическое обновление выбранного набора правил, установите флажок Обновлять набор правил и выберите период обновления.

6. Выберите готовый набор параметров или укажите собственные директивы ModSecurity. Вы можете выбрать следующие готовые наборы параметров:

   - Быстрая проверка – проверяются фрагменты заголовков и универсальный код ресурса (URI) HTTP-запроса. Этот режим создает наименьшую нагрузку на процессор.

   - Оптимальная проверка – проверяются заголовки, URI и POST-данные HTTP-запроса. Этот режим обеспечивает хороший баланс между качеством и быстродействием.

   - Тщательная проверка – проверяются полные заголовки и POST-данные HTTP-запроса, а также текст HTTP-ответа. Этот режим потребляет больше всего ресурсов процессора и рекомендуется для сайтов с особыми требованиями к безопасности. Например, он подойдет для интернет-магазинов, принимающих оплату картами.

     Примечание

     Для оптимальной производительности брандмауэра для веб-приложений необходим локальный сервер DNS с включенным кэшированием запросов. В противном случае во время работы брандмауэра для веб-приложений сайты могут загружаться медленно.

## Файлы журналов (Linux)

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

- Журнал аудита ModSecurity (`/var/log/httpd/modsec_audit.log`) содержит очень подробную информацию, общую для всего сервера Plesk. В нем ModSecurity фиксирует все происходящие события. Чтобы посмотреть этот журнал, откройте Инструменты и настройки > Брандмауэр для веб-приложений (ModSecurity) и нажмите Архив журналов в разделе Журнал аудита ModSecurity. Здесь вы можете просматривать файлы журналов ModSecurity и даты их изменения, а также скачивать файлы журналов.

- Журнал ошибок Apache для домена (`/var/www/vhosts/имя домена/logs/error_log`) содержит только краткую информацию об ошибках на сайтах. Чтобы посмотреть журнал ошибок конкретного сайта, откройте панель клиента > Сайты и домены > <имя_домена> > Журналы и выберите справа только Ошибки Apache и Ошибки nginx вместо Все журналы.

## Файлы журналов (Windows)

В Windows журналы аудита ModSecurity индивидуальны для каждого домена и находятся в папке `%plesk_dir%ModSecurity\vhosts\<domain's GUID>\logs` (где `%plesk_dir%` ― установочная папка Plesk по умолчанию).

## Отключение правил

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

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

1. Проверьте журнал аудита для сайта.

   В Plesk для Linux можно просматривать журналы через пользовательский интерфейс Plesk: перейдите в раздел Инструменты и настройки > Брандмауэр для веб-приложений (ModSecurity) и нажмите ссылку Журнал ModSecurity, чтобы скачать журнал и открыть его в новом окне браузера.

2. В открывшемся журнале выполните поиск (`Ctrl+F` в большинстве браузеров) по доменному имени сайта, испытывающего проблемы. Например, `your_domain.tld`. Браузер выделит строку вида `HOST: your_domain.tld`. Тремя строками выше выделенной строки вы увидите запись вида `--eece5138-B--`. Восемь символов между дефисами (в нашем примере это `eece5138`) – это идентификатор события, вызванного HTTP-запросом.

3. Search further for other entries with the same event ID. Look for an entry with the letter `H` after the event ID (in our example, `eece5138-H--`). This entry contains the ID and description of the security rule triggered while checking the HTTP request. The security rule ID is an integer number in quotation marks with the prefix `id` in square brackets (for example, `[id "340003"]` or `[id "913102"]`).

4. Find a security rule ID in the event using the substring (for example, `[id "3`). This ID can be used when you switch off rules.

Чтобы отключить правило:

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

2. В разделе Отключение правил безопасности выберите правило безопасности по его ID (например, `340003`), тегу (например, CVE-2011-4898) или регулярному выражению (например, `XSS`) и нажмите OK.