WAF (ModSecurity)
WAF (web application firewall) — это решение для защиты веб-приложений от атак. WAF анализирует HTTP/HTTPS-трафик между клиентом и сервером и блокирует вредоносные запросы согласно заданным правилам. В ispmanager в качестве WAF используется ModSecurity.
Установка WAF
- Авторизуйтесь в панели под учетной записью с правами суперпользователя.
- Перейдите в раздел Конфигурация ПО → блок Веб-сервер (WWW) и нажмите
Изменить.
- Установите галочку рядом с WAF и нажмите Сохранить.
Для Nginx устанавливается модуль сборки ispmanager.
Для Apache устанавливается системный пакет.
Если установлен Nginx и Apache, модуль будет установлен только для Nginx.
Для OpenLiteSpeed и LiteSpeed используется встроенный модуль ModSecurity.
/etc/modsecurity/owasp/rules/REQUEST-922-MULTIPART-ATTACK.conf.
Для Apache используется версия ModSecurity v.2.x, для Nginx и OpenLiteSpeed — ModSecurity v.3.x.
Чтобы WAF начал действовать, включите его для пользователей и сайтов.
Включение WAF
Для пользователя
- Авторизуйтесь в панели под учетной записью уровня администратор или выше.
- Перейдите в раздел Пользователи.
- Выберите пользователя и нажмите
на панели инструментов.
- В блоке Доступ установите галочки:
- Может использовать WAF — пользователь сможет включать и выключать WAF для своих сайтов.
Если установить только эту галочку, для сайтов пользователя будет использоваться набор правил администратора (по умолчанию OWASP). - Может менять настройки WAF — пользователь сможет сам выбирать наборы правил для каждого из сайтов и загружать собственные правила. Пользователь сможет оказывать прямое влияние на конфигурацию веб-сервера. Рекомендуется выдавать это разрешение только доверенным пользователям.
- Может использовать WAF — пользователь сможет включать и выключать WAF для своих сайтов.
- Нажмите Сохранить.
Чтобы начать работу с WAF, он должен быть включен для сайта.
Для сайта
- Перейдите в раздел Сайты.
- Выберите сайт и нажмите
на панели инструментов.
- В блоке Оптимизация и защита от DDoS → WAF выберите:
- Только обнаружение — при срабатывании правил запросы будут не блокироваться, а только записываться в журнал. Этот режим нужен для поиска ложноположительных срабатываний WAF без риска нарушить работоспособность сайта. Рекомендуется использовать его временно для отключения нерелевантных правил, после чего выбрать Включен.
- Включен — при срабатывании правил запросы будут блокироваться.
- Нажмите Сохранить.
Если пользователю разрешено только включение WAF (без настройки), для его сайта по умолчанию будет использоваться набор правил администратора.
Проверка
Чтобы проверить, что правила работают корректно, выполните «вредоносный» запрос к сайту, например:
curl 'https://ВАШ_САЙТ/?foo=/etc/passwd&bar=/bin/sh'
Если правила сработали, при открытии сайта в браузере появится ошибка (если для сайта выбран режим WAF Включен), а в журнал добавится запись об этом запросе.
Настройка WAF
Для сервера
Правила, установленные для веб-сервера, будут использоваться по умолчанию для всех сайтов, у которых включен WAF. Если пропустить эту настройку, по умолчанию будет использоваться набор правил OWASP.
- Авторизуйтесь в панели под учетной записью с правами суперпользователя.
- Перейдите в раздел Настройки веб-сервера → блок Настройки WAF и заполните поля:
- Набор правил:
- OWASP
- COMODO
- Загрузить из внешнего источника (по URL) — собственные правила в формате файла
.conf
либо архива с несколькими файлами.conf
- Загрузить с локального компьютера — собственные правила в формате файла
.conf
либо архива с несколькими файлами.conf
- URL внешнего источника (при загрузке правил из внешнего источника).
- Обновить правила — позволяет обновить правила OWASP и COMODO, а также правила, загруженные по URL. Чтобы обновить правила, загруженные с локального компьютера, удалите их и загрузите новую версию. Правила обновятся для всех сайтов, использующих набор правил администратора.
- Используемые правила — позволяет выбрать, какие правила из набора будут доступны для сайтов. При добавлении правил из внешнего источника или с локального компьютера нажмите Сохранить, чтобы правила загрузились и стали доступны для выбора.
- Добавить свои правила к установленному набору — позволяет добавить правила с локального компьютера к правилам OWASP, COMODO или правилам, загруженным по URL. В этом случае будут действовать оба набора правил.
- Набор правил:
- Нажмите Сохранить.
Для сайтов
Настройка для сайтов позволяет переопределять правила, заданные на уровне веб-сервера, и добавлять к ним собственные.
- Перейдите в раздел Сайты.
- Выберите сайт и нажмите
на панели инструментов.
- Если WAF для сайта еще не включен, включите его, а затем в блоке Оптимизация и защита от DDoS заполните поля:
- Набор правил:
- Набор правил администратора — набор, установленный и настроенный администратором в разделе Настройки веб-сервера
- OWASP
- COMODO
- Загрузить из внешнего источника (по URL) — собственные правила в формате файла
.conf
либо архива с несколькими файлами.conf
- Загрузить с локального компьютера — собственные правила в формате файла
.conf
либо архива с несколькими файлами.conf
- URL внешнего источника (при загрузке правил из внешнего источника).
- Обновить правила — позволяет обновить правила, загруженные по URL. Чтобы обновить правила, загруженные с локального компьютера, удалите их и загрузите новую версию. Правила обновятся только для текущего сайта.
- Используемые правила — позволяет выбрать, какие правила из набора будут использоваться для сайта. При добавлении правил из внешнего источника или с локального компьютера нажмите Сохранить, чтобы правила загрузились и стали доступны для выбора.
- Добавить свои правила к установленному набору — позволяет добавить правила с локального компьютера к набору правил администратора, правилам OWASP, COMODO или правилам, загруженным по URL. В этом случае будут действовать оба набора правил.
- Набор правил:
- Нажмите Сохранить.
Логирование WAF
По умолчанию в журнал добавляются все запросы, вызвавшие срабатывание правил WAF.
Для просмотра журнала в разделе Сайты напротив нужного сайта нажмите и выберите Журналы →
САЙТ.audit.log
.
Настройки логирования можно изменить в конфигурационном файле ДИРЕКТОРИЯ_ВЕБ-СЕРВЕРА/vhosts-resources/САЙТ/modsecurity.conf
.
Обработка ложноположительных запросов
Некоторые правила могут блокировать легитимные запросы как вредоносные. Чтобы этого не происходило, включите режим Только обнаружение в настройках WAF для сайта и отключите эти правила. Для этого:
- Перейдите в журнал.
- Найдите ложноположительный запрос, и в нем — ID сработавшего правила.
- Отключите это правило для сайта:
Наборы правил 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 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.