HTTP-flood
HTTP-flood — это разновидность DDoS-атаки (распределённой атаки типа «отказ в обслуживании»), направленная на перегрузку веб-сервера, приложения или инфраструктуры большим количеством легитимных с виду HTTP-запросов. Целью атаки является исчерпание ресурсов целевой системы (процессорного времени, оперативной памяти, пропускной способности канала, количества одновременных соединений), что приводит к замедлению работы или полной недоступности веб-ресурса для легитимных пользователей. В отличие от атак на сетевом уровне (например, UDP-флуд), HTTP-flood имитирует поведение обычного пользователя, что усложняет его обнаружение и фильтрацию.
Принцип действия
HTTP-flood относится к атакам на прикладном уровне модели OSI (уровень 7). Атакующий генерирует поток HTTP-запросов, которые сервер воспринимает как нормальные. Запросы могут быть направлены на разные URL (главная страница, страницы входа, API-эндпоинты, статические файлы) или на один конкретный ресурс, требующий значительных вычислительных затрат (например, поиск по базе данных, генерация отчёта, загрузка большого изображения).
В отличие от атак, использующих неполные или некорректные запросы, HTTP-flood использует полностью сформированные HTTP-запросы с корректными заголовками (User-Agent, Referer, Cookie). Это делает трафик трудноотличимым от легитимного. Для маскировки атакующие часто используют распределённые ботнеты — сети заражённых устройств (компьютеры, серверы, IoT-устройства), которые одновременно отправляют запросы с разных IP-адресов.
Классификация
HTTP-flood атаки можно классифицировать по нескольким признакам.
По типу запросов
- GET-флуд: Наиболее распространённый тип. Атакующий отправляет множество HTTP GET-запросов к одному или нескольким URL. Часто используется для атаки на главную страницу, страницы с динамическим контентом или на ресурсы, требующие обращения к базе данных. Пример: запросы к
/search?q=...с разными параметрами. - POST-флуд: Атакующий отправляет HTTP POST-запросы, которые обычно содержат данные формы (например, логин/пароль, текст комментария, загружаемый файл). Обработка POST-запросов часто требует больше ресурсов сервера, чем обработка GET-запросов, так как включает проверку данных, запись в базу данных или выполнение бизнес-логики.
- Slowloris и Slow POST: Разновидности, при которых атакующий медленно отправляет запросы, удерживая соединение открытым как можно дольше. Сервер выделяет ресурсы на каждое соединение, и при большом количестве таких «медленных» соединений пул доступных соединений исчерпывается. Slowloris отправляет неполные заголовки, а Slow POST — медленно передаёт тело запроса.
По источнику атаки
- Одноадресная (Single-source): Атака с одного IP-адреса или небольшого пула адресов. Легко обнаруживается и блокируется.
- Распределённая (Distributed): Атака с использованием ботнета. Трафик исходит от тысяч или миллионов различных IP-адресов, что делает его очень сложным для фильтрации без использования специализированных средств (например, CDN или облачных сервисов защиты от DDoS).
По сложности запросов
- Простые (Low-and-slow): Запросы к одному и тому же URL без динамических параметров. Легко обнаруживаются по повторяющимся паттернам.
- Сложные (Application-layer): Запросы имитируют поведение реального пользователя: используют разные User-Agent, меняют Referer, включают случайные параметры в URL, обходят кэш (добавляя случайные параметры к URL статических файлов). Такие атаки требуют более сложных алгоритмов для обнаружения.
Механизмы защиты
Защита от HTTP-flood требует многоуровневого подхода, сочетающего методы на уровне сети, приложения и инфраструктуры.
Фильтрация на сетевом уровне
- Ограничение скорости (Rate Limiting): Установка лимитов на количество запросов с одного IP-адреса за определённый промежуток времени. Эффективно против простых атак, но неэффективно против распределённых ботнетов.
- Блокировка по IP-адресам: Внесение в чёрный список IP-адресов, с которых поступает аномальный трафик. Требует постоянного обновления списка.
- Геоблокировка: Блокировка трафика из стран, где не ожидается легитимных пользователей.
Защита на уровне приложения
- Использование CAPTCHA: Запрос на подтверждение (например, ввод текста с картинки) перед выполнением критически важных действий (вход в систему, отправка формы). Это отсекает ботов, но ухудшает пользовательский опыт.
- Анализ поведения (Behavioral Analysis): Системы защиты анализируют паттерны запросов: частоту, последовательность, время между запросами, типы запросов. Аномальное поведение (например, слишком быстрые запросы, запросы к несуществующим страницам) блокируется.
- Web Application Firewall (WAF): Специализированное программное или аппаратное решение, которое анализирует HTTP-трафик на наличие атак. WAF может блокировать запросы, содержащие подозрительные паттерны (например, SQL-инъекции, XSS), а также аномально большое количество запросов.
- Кэширование: Использование CDN или серверного кэширования для статического контента (изображения, CSS, JS). Это снижает нагрузку на основной сервер, так как запросы к кэшированным ресурсам обрабатываются на границе сети.
Инфраструктурные меры
- Балансировка нагрузки: Распределение трафика между несколькими серверами, что увеличивает общую пропускную способность системы.
- Автомасштабирование (Auto-scaling): Использование облачных ресурсов, которые автоматически добавляют новые серверы при увеличении нагрузки. Это может поглотить часть атаки, но не защищает от исчерпания лимитов облачного провайдера.
- Использование CDN и облачных защит: Специализированные сервисы (например, Cloudflare, Akamai, Qrator Labs) имеют распределённую сеть серверов, способную поглощать огромные объёмы трафика. Они фильтруют вредоносные запросы на своей стороне, пропуская к серверу только чистый трафик.
Примеры атак
- Атака на GitHub (2018): Одна из крупнейших известных DDoS-атак, достигшая пика в 1,35 Тбит/с. Использовала уязвимость в системе мемкэширования (Memcached) для усиления трафика. Хотя атака была на уровне L3/L4, она также включала элементы HTTP-flood.
- Атака на «Яндекс» (2021): Крупнейшая атака в истории Рунета, достигшая пика в 22,5 млн запросов в секунду. Атака была распределённой и использовала множество различных методов, включая HTTP-flood. «Яндекс» отразил атаку с помощью собственной инфраструктуры и облачных сервисов.
- Атаки на банки и государственные учреждения: Часто используются для дестабилизации работы критически важных сервисов. В 2022 году, в связи с геополитической ситуацией, наблюдался рост DDoS-атак на российские государственные сайты, СМИ и финансовые организации, многие из которых были HTTP-flood.
Интересные факты
- HTTP-flood атаки часто маскируются под легитимный трафик с помощью подмены User-Agent (например, на строку браузера Chrome или Firefox) и использования случайных IP-адресов из ботнета.
- Для атаки могут использоваться не только заражённые компьютеры, но и IoT-устройства (камеры, роутеры, умные лампочки), которые имеют низкую производительность, но могут генерировать значительный объём трафика в совокупности.
- Стоимость аренды ботнета для HTTP-flood атаки на чёрном рынке может составлять от нескольких десятков до нескольких тысяч долларов в зависимости от мощности и длительности атаки.
- Некоторые современные ботнеты способны имитировать поведение реальных пользователей, включая выполнение JavaScript, прокрутку страниц и клики, что делает их практически неотличимыми от легитимного трафика.
Источники
- RFC 4732 — Internet Denial-of-Service Considerations.
- OWASP — DDoS Prevention Cheat Sheet.
- «Лаборатория Касперского» — Отчёт о DDoS-атаках за 2023 год.
- Qrator Labs — Анализ DDoS-атак на российские ресурсы.
- Cloudflare — DDoS Threat Report 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →