Настройка детектора DDoS и BotNet на базе QoE

Детектор позволяет автоматически контролировать исходящий и входящий трафик, выявлять DDoS-атаки и оперативно принимать меры для защиты сети. Определять абонентов участников BotNet. При обнаружении угрозы система может полностью изолировать вредоносный поток или очистить трафик, сохранив доступность сервисов для пользователей.
Решение требует:

СКАТ версии BASE, COMPLETE или BRAS с дополнительными опциями

QoE с опцией Обнаружение и очистка трафика (blackhole and flowspec) от BotNet и DDoS-атак (опция antiddos)

разворачивается на существующем сервере с QoE

Подробнее об инструментах для защиты от DDoS и выявления BotNet

1. Обновление QoE

На сервере QoE.

Обновить QoE до последней версии, предварительно остановив ресиверы. Перед запуском ресиверов пропатчить ClickHouse:

dnf --refresh install clickhouse-patched

Установить период ротации на ресиверах – 1 минута.

Запустить ресиверы.

2. Обновление GUI

На сервере GUI.

Обновить GUI до последней версии. Подключить GUI к VAS Cloud, если еще не подключен, подключать обязательно через API-токен. Настройка авторизации. Запросить опцию лицензии antiddos, если она еще не выдана.

В файле /var/www/html/dpiui2/frontend/env.js прописать опцию AppEnv.DDoSAttack_isVisible = 1;

3. Установка детектора

На сервере QoE. Установить пакет митигатора fastm_qoe на все узлы:

Перед установкой переключить версию Python:

dnf install -y python39 python39-devel -y
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 60
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 70
sudo update-alternatives --config python3

Выбрать версию Python 3.9:

python3 --version

Установить fastm_qoe:

dnf install fastm_qoe

4. Настройка детектора

На сервере QoE.

На всех узлах, либо на выбранных.

Отредактировать файл /var/fastm_qoe/etc/.env.
В нем должно быть следующее содержимое:

ANALYZER=avg-based-z-score
ANALYZER_RULES_KEY=avg-based-z-score-any
IDLE_MODE=1
FORCE_MODE=0
DB_DROP_TABLES=1
FM_ATTACKS_METRICS_BY_SUBS_FILTER="and has_attack = 0"
FM_ATTACKS_METRICS_BY_SUBS_LIMIT=1
FM_ATTACKS_METRICS_BY_SUBS_COLLAPSE=1
FM_ATTACKS_METRICS_BY_SUBS_DAY='day_'

Обновить схему:

fastm-db-scheme
clickhouse-client -n --query="system reload function has_attack_func"
clickhouse-client -n --query="system reload dictionary fm_attacks_metrics_by_subs_dic"

Включить сбор метрик
Для этого в файле /var/qoestor/backend/.env добавить

FM_FULLFLOW_HOOK_ENABLE=1
GEO_IP_DIC_AUTOLOAD_ENABLED=1

Выполнить дневной крон:

sh /var/qoestor/backend/app_bash/cron_daily.sh

Собирать метрики в течение 24 часов. После этого снова отредактировать файл /var/fastm_qoe/etc/.env, изменить 2 параметра:

IDLE_MODE=0
DB_DROP_TABLES=0

Это активирует детектор.

Обновить словари:

clickhouse-client -n --query="system reload function has_attack_func"
clickhouse-client -n --query="system reload dictionary fm_attacks_metrics_by_subs_dic"

5. Пороги срабатывания

В файле /var/fastm_qoe/lib/rules/config.json отредактировать раздел avg-based-z-score-any следующим образом:

"avg-based-z-score-any": {
"octets": { "th": 100, "weight": 0.1 },
"octets_dropped": { "th": 1000, "weight": 0.3 },
"packets": { "th": 100, "weight": 0.3 },
"packets_dropped": { "th": 1000, "weight": 0.3 },
"flows": { "th": 100, "weight": 0.4 },
"sessions": { "th": 100, "weight": 0.4 },
"duration": { "th": 100, "weight": 0.01 },
"host_ips": { "th": 100, "weight": 0.3 },
"protos": { "th": 100, "weight": 0.3 },
"bits_sec": { "th": 100, "weight": 0.05 },
"bits_dropped_sec": { "th": 1000, "weight": 0.05 },
"packets_sec": { "th": 100, "weight": 0.05 },
"packets_dropped_sec": { "th": 1000, "weight": 0.05 }
},

6. Хранение метрик (логи DDoS атак)

В веб-интерфейсе GUI настроить хранение сырых и агрегированных метрик, а также хранение сырого и агрегированного лога атак.

В разделе Администратор → Конфигурация GUI → QoE Stor: Настройки времени жизни БД задать следующие значения параметрам:

QOESTOR_FM_ATTACKS_MAIN_LOG_PARTITIONS_LIFE_TIME_HOUR = 720

QOESTOR_FM_ATTACKS_AGG_LOG_PARTITIONS_LIFE_TIME_DAYS = 30

QOESTOR_FM_METRICS_MAIN_LOG_PARTITIONS_LIFE_TIME_HOUR = 72

QOESTOR_FM_METRICS_AGG_LOG_PARTITIONS_LIFE_TIME_DAYS = 7

Для корректного отображения гео-отчетов DDoS-атак необходимо включить параметр GEO_IP_DIC_AUTOLOAD_ENABLED:

7. Анализ атак

Обнаруженные атаки можно изучить в разделах DDoS атаки в QoE Анлитике.

Начните с раздела "ТОП атак" за период 24 часа.
Отсортируйте атаки по количеству сессий, запишите себе несколько IP с наибольшим количеством сессиий.

Посмотрите раздел "ТОП атак по протоколам"
Также отсортируйте по количеству сессий. Запишите себе эти протоколы

Посмотрите раздел "ТОП атакующих IP-адресов", запишите себе несколько IP с наибольшим количеством сессиий

Проанализируйте Лог атак с фильтром по выбранным ранее абонентам и протоколу.
Там можно почерпнуть детали атаки и сделать дополнительные выводы, чтобы принимать какие-либо решения.
Например, на скриншоте ниже явно видно, что идет перебор портов на одном и том же адресе по UDP протоколу. В этом случае достаточно назначить на профиль атакующего абонента политику drop для прикладного протокола upd unknown через сессионный полисинг (18 услуга).
Это означает что для выбранного абонента будет полностью заблокирован трафик попадающий в данный протокол, т.е. как UDP flood, так и легитимный UDP трафик определенный на DPI как udp unknown.

Подробнее о настройке сессионного полисинга: Полисинг по сессии и переопределение классов трафика