Брандмауэр для веб-приложений (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-запроса, или загрузите собственный набор правил. Вы можете выбрать следующие наборы правил:
    • OWASP ModSecurity Core Rule Set (CRS). CRS обеспечивает универсальную защиту от неизвестных уязвимостей, часто свойственных веб-приложениям. Этот набор правил доступен бесплатно. Он отличается повышенной строгостью и требует дополнительной настройки перед использованием в реальных условиях. Если вы выберете этот набор правил, то у вас будет частично не работать WordPress и перестанут работать веб-почта и общий доступ к файлам. В качестве альтернативы можно использовать наборы правил Atomic или Comodo.
    • Набор правил Atomic ModSecurity. Последняя версия правил со всеми улучшениями, новыми функциями и исправлениями, ежедневно выпускаемыми Atomicorp GotRoot. Это коммерческий набор правил, который полностью поддерживается и рекомендуется для использования на боевых серверах. Чтобы включить этот набор правил в Plesk, зарегистрируйтесь на сайте Atomic и укажите логин и пароль с этого сайта.

      Предупреждение. Если вы выбрали набор правил Atomic, выполните следующую процедуру, чтобы убедиться, что ModSecurity работает корректно:

      Выполните на сервере команду aum -u. Пакет modsecurity от Plesk будет заменен пакетом из хранилища Atomic. Затем выполните следующие команды:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl –enable
      • service httpd restart
    • Набор правил Comodo ModSecurity. Это удобная система управления трафиком на основе настраиваемых правил, которая надежно защищает ваши веб-приложения от новых угроз за счет регулярного обновления базы правил. Этот набор правил доступен бесплатно. Чтобы включить этот набор правил в Plesk, зарегистрируйтесь на сайте Comodo и укажите логин и пароль с этого сайта.
  4. Чтобы включить автоматическое обновление выбранного набора правил, поставьте галочку Обновлять набор правил и выберите период обновления.
  5. Выберите готовый набор параметров или укажите собственные директивы ModSecurity. Вы можете выбрать следующие готовые наборы параметров:
    • Быстрая проверка - проверяются фрагменты заголовков и универсальный код ресурса (URI) HTTP-запроса. Этот режим создает наименьшую нагрузку на процессор.
    • Оптимальная проверка - проверяются заголовки, URI и POST-данные HTTP-запроса. Этот режим обеспечивает хороший баланс между качеством и быстродействием.
    • Тщательная проверка - проверяются полные заголовки и POST-данные HTTP-запроса, а также текст HTTP-ответа. Этот режим потребляет больше всего ресурсов процессора и рекомендуется для сайтов с особыми требованиями к безопасности. Например, он подойдет для интернет-магазинов, принимающих оплату картами.

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

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

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

После включения 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:
  • Plesk установит собственный пакет ModSecurity. Однако во время проверки перед обновлением Установщик Plesk спросит, согласны ли вы, чтобы Plesk ModSecurity был установлен поверх вашей имеющейся установки.
  • Конфигурация вашего ModSecurity останется без изменений. Однако для ModSecurity существует такое множество выпусков и конфигураций, что трудно предугадать возможные конфликты между старой и новой конфигурациями. Во избежание проблем сохраните имеющуюся у вас конфигурацию и удалите ModSecurity, прежде чем устанавливать обновление Plesk 12 (или пакет ModSecurity из Plesk).