Перейти к содержанию

Тонкая настройка ноды Вебмониторэкс на основе 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 — lom. Если вы используете предыдущее название, рекомендуем изменить его при обновлении модулей. Поддержка lom скоро прекратится. Логика работы параметра не изменилась.

/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. В значении можно использовать следующие суффиксы:
  • k или K для указания размера в килобайтах
  • m или M для указания размера в мегабайтах
  • g или G для указания размера в гигабайтах
Значение 0 отключает ограничения.

Предыдущее название параметра

Название параметра до версии ноды 4.0 — ts_request_memory_limit. Если вы используете предыдущее название, рекомендуем изменить его при обновлении модулей. Поддержка ts_request_memory_limit скоро прекратится. Логика работы параметра не изменилась.

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 — ts. Если вы используете предыдущее название, рекомендуем изменить его при обновлении модулей. Поддержка ts скоро прекратится. Логика работы параметра не изменилась.

-
mode Режим работы ноды Вебмониторэкс:
  • block - чтобы блокировать вредоносные запросы.
  • safe_blocking - чтобы блокировать только те вредоносные запросы, которые отправлены с IP‑адресов из серого списка.
  • monitoring - чтобы анализировать, но не блокировать запросы.
  • off - чтобы не обрабатывать входящий трафик.
Подробное описание режимов работы
block
mode_allow_override Позволяет переопределить режим фильтрации, заданный в параметре mode, через индивидуальный набор правил:
  • off - индивидуальные правила игнорируются.
  • strict - с помощью индивидуальных правил можно только усилить режим фильтрации.
  • on - можно как усиливать, так и смягчать режим фильтрации.
Например, если с помощью mode задан режим фильтрации monitoring и mode_allow_override задан как strict, то с помощью индивидуального набора правил можно включить блокировку определенных запросов (block), но нельзя полностью отключить анализ атак (off).
off
application Уникальный идентификатор для обозначения защищенного приложения в Вычислительном кластере Вебмониторэкс. Значение может быть любым целым положительным числом, кроме 0.

Подробнее о настройке приложений →

Предыдущее название параметра

Название параметра до версии ноды 3.6 — instance. Если вы используете предыдущее название, рекомендуем изменить его при обновлении модулей. Поддержка instance скоро прекратится. Логика работы параметра не изменилась.

-1
partner_client_uuid Уникальный идентификатор тенанта для ноды с мультиарендной опцией. Значением должна быть строка в формате UUID, например:
  • 11111111-1111-1111-1111-111111111111
  • 123e4567-e89b-12d3-a456-426614174000

-
process_time_limit

Параметр скоро устареет

Начиная с версии 3.6, рекомендуется настраивать обнаружение атак типа overlimit_res с помощью правила Настроить обработку атак типа overlimit_res в Консоли управления.
Параметр process_time_limit временно поддерживается, но в будущих релизах поддержка прекратится.

Ограничение времени обработки одного запроса (в миллисекундах). Если запрос не может быть обработан за заданное время, то в лог‑файл пишется ошибка, а запрос помечается как атака overlimit_res.
1000
process_time_limit_block

Параметр скоро устареет

Начиная с версии 3.6, рекомендуется настраивать обнаружение атак типа overlimit_res с помощью правила Настроить обработку атак типа overlimit_res в Консоли управления.
Параметр process_time_limit_block временно поддерживается, но в будущих релизах поддержка прекратится.

Действие, которое должно быть выполнено, если запрос не был обработан за время, заданное в параметре process_time_limit:
  • off - запросы всегда пропускаются.
  • on - запросы всегда блокируются, но при mode: "off" пропускаются.
  • attack - зависит от режима фильтрации, заданного параметром mode:
    • off - запросы не фильтруются.
    • monitoring - запросы пропускаются.
    • block - запросы блокируются.
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