Открыть сервис

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, прокрутку страниц и клики, что делает их практически неотличимыми от легитимного трафика.

Источники

  1. RFC 4732 — Internet Denial-of-Service Considerations.
  2. OWASP — DDoS Prevention Cheat Sheet.
  3. «Лаборатория Касперского» — Отчёт о DDoS-атаках за 2023 год.
  4. Qrator Labs — Анализ DDoS-атак на российские ресурсы.
  5. Cloudflare — DDoS Threat Report 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →