MITIGATOR v20.08. Обзор изменений

Глеб Хохлов
AntiDDoS Life
Published in
9 min readAug 26, 2020

Доступна для установки v20.08.8

В версию был добавлен новый интерфейс политики, “мягкий старт” для GAME, режим пропуска трафика при перегрузке системы, новые контрмеры RETR, MINE. Доступен бета-тест Collector и базы сигнатур для REX.

Далее об этих и других изменениях в v20.08

v20.08.{2,3,4}

Detect. Добавлены предикаты на изменение скорости.

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

Поэтому для всех порогов на скорость трафика вида <element>.Xxx, переключающих защиту, есть аналогичные пороги на изменение скорости за такт <element>.Xxx.Diff. Подробное описание логики работы в документации по детектированию.

Detect. Добавлены предикаты по количеству уникальных адресов

В политиках защиты доступны предикаты, опирающиеся на количество уникальных IP-адресов отправителя, наблюдавшихся за последние пять секунд :

  • <element>.Unique.SrcAddr.{On,Off} — количество уникальных адресов;
  • <element.PerSrcAddrBps.{On,Off} — количество бит на уникальный адрес;
  • <element>.PerSrcAddrPps.{On,Off} — количество пакетов на уникальный адрес.

Для уникальных адресов доступен порог по возрастанию их количества за такт (между соседними точками на графике:<element.Unique.SrcAddr.Diff.

REX. Добавлено указание области проверки регулярными выражениями.

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

  • L4 payload
  • L4 headers + L4 payload
  • L3 headers + L4 headers + L4 payload

REX. Добавлено действие COUNT.

Действие count считает пакеты, попадающие под регулярные выражения, и пропускает без сброса.
График счетчика выводится в карточке контрмеры совместно с графиком сброса.

Новое действие помогает пользователю в двух сценариях:
1. Проверить регулярное выражение до реального применения на трафике.
2. Визуализировать трафик с определенным содержимым

ACL. Добавлено действие COUNT.

Действие count считает пакеты, попадающие под правила, и пропускает без сброса.
График счетчика выводится в карточке контрмеры совместно с графиком сброса.

VAL. Добавлены опциональные проверки для TCP.

SOUR. Изменен порядок обработки пакетов.

Теперь SOUR обрабатывает пакеты раньше RETR и MCR.

RETR. Добавлено указание области проверки регулярными выражениями.

FRB. Добавлено указание области проверки регулярными выражениями.

MINE. Добавлены упрощенные режимы проверки для разных версий.

ATLS. Добавлена фильтрация по минимальной версии TLS.

LIM. Изменена обработка фрагментированного трафика.

Core. Оптимизировано распределение пакетов по worker-ядрам.

BGP. Добавлена поддержка комментариев в prefix list и flowspec list.

UX. Добавлены в TOP политик графики из общей защиты.

UX. Добавлены в политику защиты графики pps, bps по данным из Collector

UX. Изменен график уникальных адресов.

Теперь точка на графике показывает количество уникальных адресов за 5 секунд.

UX. Изменен график сброса по контрмерам.

Убрано стекирование и добавлена кривая суммарного сброса.

v20.08.1

RETR. Добавлена контрмера «Аутентификация повторением».

Контрмера позволяет сделать простейшую защиту для UDP-приложений или защититься от атак со спуфингом случайных исходящих адресов для любых L4 протоколов. Аутентификацию проходят адреса, с которых наблюдалось необходимое количество пакетов и бит за интервал времени.

Принцип настройки аналогичен FRB, но вместо блокировки адреса, RETR при выполнении условия начинает пропускать пакеты с этого адреса.

Например, UDP-приложение при попытке подключения отправляет 2 датаграммы за 1 секунду в течение 3 секунд с содержимым CONNECT и размером 512 байт на порт 8888. В таком случае в RETR можно указать правило:

PACKETS 3 BITS 13392 PERIOD 2 ACL udp dport 8888 REX CONNECT

По данному правилу аутентифицируется адрес с которого на порт 8888 за 2 секунды прийдет 3 пакета с суммарным размером 13392 бит и в каждом содержится подстрока CONNECT.

Расчет размера в битах (UDP payload + UDP headers + IP headers + L2 w/o FCS + VLAN)*packets*8 = (512+8+20+14+4)*3*8 = 13392

Или пример варианта защиты от SYN-flood со случайными исходящими адресами:

PACKETS 1 ACL tcp dport 80 ACL tcp-flags S/SA

Разрешить прохождение трафика с хоста, если в течении 3 секунд было получено 3 пакета с ICMP:

PACKETS 3 period 3 acl icmp

Дополнительно можно активировать аутентификацию адреса по пакетам, которые не попали под правила.

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

Контрмеру просто обойти, но в сочетании с другими контрмерами, например FRB и SORB, может получиться достаточно эффективная комбинация.

Контрмера доступна в общей защите и в политике защиты.

MINE. Добавлена контрмера «Защита серверов Minecraft».

Контрмера для защиты серверов Minecraft учитывает особенности игрового клиента и протокола. Доступен “мягкий старт”. Не защищает от игровых ботов. Работает на асимметрии трафика.

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

BPF. Добавлена возможность работы с L2-заголовками в Общей защите.

Детальней в описании mitigator_bpf.h

Reports. Добавлены раздельные пороги для сбросов по пакетам и битам в секунду.

UX. Добавлена «серая тема»

Для некоторых пользователей «темная тема» оказалась слишком темной и контрастной. С учетом пожеланий «серая тема» сделана помягче.

v20.08

PCAP. Добавлено сохранение параметров захвата в файл захвата.

Часто при анализе дампа трафика для полноты не хватает информации, по каким критериям был сделан захват пакетов. Теперь в pcap-файл записывается информация о фильтрах захвата.

GEO. Добавлена контрмера «Фильтрация по странам» в Общую защиту для IPv4.

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

GEO6. Добавлена новая контрмера «Фильтрация по странам» в Общую защиту для IPv6

BPF. Добавлена контрмера «Программируемый фильтр» в Общую защиту для IPv4.

Контрмера позволяет обрабатывать трафик всего устройства с помощью пользовательских программ. Сейчас функциональность полностью совпадает с контрмерой из политики защиты, но в дальнейшем будут добавлены специфичные функции, например, работа с Ethernet-заголовками.

BPF. Добавлена возможность лимитировать часть трафика.

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

VAL. Добавлены опции сброса по нулевым номерам последовательностей и портов.

MCR. Изменено на секунды время работы в режиме «Проверять сбросом».

MCR. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

TCP. Изменено на секунды время работы в режиме «Проверять сбросом».

TCP. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

LCON. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

HTTP. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

ATLS. Добавлено поле с MD5-хешем в файл выгрузки отпечатков JA3.

ATLS. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

GAME. Добавлен режим «Мягкий старт».

В период без атаки «Мягкий старт» позволяет активировать контрмеру без сброса игровых сессий. Например, данный режим полезен при обновлениях или при диагностике проблемы, когда необходимо на время отключать контрмеру.

GAME. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

DNS. Добавлен режим UDP-аутентификации через glue record.

DNS. Добавлена опция выгрузки таблицы адресов с дополнительными полями с информацией из баз GeoIP.

Detect. Добавлено автодетектирование для контрмер FRB и WAFR.

Detect. Изменена логика работы порогов Policy.*

Пороги Policy.Status.* применяются только для отображения цветового индикатора в списке политик. Срабатывание предикатов по Policy.Status.* не пишется в журнал событий. Эти пороги присутствуют в каждой политике со значением 0 и не могут быть удалены пользователем, но могут быть отредактированы.

Пороги Policy.Input{Pps,Bps}, Policy.Drop{Pps,Bps} по умолчанию в политике отсутствуют. Срабатывание этих предикатов логируется в журнале, при этом рассылаются уведомления пользователям, подписанным на события «Трафик опустился ниже порога», «Трафик поднялся выше порога».

UX. Изменен интерфейс политики защиты.

Переработан экран политики защиты, внесено множество мелких правок по всему интерфейсу. Подробней про основные изменения:

UX. Изменено отображение графика уникальных адресов.

Теперь точка на графике обозначает, сколько уникальных адресов источника наблюдалось за 5 секунд.

UX. Добавлена индикация превышения лицензионного лимита.

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

Core. Добавлен режим пропуска трафика при перегрузке системы.

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

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

График пропущенного без проверок трафика отображается разделе “Мониторинг”

Core. Изменен формат конфигурационного файла data-plane.conf

Поддержка старого формата сохранена. Добавлен режим автоопределения настроек. Список новых параметров в data-plane.conf :

// TCP port for control socket
control_port: 8888

// Number of control socket processing threads
control_threads: 10

// TCP port for debug control socket
debug_port: 8889

// Number of debug control socket processing threads
debug_threads: 2

// Maximum supported number of policies
max_policies: 100

// Size of packet memory pool (for each NUMA node)
packet_mempool_size: 262144

// Bypass traffic on packet processor congestion
congestion_bypass: false

// Deferred start of packet processing
deferred_start: false

// Default number of all port queue ring descriptors
port_desc_nr: 1024

// Default number of port rx queue ring descriptors
port_rx_desc: 1024

// Default number of port tx queue ring descriptors
port_tx_desc: 1024

// Default port MTU
port_mtu: 1500

// Maximum retries of port packet tx (power of 2)
port_tx_retries: 7

// Default port direct IO mode
port_direct_mode: false

// Default IO cores for port RX ("auto|ht|noht" or range list)
port_cores: auto

// Default number of port IO cores per NUMA node
port_cores_nr: 1

// Default NUMA nodes for port processing ("auto|all" or range list)
port_nodes: all

// Worker cores ("auto|ht|noht" or range list)
worker_cores: 5,6-7

// Worker cores number per NUMA node
worker_cores_nr: 5

// Worker NUMA nodes ("auto|all" or range list)
worker_nodes: all

// External port 0
ext0: 04:00.0

// Internal port 0
int0: 04:00.1
// Number of all queue ring descriptors
desc_nr: 1024

// Number of rx queue ring descriptors
rx_desc: 1024

// Number of tx queue ring descriptors
tx_desc: 1024

// MTU
mtu: 1500

// Direct IO mode
direct_mode: false

// IO cores for port RX.
// Direct IO mode if not specified ("auto|ht|noht" or range list)
cores: 2,3-4

// Number of port IO cores per NUMA node
cores_nr: 4

// NUMA nodes for port processing.
// Use port native node by default ("auto|all" or range list)
nodes: 0

Подробное описание нового формата будет на docs.mitigator.ru

Core. Изменена обработка 802.1p

Теперь значения приоритета обнуляются и никак не учитываются.

Core. Подкорректирован механизм защиты от петель на время старта.

Core. Обновление DPDK до v20.08

API. Изменены пути для части запросов.

Клиентам использующим интеграцию с MITIGATOR через REST API, рекомендуется ознакомится со списком изменений в документации по API.

Collector. Доступен для бета-тестирования.

Collector — это программный комплекс сбора и хранения телеметрии по flow-протоколам, позволяющий MITIGATOR удаленно детектировать аномалии.

По данным из Collector MITIGATOR анализирует потенциальный трафик политики защиты, и в случае срабатывания детекта формируется BGP-анонс для перенаправления трафика на MITIGATOR.

Заявки на пилотирование связки MITIGATOR+Collector оставляйте через поддержку.

REX. Добавлено управление шаблонами, алиасами и базой сигнатур.

Для возможности быстрого использования и редактирования одинаковых регулярных выражений в разных политиках защиты в MITIGATOR добавлены сущности: сигнатура, шаблон, алиас (см. ниже).

Добавлен механизм обновления через интернет вендорской “базы сигнатур” состоящей из наборов сигнатур, шаблонов и алиасов. Дополнительно системный пользователь может создавать локальные наборы шаблонов и алиасов.

На текущий момент механизм находится в “раннем доступе” для сбора сценариев использования и пожеланий.

Название объектов из базы начинаются на M_ , созданные системным пользователем на S_. Ниже пояснения по терминам.

Сигнатура — это именованный набор регулярных выражений. В контрмере REX к действию pass, drop, block указывается имя сигнатуры

Например, сигнатура S_TESTSIGN может содержать три регулярных выражения:

^abc
def{2}
xyz$

тогда в REX записывается:

drop S_TESTSIGN

Что равнозначно:

drop ^abc
drop def{2}
drop xyz$

Шаблон — это именованный набор регулярных выражений с параметром. В контрмере REX к действию pass, drop, block указывается имя шаблона и параметр.

Например, шаблон S_TestTEMPL содержит регулярное выражение:

^AAA $$ DDD

где $$ место подстановки параметра. Тогда в REX записывается:

drop S_TestTEMPL BBB CCC

Что равнозначно записи:

drop ^AAA BBB CCC DDD

Алиас — это набор правил REX. Одно правило — это действие + регулярное выражение, сигнатура, шаблон. В контрмере REX указывается ключевое слово alias и имя алиаса.

Например, алиас S_TestALIAS содержит набор правил:

pass 12345
block 60 S_TESTSIGN
drop S_TestTEMPL XXX
drop abcde.{3,20}xyz

тогда в REX прописывается:

alias S_TestALIAS

Что аналогично записи:

pass 12345
block 60 ^abc
block 60 def{2}
block 60 xyz$
drop AAA XXX DDD
drop abcde.{3,20}xyz

--

--

Глеб Хохлов
AntiDDoS Life

Эксперт в защите от DDoS-атак. Продакт-менеджер в MITIGATOR.