Тонкая настройка фильтрующего узла на основе Envoy

Для обработки входящих запросов используются фильтры, определенные в файле конфигурации Envoy. Фильтры описывают действия, которые нужно произвести над запросом. Например, фильтр envoy.http_connection_manager применяется для проксирования HTTP-запросов. Этот фильтр имеет собственные HTTP-фильтры, которые могут быть применены к запросу.

Модуль Валарм выполнен в виде HTTP-фильтра Envoy. Все его основные настройки сосредоточены в секции, описывающей HTTP-фильтр wallarm (далее — «фильтр Валарм»):

listeners:
   - address:
     filter_chains:
     - filters:
       - name: envoy.http_connection_manager
         typed_config:
           http_filters:
           - name: wallarm
             typed_config:
              "@type": type.googleapis.com/wallarm.Wallarm
              <конфигурация модуля Валарм>
              ...

Включение обработки тела запроса

Для того, чтобы модуль Валарм обрабатывал тело HTTP-запроса, необходимо добавить в цепочку HTTP-фильтров Envoy фильтр буферизации перед фильтром Валарм. Это можно сделать, например, так:

  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.Wallarm
       <конфигурация модуля Валарм>
       ...

Если размер запроса превысит значение, указанное в параметре max_request_bytes, то такой запрос будет отброшен и Envoy вернет код ответа 413 («Payload Too Large»).

Настройки фильтрации запросов

Секция tsets фильтра Валарм содержит параметры, которые относятся к настройкам фильтрации запросов:

tsets:
  ts0:
    pdb: /etc/wallarm/proton.db
    lom: /etc/wallarm/lom
    key: /etc/wallarm/license.key
  ...
  tsN:
    ...

Где ts0 ... tsN — одна или несколько групп параметров. Имя группы может быть произвольным и на него можно ссылаться с помощью параметра ts секции conf. В конфигурации фильтра Валарм должна присутствовать минимум одна группа (например, с именем ts0).

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

Эта секция может присутствовать только на уровне фильтра Валарм.

pdb

Путь к файлу proton.db. Этот файл содержит глобальные настройки фильтрации запросов, не зависящие от структуры веб-приложения.

Значение по умолчанию: /etc/wallarm/proton.db

lom

Путь к файлу ЛОМ. Этот файл содержит информацию о защищаемом веб-приложении и настройках фильтрующего узла.

Значение по умолчанию: /etc/wallarm/lom

key

Путь к лицензионному ключу Валарм.

Значение по умолчанию: /etc/wallarm/license.key

Настройки модуля постаналитики

Секция tarantool фильтра Валарм содержит параметры, которые относятся к модулю постаналитики:

tarantool:
  server:
  - uri: localhost:3313
    max_packets: 512
    max_packets_mem: 0
    reconnect_interval: 1

Где server — группа параметров, описывающая настройки сервера Tarantool.

Эта секция может присутствовать только на уровне фильтра Валарм.

uri

Строка с реквизитами для подключения к серверу Tarantool. Она должна иметь формат IP-адрес или имя:порт.

Значение по умолчанию: localhost:3313

max_packets

Ограничение на максимальное количество сериализованных запросов для отправки в Tarantool.

Значение по умолчанию: 512

Для отключения ограничения задайте для этого параметра значение 0.

max_packets_mem

Ограничение на максимальный суммарный размер всех сериализованных запросов для отправки в Tarantool (в байтах).

Значение по умолчанию: 0 (размер не ограничен).

reconnect_interval

Интервал между попытками переподключения к серверу Tarantool (в секундах).

Значение по умолчанию: 1

Значение 0 означает, что попытка переподключения будет производиться как можно быстрее после обнаружения недоступности сервера (не рекомендуется).

Базовые настройки

Секция conf фильтра Валарм содержит параметры, которые позволяют задать базовые настройки, влияющие на работу фильтрующего узла:

conf:
  ts: ts0
  mode: "off"
  mode_allow_override: "off"
  process_time_limit: 1000
  process_time_limit_block: "attack"
  instance: 42

Секция может быть переопределена на уровнях роутов (routes) и виртуальных хостов (virtual hosts) Envoy, что отличает эту секцию от рассмотренных ранее. Это позволяет гибко настроить необходимый уровень защиты.

Переопределение секции conf:

  • на уровне роутов:

    routes:
    - match:
      typed_per_filter_config:
        wallarm:
          "@type": type.googleapis.com/wallarm.WallarmConf
          <параметры секции>
    
  • на уровне хостов:

    virtual_hosts:
    - name: <имя виртуального хоста>
      typed_per_filter_config:
        wallarm:
          "@type": type.googleapis.com/wallarm.WallarmConf
          <параметры секции>
    

В переопределенных секциях conf вы можете использовать любые параметры, описанные ниже.

Настройки, заданные с помощью conf на уровне роутов, имеют приоритет над настройками на уровне виртуальных хостов, которые, в свою очередь, имеют приоритет над настройками фильтра Валарм.

ts

Имя одной из групп параметров, определенных в секции tsets. Эта группа параметров задает настройки фильтрации запросов, которые требуется использовать.

Если параметр опущен для секции conf фильтра Валарм, то он должен обязательно присутствовать в переопределенных секциях conf на уровне роутов и виртуальных хостов.

Значение по умолчанию: нет.

mode

Режим фильтрации трафика:

  • off: фильтрация запросов не производится.
  • monitoring: все запросы обрабатываются, но никакие не блокируются даже при обнаружении атак.
  • block: блокируются все запросы, которые являются частью распознанной атаки.
  • aggressive: блокируются все нетипичные запросы. Например, передача строки в поле, в которое обычно передается число. Рекомендуется использовать крайне осторожно.

Режимы перечислены по возрастанию от самого мягкого до самого жесткого.

Значение по умолчанию: off

mode_allow_override

Параметр позволяет переопределить режим фильтрации, заданный с помощью параметра mode, через правила ЛОМ, выгружаемые из облака Валарм:

  • off: правила, заданные в ЛОМ, игнорируются.
  • strict: посредством ЛОМ можно только усилить режим фильтрации.
  • on: можно как усиливать, так и смягчать режим фильтрации.

Например, если с помощью mode задан режим фильтрации monitoring и mode_allow_override задан как strict, то через облако можно включить блокировку определенных запросов (block), но нельзя полностью отключить анализ атак (off).

Значение по умолчанию: off

process_time_limit

Ограничение времени обработки одного запроса (в миллисекундах).

Если запрос не может быть обработан за заданное время, то в лог-файл пишется ошибка, а запрос помечается как атака overlimit_res.

Значение по умолчанию: 1000

process_time_limit_block

Параметр задает действие, которое должно быть выполнено, если запрос не был обработан за время, заданное параметром process_time_limit:

  • off: запросы всегда пропускаются.
  • on: запросы всегда блокируются.
  • attack: зависит от режима фильтрации, заданного параметром mode:
    • monitoring: запросы пропускаются;
    • block и aggressive: запросы блокируются.

Значение по умолчанию: attack

instance

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

Идентификаторы приложения используются исключительно для удобства просмотра. Для корректной сепарации данных по приложениям необходимо установить те же значения идентификаторов в визуальном интерфейсе.

Любой фильтрующий узел будет фильтровать трафик для любого количества приложений без дополнительной настройки.

Значение по умолчанию: нет.

results matching ""

    No results matching ""