Перейти к основному содержимому

Защита от DDoS: ограничение частоты запросов

· 4 мин. чтения

Защита от DDoS-атак

В последние месяцы мы фиксируем рост числа DDoS-атак на сервисы наших пользователей. Чтобы было чем ответить, в CloudPub 3.1 мы добавили новое правило фильтрации - «Ограничение частоты».

Почему туннель не спасает от L7-атак

DDoS-атаки принято делить по уровням сетевой модели:

  • L3/L4 (сетевой и транспортный уровень) - объёмные атаки: SYN-флуд, UDP-флуд, амплификация. Их цель - забить канал или таблицу соединений.
  • L7 (прикладной уровень) - HTTP-флуд: шквал на вид «легитимных» запросов к страницам, формам и API.

Инфраструктура CloudPub защищена от объёмных L3/L4-атак на сетевом периметре. С L7 сложнее: CloudPub туннелирует трафик до вашего локального сервиса, поэтому HTTP-запросы проходят сквозь туннель и доходят до самого приложения.

Так что даже когда периметр держит удар на L3/L4, при L7-атаке страдает конечный пользователь: ваш локальный сервер получает поток запросов, захлёбывается и перестаёт отвечать обычным клиентам. Туннель здесь не помощник - он честно доставляет весь трафик по назначению.

Значит, аномальный поток нужно отсекать ещё на стороне CloudPub, до того как он попадёт в туннель. Ровно для этого мы и добавили ограничение частоты.

Новое правило «Ограничение частоты»

Ограничение частоты - это новый тип действия в правилах фильтрации. Оно объединяет два независимых ограничителя, и вы можете использовать любой из них или оба сразу:

  • По частоте - сколько новых соединений источник может открыть за интервал времени.
  • По числу одновременных соединений - сколько соединений от одного источника активны в каждый момент.

Когда лимит превышен, CloudPub отклоняет новые соединения, и нагрузка не доходит до вашего сервиса.

Параметры

Правило настраивается несколькими полями (названия совпадают с формой в личном кабинете):

  • Ключ подсчёта - поля, по которым соединения группируются для подсчёта (например, ip.src - отдельный счётчик на каждый IP-адрес).
  • Запросов - сколько новых соединений разрешено за один период.
  • Период (сек.) - длительность скользящего окна подсчёта в секундах.
  • Макс. одновременных - максимум одновременно активных соединений на один ключ подсчёта.
  • Блокировка (сек.) - на сколько секунд нарушитель блокируется после превышения лимита частоты.

Ключ подсчёта можно собрать из нескольких полей. Помимо ip.src доступны и подсети - ip.src.subnet24 и ip.src.subnet16: они группируют клиентов по сети /24 или /16, что помогает против атак, когда злоумышленник перебирает адреса в пределах одной подсети.

Примеры

Защита от HTTP-флуда - не более 100 запросов в минуту с одного IP-адреса:

  • Действие: Ограничить частоту
  • Ключ подсчёта: ip.src
  • Запросов: 100
  • Период (сек.): 60

Защита от перебора паролей - не более 10 соединений за 5 минут с подсети /24, с блокировкой нарушителя на 15 минут:

  • Действие: Ограничить частоту
  • Ключ подсчёта: ip.src.subnet24
  • Запросов: 10
  • Период (сек.): 300
  • Блокировка (сек.): 900

Ограничение нагрузки - не более 200 одновременных соединений с одного IP-адреса:

  • Действие: Ограничить частоту
  • Ключ подсчёта: ip.src
  • Макс. одновременных: 200

Сочетается с обычными правилами

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

Подробное описание всех параметров и характеристик - в разделе документации Фильтрация трафика.

Что ещё нового в CloudPub 3.1

Помимо ограничения частоты, в релиз вошли и другие улучшения:

  • Агент-коннектор - публикация локальных сервисов через обратный TCP-прокси (в On-Premise версии).
  • Команды в группах - в группу теперь можно одним действием добавить всех пользователей своей команды.
  • Инспектор запросов отключён по умолчанию - меньше лишней нагрузки и накладных расходов.
  • Кеширование - улучшена инвалидация кеша и увеличено время его жизни.

Исправленные ошибки

  • Корректная остановка процессов и служб по группе процессов.
  • Повышена стабильность соединений за счёт TCP keepalive.
  • Номер телефона форматируется с префиксом +7.
  • Группы теперь корректно работают в облачной версии.
  • Исправлено проксирование robots.txt для пользователей с несколькими доменами.

Как начать использовать

Ограничение частоты доступно во всех планах CloudPub. Чтобы настроить защиту:

  1. Откройте панель управления CloudPub.
  2. Перейдите в раздел «Публикации».
  3. Откройте настройки нужной публикации.
  4. Перейдите на вкладку «Правила фильтрации».
  5. Добавьте правило с действием «Ограничить частоту».

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

Команда CloudPub