Почему HTTP-флуд опаснее, чем кажется
Чтобы положить канал в 1 Гбит/с, нужен ботнет и много трафика. Чтобы положить типичный интернет-магазин, бывает достаточно нескольких сотен запросов в секунду к странице поиска или фильтра каталога: каждый такой запрос выполняет тяжёлые SQL-запросы, и через минуту сервер перестаёт отвечать. Для провайдера связи это обычный трафик, поэтому сетевая защита дата-центра его не замечает.
Атакующие это знают и выбирают самые дорогие для сервера адреса: поиск с уникальной строкой, фильтры с перебором параметров, добавление в корзину, страницы входа. Часто запросы идут с тысяч домашних IP-адресов через резидентные прокси и выглядят как обычные посетители.
Как работает отражение
- Базовая линия. Фильтр постоянно учит, сколько запросов обычно приходит на каждый раздел сайта в это время суток и с каких сетей.
- Обнаружение. Когда интенсивность выходит за обычный диапазон, включается режим атаки — для конкретного домена и конкретных путей, а не для всего сайта целиком.
- Сужение воронки. Запросы группируются по признакам: подсеть, автономная система, отпечаток TLS-клиента, набор заголовков, путь. Группы с аномальной долей получают проверку браузера или жёсткий лимит.
- Сохранение живых посетителей. Пользователи, уже прошедшие проверку, продолжают работать без повторных проверок: их сессия подписана и не требует новой капчи.
- Возврат в обычный режим. После спада правила ослабляются ступенчато, чтобы повторная волна не застала сайт врасплох.
Что видит сервер во время атаки
Вместо десятков тысяч запросов сервер получает примерно тот же поток, что и в обычный день: настоящих посетителей и разрешённых роботов поисковых систем. Нагрузка на базу данных не растёт, заказы продолжают оформляться.
| Что приходит на фильтр | Что уходит на ваш сервер |
|---|---|
| Запросы ботнета без поддержки JavaScript | Ничего: отсекаются на проверке браузера |
| Повторяющиеся запросы к поиску с одного отпечатка | Не больше заданного лимита в минуту |
| Запросы к статике и кэшируемым страницам | Отдаются из кэша фильтра |
| Живые посетители и поисковые роботы | Проходят как обычно |
Чем это отличается от защиты на сервере
Модуль лимитов в nginx или плагин в CMS тоже умеют резать запросы, но делают это на том же сервере, который атакуют. Каждый отклонённый запрос всё равно занимает соединение, процессор и память. При серьёзной атаке сервер падает раньше, чем его правила успевают помочь. Фильтр стоит перед сервером, поэтому атака расходует его ресурсы, а не ваши.
Вопросы и ответы
Сколько запросов в секунду выдерживает фильтр?
Это зависит от тарифа и того, сколько из атакующих запросов отсекается на ранних слоях. Ёмкость для каждого тарифа будет закреплена в договоре; до запуска сервиса мы не называем цифр, которые не проверены на нагрузочных испытаниях.
Будут ли посетители видеть капчу во время атаки?
Большинство — нет. Проверка браузера проходит автоматически за доли секунды. Капча показывается только тем, кто не прошёл автоматическую проверку, — обычно это скрипты и старые браузеры.
Что будет с поисковыми роботами?
Роботы Яндекса, Google и других поисковиков определяются по проверенным адресам и обратным DNS-записям и проходят без проверок, в том числе во время атаки.
Читайте также
- АтакиHTTP-флуд: что это и как защититьсяМассовые запросы к страницам, которые перегружают сервер
- ВозможностиПроверка браузера без капчиНевидимая проверка вместо капчи для подозрительных запросов
- ВозможностиОграничение скорости запросовОтдельные лимиты для поиска, корзины, входа и API
- База знанийЧто делать во время DDoS-атаки на сайтПлан действий на первый час атаки