Ispmanager 6 lite, pro, host

WAF (ModSecurity)

WAF (web application firewall) — это решение для защиты веб-приложений от атак. WAF анализирует HTTP/HTTPS-трафик между клиентом и сервером и блокирует вредоносные запросы согласно заданным правилам. В ispmanager в качестве WAF используется ModSecurity.

Установка WAF

  1. Авторизуйтесь в панели под учетной записью с правами суперпользователя.
  2. Перейдите в раздел Конфигурация ПО → блок Веб-сервер (WWW) и нажмите   Изменить.
  3. Установите галочку рядом с WAF и нажмите Сохранить.
Подробности

Для Nginx устанавливается модуль сборки ispmanager.

Для Apache устанавливается системный пакет.

Если установлен Nginx и Apache, модуль будет установлен только для Nginx.

Для OpenLiteSpeed и LiteSpeed используется встроенный модуль ModSecurity.

Если у вас Ubuntu 20, 22 или Debian 11
Для Apache и LiteSpeed из набора OWASP удаляются правила из файла /etc/modsecurity/owasp/rules/REQUEST-922-MULTIPART-ATTACK.conf.

Для Apache используется версия ModSecurity v.2.x, для Nginx и OpenLiteSpeed — ModSecurity v.3.x.

Чтобы WAF начал действовать, включите его для пользователей и сайтов.

Включение WAF

Для пользователя

Для пользователя www-root WAF включен по умолчанию.
  1. Авторизуйтесь в панели под учетной записью уровня администратор или выше.
  2. Перейдите в раздел Пользователи.
  3. Выберите пользователя и нажмите  на панели инструментов. 
  4. В блоке Доступ установите галочки:
    • Может использовать WAF — пользователь сможет включать и выключать WAF для своих сайтов.
      Если установить только эту галочку, для сайтов пользователя будет использоваться набор правил администратора (по умолчанию OWASP).
    • Может менять настройки WAF — пользователь сможет сам выбирать наборы правил для каждого из сайтов и загружать собственные правила.
      Пользователь сможет оказывать прямое влияние на конфигурацию веб-сервера. Рекомендуется выдавать это разрешение только доверенным пользователям.
  5. Нажмите Сохранить.

Чтобы начать работу с WAF, он должен быть включен для сайта.

Для сайта

У владельца сайта должно быть право использовать WAF.
  1. Перейдите в раздел Сайты.
  2. Выберите сайт и нажмите  на панели инструментов.
  3. В блоке Оптимизация и защита от DDoS → WAF выберите:
    • Только обнаружение — при срабатывании правил запросы будут не блокироваться, а только записываться в журнал. Этот режим нужен для поиска ложноположительных срабатываний WAF без риска нарушить работоспособность сайта. Рекомендуется использовать его временно для отключения нерелевантных правил, после чего выбрать Включен.
    • Включен — при срабатывании правил запросы будут блокироваться.
  4. Нажмите Сохранить.

Если пользователю разрешено только включение WAF (без настройки), для его сайта по умолчанию будет использоваться набор правил администратора.

Проверка

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

curl 'https://ВАШ_САЙТ/?foo=/etc/passwd&bar=/bin/sh'

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

Настройка WAF

Для сервера

Правила, установленные для веб-сервера, будут использоваться по умолчанию для всех сайтов, у которых включен WAF. Если пропустить эту настройку, по умолчанию будет использоваться набор правил OWASP.

  1. Авторизуйтесь в панели под учетной записью с правами суперпользователя.
  2. Перейдите в раздел Настройки веб-сервера → блок Настройки WAF и заполните поля:
    • Набор правил:
      • OWASP
      • COMODO
      • Загрузить из внешнего источника (по URL) — собственные правила в формате файла .conf либо архива с несколькими файлами .conf
      • Загрузить с локального компьютера — собственные правила в формате файла .conf либо архива с несколькими файлами .conf
    • URL внешнего источника (при загрузке правил из внешнего источника).
    • Обновить правила — позволяет обновить правила OWASP и COMODO, а также правила, загруженные по URL. Чтобы обновить правила, загруженные с локального компьютера, удалите их и загрузите новую версию. Правила обновятся для всех сайтов, использующих набор правил администратора.
    • Используемые правила — позволяет выбрать, какие правила из набора будут доступны для сайтов. При добавлении правил из внешнего источника или с локального компьютера нажмите Сохранить, чтобы правила загрузились и стали доступны для выбора.
    • Добавить свои правила к установленному набору — позволяет добавить правила с локального компьютера к правилам OWASP, COMODO или правилам, загруженным по URL. В этом случае будут действовать оба набора правил. 
  3. Нажмите Сохранить.

Для сайтов

У владельца сайта должно быть право менять настройки WAF.

Настройка для сайтов позволяет переопределять правила, заданные на уровне веб-сервера, и добавлять к ним собственные.

  1. Перейдите в раздел Сайты.
  2. Выберите сайт и нажмите  на панели инструментов.
  3. Если WAF для сайта еще не включен, включите его, а затем в блоке Оптимизация и защита от DDoS заполните поля:
    • Набор правил:
      • Набор правил администратора — набор, установленный и настроенный администратором в разделе Настройки веб-сервера
      • OWASP
      • COMODO
      • Загрузить из внешнего источника (по URL) — собственные правила в формате файла .conf либо архива с несколькими файлами .conf
      • Загрузить с локального компьютера — собственные правила в формате файла .conf либо архива с несколькими файлами .conf
    • URL внешнего источника (при загрузке правил из внешнего источника).
    • Обновить правила — позволяет обновить правила, загруженные по URL. Чтобы обновить правила, загруженные с локального компьютера, удалите их и загрузите новую версию. Правила обновятся только для текущего сайта.
    • Используемые правила — позволяет выбрать, какие правила из набора будут использоваться для сайта. При добавлении правил из внешнего источника или с локального компьютера нажмите Сохранить, чтобы правила загрузились и стали доступны для выбора.
    • Добавить свои правила к установленному набору — позволяет добавить правила с локального компьютера к набору правил администратора, правилам OWASP, COMODO или правилам, загруженным по URL. В этом случае будут действовать оба набора правил.
  4. Нажмите Сохранить.

Логирование WAF

По умолчанию в журнал добавляются все запросы, вызвавшие срабатывание правил WAF.

Для просмотра журнала в разделе Сайты напротив нужного сайта нажмите   и выберите ЖурналыСАЙТ.audit.log.

Настройки логирования можно изменить в конфигурационном файле ДИРЕКТОРИЯ_ВЕБ-СЕРВЕРА/vhosts-resources/САЙТ/modsecurity.conf.

Обработка ложноположительных запросов

Некоторые правила могут блокировать легитимные запросы как вредоносные. Чтобы этого не происходило, включите режим Только обнаружение в настройках WAF для сайта и отключите эти правила. Для этого:

  1. Перейдите в журнал.
  2. Найдите ложноположительный запрос, и в нем — ID сработавшего правила.
    Пример

    В данном случае ID правила — 932160.

  3. Отключите это правило для сайта:
    1. Перейдите в раздел Сайты, выберите нужный сайт и нажмите   Изменить.
    2. В блоке Оптимизация и защита от DDoS → Используемые правила найдите ID правила и снимите с него галочку.
    3. Нажмите Сохранить.

Наборы правил​ WAF

COMODO

Набор правил с официального сайта COMODO. Правила скачиваются из собственных репозиториев ispmanager:

  • cwaf_2.tgz — набор для ModSecurity v2 (Apache)
  • cwaf_3.tgz — набор для ModSecurity v3 (Nginx, OpenLiteSpeed)

Правила хранятся в директории /etc/modsecurity/comodo.

OWASP

Набор правил из официального репозитория OWASP. Правила хранятся в директории /etc/modsecurity/owasp/rules.

Из внешнего источника (загруженные по URL)

Правила, загруженные администратором через форму Настройки веб-сервера, хранятся в директории /etc/modsecurity/url.

Правила, загруженные пользователем через форму создания/редактирования сайта, хранятся в директории /etc/modsecurity/САЙТ_url.

С локального компьютера

Правила, загруженные администратором через форму Настройки веб-сервера, хранятся в директории /etc/modsecurity/custom

Правила, загруженные пользователем через форму создания/редактирования сайта, хранятся в директории /etc/modsecurity/САЙТ_custom

Правила администратора

Все правила, установленные администратором на форме Настройки веб-сервера, сохраняются в конфигурационном файле /etc/modsecurity/admin/main.conf. Этот набор устанавливается для сайта при выборе пункта Набор правил администратора на форме создания/редактирования сайта.

Конфигурационные файлы​ WAF

Модуль WAF использует иерархическую конфигурацию, где конфигурационные файлы подключаются один в другой. Цепочка конфигурационных файлов для сайта выглядит следующим образом:

  • /etc/modsecurity/НАБОР_ПРАВИЛ>/*.conf (глобальный конфигурационный файл ModSecurity c файлами правил, доступных для сайта) →
  • /etc/modsecurity/САЙТ.conf (конфигурационный файл ModSecurity для сайта со списком подключенных и отключенных правил) →
  • /ДИРЕКТОРИЯ_ВЕБ-СЕРВЕРА/vhosts-resources/САЙТ/modsecurity.conf (конфигурационный файл веб-сервера для ModSecurity с настройками его включения, работы и логирования) →
  • /ДИРЕКТОРИЯ_ВЕБ-СЕРВЕРА/vhosts/ПОЛЬЗОВАТЕЛЬ/САЙТ.conf (конфигурационный файл веб-сервера для сайта).

Конфигурационный файл /ДИРЕКТОРИЯ_ВЕБ-СЕРВЕРА/vhosts-resources/САЙТ/modsecurity.conf генерируется на основе шаблона /usr/local/mgr5/etc/templates/default/ВЕБ-СЕРВЕР_modsecurity.template при изменении настроек сайта. Чтобы изменить структуру конфигурационного файла для всех сайтов, отредактируйте шаблон по инструкции (доступно учетной записи с правами администратора).  

Пример шаблона конфигурационного файла ModSecurity для nginx
/etc/nginx/vhosts-resources/САЙТ/modsecurity.conf
modsecurity on;
modsecurity_rules '
	SecRuleEngine __MODE__
	SecAuditLogParts ABCEFHJZ
	SecAuditEngine RelevantOnly
	SecAuditLog __LOG_PATH__
	SecAuditLogType Serial
';
modsecurity_rules_file __INCLUDE__;
Пояснение
  • modsecurity on — ModSecurity включен
  • modsecurity_rules '...' — блок основных настроек ModSecurity
  • SecRuleEngine __MODE__ — управляет работой движка правил; возможные значения:
    • On — блокировка атак + логирование.
    • Off — полное отключение.
    • DetectionOnly — только логирование (без блокировки).
  • SecAuditLogParts ABCEFHJZ — определяет, какие части запросов/ответов записывать в лог:
    • A — заголовок аудит-лога
    • B — заголовки запроса
    • C — тело запроса
    • E — тело ответа
    • F — заголовки ответа
    • H — завершающая часть лога
    • J — загруженные файлы
    • Z — разделитель.
  • SecAuditEngine RelevantOnly — логируются только запросы, вызвавшие срабатывание правил.
  • SecAuditLog __LOG_PATH__ — путь к файлу аудит-лога
  • SecAuditLogType Serial — все логи записываются в один файл
  • modsecurity_rules_file __INCLUDE__ — подключает внешние файлы с правилами

Подробнее о параметрах конфигурации ModSecurity — в официальных руководствах: ModSecurity v2.x, ModSecurity v3.x.