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

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

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

Примечание

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

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

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

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

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

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

   Примечание

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

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

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

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

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

     - Купите продукт Advanced ModSecurity Rules by Atomicorp в онлайн-магазине Plesk.
     - If you already have a Plesk license, you can add the extra feature via the Plesk Partner Central UI or via the Partner API (for details, refer to the Partner Central User’s Guide or Partner API 3.0 reference).
     - Если у вас есть лицензия Plesk, но нет доступа в Plesk Partner Central, обратитесь к своему провайдеру.

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

     Примечание

     Когда вы получите эту дополнительную функцию, в пользовательском интерфейсе Plesk будет отображаться Advanced ModSecurity Rules от Atomicorp вместо Atomic Basic ModSecurity, что фактически означает полный набор правил Atomic ModSecurity.

     Примечание

     В настоящее время Atomicorp не поддерживает Ubuntu 18.04. Таким образом, наборы правил Atomic (основной и расширенный) не могут быть включены на сервере Plesk с Ubuntu 18.04.

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

     Предупреждение (Linux): Если вы выбрали набор правил Atomic, выполните следующую процедуру, чтобы убедиться, что ModSecurity работает корректно. Выполните на сервере команду `aum -u`. Пакет modsecurity от Plesk будет заменен пакетом из хранилища Atomic. Затем выполните следующие команды:

     - `plesk sbin modsecurity_ctl --disable`
     - `plesk sbin modsecurity_ctl --enable`
     - `service httpd restart`

   - Набор правил Comodo ModSecurity (Linux). Это удобная система управления трафиком на основе настраиваемых правил, которая надежно защищает ваши веб-приложения от новых угроз за счет регулярного обновления базы правил. Этот набор правил доступен бесплатно. Чтобы включить этот набор правил в Plesk, зарегистрируйтесь на сайте Comodo и укажите логин и пароль с этого сайта.

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

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

5. Выберите готовый набор параметров или укажите собственные директивы 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. Найдите другие записи с таким же идентификатором события. Вам нужна запись, у которой после идентификатора события стоит буква `H` (в нашем примере это `eece5138-H--`). Эта запись содержит идентификатор и описание правила безопасности, проверявшего данный HTTP-запрос. Идентификатор правила безопасности – это целое число, начинающееся с цифры `3` и заключенное в кавычки и – вместе с префиксом `id` – в квадратные скобки. Например, `[id "340003"]`.

4. Найдите идентификатор правила безопасности по фрагменту `[id "3`. Этот идентификатор можно использовать для отключения правила.

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

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

## Примечания об nginx и ModSecurity (Linux)

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

## Примечания к обновлению (Linux)

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

- Plesk установит собственный пакет ModSecurity. Однако во время проверки перед обновлением установщик Plesk спросит, согласны ли вы, чтобы Plesk ModSecurity был установлен поверх вашей имеющейся установки.
- Конфигурация вашего ModSecurity останется без изменений. Однако для ModSecurity существует такое множество выпусков и конфигураций, что трудно предугадать возможные конфликты между старой и новой конфигурациями. Во избежание проблем сохраните имеющуюся у вас конфигурацию и удалите ModSecurity, прежде чем устанавливать обновление Plesk Onyx (или пакет ModSecurity из Plesk).