Как защитить API от ботнета

Эксперимент с защитными мерами · 90 суток

В парке из 10 000 камер и терминалов заражены 100 устройств. Изменим меры защиты и посмотрим, как меняются число вербующих и атакующих ботов, трафик и доступность API.

Задача: подобрать защиту, обеспечивающую за 90 суток 0 часов отказа и не более 240 часов замедления.

Исходные условия

Величина Значение
Размер парка N 10 000 устройств
Горизонт наблюдения 90 суток
Заражено в начале 100 устройств
Пропускная способность канала 400 Мбит/с
Штатный поток 240 Мбит/с
Поток одного активного бота 2 Мбит/с
Замедление без отказа Атакующий поток от 100 до 160 Мбит/с, не включая 160
Отказ Атакующий поток от 160 Мбит/с

Начальные доли состояний:

S(0) I(0) A(0) D(0) R(0)
0,99 0,01 0 0 0

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

Параметры

Время измеряется в сутках, состояния — долями парка. Все семь коэффициентов заданы в сут⁻¹.

β γ κ μ η α δ
Переход S → I I → A I → R A → D S → D D → R R → S
Базовое значение 0,40 0,15 0,08 0,35 0,04 0,05 0,03

Дальше каждый опыт указывает, какой параметр меняем и какие результаты сравниваем.

01 · Сегментация сети

Меняем: долю закрытых межсегментных связей, %.

Измеряем: рост заражения, пики I и A, часы замедления и отказа.

ВариантR₀Пик IПик AЗамедление, чОтказ, ч
Базовый1.74245.8101.1251.4340.0
Выбранный1.74245.8101.1251.4340.0

Серый пунктир — базовый вариант; сплошные линии — выбранный. Синяя — вербующие I, оранжевая — атакующие A.

Боты в парке, устройств0691382062750306090СуткиТрафик атаки, Мбит/с0571131702270306090100160СуткиПоказатель роста S(t)R₀0.00.51.01.41.903060901Сутки

Вопросы и опыты

  1. При какой доле закрытых связей I перестаёт расти с начала наблюдения?

  2. Совпадают ли по времени пики I и A?

  3. Как меняются часы замедления и отказа при закрытии связей?

  4. Почему замедления уже нет, хотя показатель S(t)R₀ ещё выше единицы и заражение продолжает расти?

02 · Время блокировки и начальное заражение

Меняем:

  1. Время блокировки (среднее время от начала атаки устройства до блокировки его трафика).
  2. Начальное число заражённых устройств.

Измеряем: пики числа вербующих I и атакующих A; часы замедления и отказа.

Цель: 0 часов отказа и не более 240 часов замедления за 90 суток.

ВариантR₀Пик IПик AЗамедление, чОтказ, ч
Базовый1.74245.8101.1251.4340.0
Выбранный1.74245.8101.2251.3340.3

Серый пунктир — базовый вариант; сплошные линии — выбранный. Синяя — вербующие I, оранжевая — атакующие A.

Боты в парке, устройств0691382062750306090СуткиТрафик атаки, Мбит/с0571131702270306090100160СуткиПоказатель роста S(t)R₀0.00.51.01.41.903060901Сутки

Вопросы и опыты

  1. Оставьте 100 заражённых. Сравните время блокировки 48 и 36 часов. Как изменились пик атакующих A, часы замедления и отказа?

  2. Как при этом изменился пик вербующих I? Почему изменение времени блокировки действует на I и A по-разному?

  3. Какой из двух режимов позволяет получить 0 часов отказа и не более 240 часов замедления? Выберите более медленный из подходящих.

  4. Оставьте выбранное время блокировки и уменьшите начальное число заражённых до 50. Как изменились часы замедления и отказа?

  5. При том же времени блокировки увеличьте начальное число заражённых до 400. Выполняется ли теперь цель?

  6. Почему один и тот же режим блокировки даёт разные результаты при 50, 100 и 400 заражённых?

  7. Сравните выбранный режим блокировки с сегментацией из задания 01 при 100 заражённых. Какая мера сильнее уменьшает пик I? Что нужно изменить, чтобы сдерживать само заражение?

03 · Сравнение мер

Меняем: меру защиты — патчинг, очистку, блокировку или патчинг вместе с очисткой.

Измеряем: R₀, пики I и A, часы замедления и отказа.

ВариантR₀Пик IПик AЗамедление, чОтказ, ч
Базовый1.74245.8101.1251.4340.0
Выбранный1.74245.8101.1251.4340.0

Серый пунктир — базовый вариант; сплошные линии — выбранный. Синяя — вербующие I, оранжевая — атакующие A.

Боты в парке, устройств0691382062750306090СуткиТрафик атаки, Мбит/с0571131702270306090100160СуткиПоказатель роста S(t)R₀0.00.51.01.41.903060901Сутки

Вопросы и опыты

  1. Предположите, какая мера сильнее повлияет на I, а какая — на A. Затем переключите варианты и проверьте.

  2. Какая мера уменьшает пик I, хотя R₀ не меняется?

  3. Какая мера уменьшает преимущественно число атакующих A?

  4. У всех ли вариантов без отказа одинаковая динамика заражения?

  5. Что меняется при совместном патчинге и очистке?

04 · Блокировка команд и очистка ботов

Меняем:

  1. Скорость активации γ (переход заражённого устройства в атаку).
  2. Скорость очистки κ (удаление заражения с устройства).

Измеряем: R₀, пики вербующих I и атакующих A, часы замедления и отказа.

ВариантR₀Пик IПик AЗамедление, чОтказ, ч
Базовый1.74245.8101.1251.4340.0
Выбранный1.74245.8101.1251.4340.0

Серый пунктир — базовый вариант; сплошные линии — выбранный. Синяя — вербующие I, оранжевая — атакующие A.

Боты в парке, устройств0691382062750306090СуткиТрафик атаки, Мбит/с0571131702270306090100160СуткиПоказатель роста S(t)R₀0.00.51.01.41.903060901Сутки

Вопросы и опыты

  1. Оставьте очистку κ = 0,08 и уменьшайте активацию γ от 0,15 до 0,01. Как меняются часы отказа?

  2. При каком значении γ отказ сильнее всего?

  3. При γ = 0,01 отказа нет. Что при этом происходит с числом вербующих I?

  4. Почему уменьшение скорости перехода I → A может увеличить число вербующих I?

  5. Оставьте γ = 0,01 и увеличивайте скорость очистки κ. При какой предложенной настройке R₀ становится меньше единицы?

  6. Достаточно ли блокировать команды, чтобы избавиться от заражённых устройств?

Браузерная игра

Выбор мер защиты и проверка при разном начальном числе заражённых перенесены в отдельную браузерную игру.

05 · Итог — как меры меняют систему

На первой диаграмме сравните направление действия мер, на второй — длительность замедления и отказа.

Начальные условия одинаковы: 100 заражённых из 10 000 устройств. Горизонт — 90 суток. Номера вариантов совпадают на обеих диаграммах.

2026-11-10T20:47:08.371651 image/svg+xml Matplotlib v3.10.1, https://matplotlib.org/ 0 1 2 3 4 Начальный показатель роста S(0)R₀ 0 50 100 150 200 250 300 Максимальный трафик атаки, Мбит/с Замедление от 100 Отказ от 160 Граница роста 0 1 2 3 4 5 6 7 От исходной системы — к результату меры 0. Исходная система Без дополнительных мер S(0)R₀ = 1.72; Qmax = 202.3 1. Сегментация Закрыто 50 % связей S(0)R₀ = 0.86; Qmax = 62.0 2. Патчинг η: 0,04 → 0,12 S(0)R₀ = 1.72; Qmax = 104.6 3. Очистка κ: 0,08 → 0,25 S(0)R₀ = 0.99; Qmax = 64.2 4. Блокировка трафика μ: 0,35 → 0,85 S(0)R₀ = 1.72; Qmax = 86.1 5. Блокировка команд γ: 0,15 → 0,05 S(0)R₀ = 3.05; Qmax = 274.4 6. Блокировка команд γ: 0,15 → 0,01 S(0)R₀ = 4.40; Qmax = 100.1 7. Патчинг + очистка η = 0,12; κ = 0,25 S(0)R₀ = 0.99; Qmax = 55.5
2026-11-10T20:47:08.550366 image/svg+xml Matplotlib v3.10.1, https://matplotlib.org/ 0 200 400 600 800 1000 1200 Часы за 90 суток 0. Исходная система 1. Сегментация 2. Патчинг 3. Очистка 4. Блокировка трафика 5. Блокировка команд · γ = 0,05 6. Блокировка команд · γ = 0,01 7. Патчинг + очистка 251.4 340.0 Всего 591.3 ч 0 ч 89.3 Всего 89.3 ч 0 ч 0 ч 340.2 668.3 Всего 1008.4 ч 31.4 Всего 31.4 ч 0 ч Сколько времени нарушается работа сервиса Только замедление Отказ

Справка к диаграммам

  • Первая диаграмма: одна точка — результат одного варианта за 90 суток. Стрелки сравнивают варианты, а не показывают движение системы во времени.
  • Левее вертикали 1 заражение сокращается на старте, правее — растёт на старте. Это не значение S(t)R₀ во все моменты времени.
  • Высота точки — максимальный трафик: ниже 100 Мбит/с замедления нет за весь расчёт; от 100 до 160 возможно замедление без отказа; от 160 возможен отказ.
  • Вторая диаграмма показывает длительность: жёлтая часть — только замедление, красная — отказ. Эти часы не пересекаются. Ноль означает отсутствие обоих нарушений.

Вопросы для вывода

  1. Какие меры позволяют избежать отказа, но оставляют рост заражения с начала наблюдения?

  2. Какие меры нужно объединить, чтобы убрать и рост заражения с начала наблюдения, и замедление сервиса?