Тонкая настройка ноды Вебмониторэкс на основе Envoy¶
Для обработки входящих запросов используются фильтры, определенные в файле конфигурации Envoy. Фильтры описывают действия, которые нужно произвести над запросом. Например, фильтр envoy.http_connection_manager
применяется для проксирования HTTP‑запросов. Этот фильтр имеет собственные HTTP‑фильтры, которые могут быть применены к запросу.
Модуль Вебмониторэкс WAF реализован в виде HTTP‑фильтра Envoy. Все основные настройки WAF описываются в секции HTTP‑фильтра wallarm
в файле envoy.yaml
.
listeners:
- address:
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
http_filters:
- name: wallarm
typed_config:
"@type": type.googleapis.com/wallarm.Вебмониторэкс
<конфигурация Вебмониторэкс WAF>
...
Включение обработки тела запроса
Чтобы модуль Вебмониторэкс обрабатывал тело HTTP‑запроса, необходимо добавить в цепочку HTTP‑фильтров Envoy фильтр буферизации перед фильтром Вебмониторэкс WAF. Например:
http_filters:
- name: envoy.buffer
typed_config:
"@type": type.googleapis.com/envoy.config.filter.http.buffer.v2.Buffer
max_request_bytes: <максимальный размер запроса в байтах>
- name: wallarm
typed_config:
"@type": type.googleapis.com/wallarm.Вебмониторэкс
<конфигурация модуля Вебмониторэкс>
...
Если размер запроса превысит значение параметра max_request_bytes
, запрос будет отброшен и Envoy вернет код ответа 413
(«Payload Too Large»).
Настройки фильтрации запросов¶
Секция rulesets
(до версии ноды 4.0 — tsets
) фильтра Вебмониторэкс WAF содержит параметры, которые относятся к настройкам фильтрации запросов:
rulesets:
- name: rs0
pdb: /etc/wallarm/proton.db
custom_ruleset: /etc/wallarm/custom_ruleset
key: /etc/wallarm/private.key
general_ruleset_memory_limit: 0
enable_libdetection: "on"
...
- name: rsN:
...
Где rs0
... rsN
— одна или несколько групп параметров. Имя группы может быть произвольным, на него можно ссылаться с помощью параметра ruleset
секции conf
. В конфигурации Вебмониторэкс WAF должна присутствовать минимум одна группа (например, с именем rs0
).
Эта секция не имеет параметров по умолчанию, её всегда необходимо задавать явным образом в конфигурационном файле.
Уровень настройки
Секция описывается только на уровне фильтра Вебмониторэкс WAF.
Параметр | Описание | Значение по умолчанию |
---|---|---|
pdb | Путь к файлу proton.db . Этот файл содержит глобальные настройки фильтрации запросов, не зависящие от структуры веб‑приложения. | /etc/wallarm/proton.db |
custom_ruleset | Путь к файлу индивидуального набор правил. Этот файл содержит информацию о защищаемом веб‑приложении и настройках ноды Вебмониторэкс. Предыдущее название параметра Название параметра до версии ноды 3.6 — | /etc/wallarm/custom_ruleset ( /etc/wallarm/lom — до версии 3.6) |
key | Путь к файлу закрытого ключа Вебмониторэкс, который используется для шифрования/дешифрования файлов proton.db и custom_ruleset. | /etc/wallarm/private.key |
general_ruleset_memory_limit | Ограничение на максимальный объем памяти, который может быть использован одним экземпляром "proton.db + файл индивидуального набора правил". Если в процессе обработки какого-то запроса общий объем памяти будет превышен, то пользователю вернется ошибка 500. В значении можно использовать следующие суффиксы:
0 отключает ограничения. Предыдущее название параметра Название параметра до версии ноды 4.0 — | 0 |
enable_libdetection | Включает/отключает дополнительную валидацию обнаруженных атак типа SQL‑инъекций с использованием алгоритмов библиотеки libdetection. Если вредоносный пэйлоад не подтвердился, библиотека удаляет отметку об атаке. Такой подход позволяет снизить количество ложных срабатываний на атаки типа SQL‑инъекций. По умолчанию библиотека включена. Мы рекомендуем не отключать библиотеку. При анализе атак с помощью библиотеки libdetection возможно увеличение объема памяти, потребляемой процессами NGINX и Вебмониторэкс, примерно на 10%. | on |
Настройки модуля постаналитики¶
Секция tarantool
фильтра Вебмониторэкс WAF содержит параметры, которые относятся к модулю постаналитики:
tarantool:
server:
- uri: localhost:3313
max_packets: 512
max_packets_mem: 0
reconnect_interval: 1
Где server
— группа параметров, описывающая настройки сервера Tarantool.
Уровень настройки
Секция описывается только на уровне фильтра Вебмониторэкс WAF.
Параметр | Описание | Значение по умолчанию |
---|---|---|
uri | Строка с реквизитами для подключения к серверу Tarantool. Значение должно иметь формат IP‑адрес или доменное имя:порт . | localhost:3313 |
max_packets | Ограничение на максимальное количество сериализованных запросов для отправки в Tarantool. Для отключения ограничения используйте значение 0 . | 512 |
max_packets_mem | Ограничение на максимальный суммарный размер всех сериализованных запросов для отправки в Tarantool (в байтах). | 0 (размер не ограничен) |
reconnect_interval | Интервал между попытками переподключения к серверу Tarantool (в секундах). Значение 0 означает, что попытка переподключения будет производиться как можно быстрее после обнаружения недоступности сервера (не рекомендуется). | 1 |
Базовые настройки¶
Секция conf
фильтра Вебмониторэкс WAF содержит параметры, которые позволяют задать базовые настройки, влияющие на работу ноды Вебмониторэкс:
conf:
ruleset: rs0
mode: "monitoring"
mode_allow_override: "off"
application: 42
process_time_limit: 1000
process_time_limit_block: "attack"
request_memory_limit: 104857600
wallarm_status: "off"
wallarm_status_format: "json"
parse_response: true
unpack_response: true
parse_html_response: true
Для гибкой настройки защиты, вы можете переопределить секцию на уровнях роутов (routes) и виртуальных хостов (virtual hosts) Envoy:
-
на уровне роутов:
routes: - match: typed_per_filter_config: wallarm: "@type": type.googleapis.com/wallarm.ВебмониторэксConf <параметры секции>
-
на уровне хостов:
virtual_hosts: - name: <имя виртуального хоста> typed_per_filter_config: wallarm: "@type": type.googleapis.com/wallarm.ВебмониторэксConf <параметры секции>
Настройки, заданные с помощью conf
на уровне роутов, имеют приоритет над настройками на уровне виртуальных хостов. Настройки на уровне виртуальных хостов имеют приоритет над настройками фильтра Вебмониторэкс WAF.
Параметр | Описание | Значение по умолчанию |
---|---|---|
ruleset | Имя одной из групп параметров, определенных в секции rulesets . Эта группа параметров задает настройки фильтрации запросов.Если параметр опущен для секции conf фильтра Вебмониторэкс WAF, то он должен обязательно присутствовать в переопределенных секциях conf на уровне роутов и виртуальных хостов. Предыдущее название параметра Название параметра до версии ноды 4.0 — | - |
mode | Режим работы ноды Вебмониторэкс:
| block |
mode_allow_override | Позволяет переопределить режим фильтрации, заданный в параметре mode , через индивидуальный набор правил:
mode задан режим фильтрации monitoring и mode_allow_override задан как strict , то с помощью индивидуального набора правил можно включить блокировку определенных запросов (block ), но нельзя полностью отключить анализ атак (off ). | off |
application | Уникальный идентификатор для обозначения защищенного приложения в Вычислительном кластере Вебмониторэкс. Значение может быть любым целым положительным числом, кроме 0 .Подробнее о настройке приложений → Предыдущее название параметра Название параметра до версии ноды 3.6 — | -1 |
partner_client_uuid | Уникальный идентификатор тенанта для ноды с мультиарендной опцией. Значением должна быть строка в формате UUID, например:
| - |
process_time_limit | Параметр скоро устареет Начиная с версии 3.6, рекомендуется настраивать обнаружение атак типа overlimit_res . | 1000 |
process_time_limit_block | Параметр скоро устареет Начиная с версии 3.6, рекомендуется настраивать обнаружение атак типа process_time_limit :
| attack |
wallarm_status | Флаг для включения сервиса статистики ноды Вебмониторэкс. | false |
wallarm_status_format | Формат статистики ноды Вебмониторэкс: json или prometheus . | json |
disable_acl | Флаг для выключения анализа источников запросов на совпадение с данными из списков IP-адресов. Для выключения необходимо передать в директиве значение on . | off |
parse_response | Флаг для включения / выключения анализа ответов приложения. Анализ ответов необходим для определения уязвимостей приложения с помощью пассивного обнаружения и активной проверки атак. Возможные значения: true , false соответственно. | true |
unpack_response | Флаг для включения / выключения распаковки сжатых данных, полученных в ответе приложения. Возможные значения: true , false соответственно.Параметр применяется, только если parse_response true . | true |
parse_html_response | Флаг для включения / выключения HTML‑парсера ответов приложения. Возможные значения: true , false соответственно.Параметр применяется, только если parse_response true . | true |