L3, L4 и L7 DDoS: чем отличаются уровни атак

Когда сайт внезапно «ложится», панель мониторинга краснеет, а пользователи пишут в поддержку, часто звучит знакомая версия: началась DDoS-атака. Под этим термином скрывается распределенная атака отказа в обслуживании, когда множество источников одновременно создают нагрузку на ресурс. Но DDoS — не один сценарий, а целая группа методов давления.

Чаще всего говорят о L3, L4 и L7. От уровня атаки зависит, что именно перестанет работать: интернет-канал, сетевые соединения или само приложение. Если не понимать природу нагрузки, можно долго тушить не тот «пожар».

L3 DDoS: забить канал мусорным трафиком

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

Если интернет-канал сервера рассчитан на 1 Гбит/с, а в него летит поток на 5–10 Гбит/с, легитимные запросы просто не проходят. Сервер может быть исправен и даже почти не загружен по процессору, но до него никто не достучится.

Самая заметная черта L3-атаки — резкий рост входящего трафика. Канал забит, графики сети скачут вверх, пользователи жалуются: «сайт не открывается вообще».

Защита в этом случае строится на фильтрации трафика у провайдера, распределении нагрузки, системах очистки трафика, Anycast-маршрутизации и резервных каналах связи.

L4 DDoS: удар по соединениям

L4 — транспортный уровень. Здесь работают TCP и UDP, то есть механизмы установления и сопровождения сетевых сессий. Атакующий уже не просто шлет пакеты, а пытается исчерпать лимиты соединений или перегрузить сетевой стек.

Классический пример — SYN flood. Клиент отправляет запрос на установку TCP-соединения, сервер резервирует ресурсы и ждет завершения рукопожатия. Если таких полуоткрытых соединений тысячи или миллионы, ресурсы заканчиваются.

Это неприятный сценарий: снаружи кажется, что сервер живой, но попасть на него сложно. Администраторы нередко тратят время на поиск ошибок в приложении, хотя проблема в соединениях.

Для защиты помогают SYN cookies, ограничение числа сессий, балансировщики нагрузки, stateful-фильтрация, rate limiting и анти-DDoS на сетевом периметре.

L7 DDoS: атака под видом обычных пользователей

L7 — прикладной уровень. Здесь работают HTTP, HTTPS, API-запросы, формы авторизации, поиск по каталогу, генерация отчетов. Это самый хитрый класс атак.

Трафик может выглядеть вполне прилично: нормальные HTTP-запросы, реальные User-Agent, корректные cookies, переходы по страницам. На графиках объем трафика иногда даже не пугает. Но каждый запрос заставляет приложение выполнять тяжелую работу: обращаться к базе данных, строить страницу, рендерить отчет, пересчитывать корзину.

Вот почему сравнительно небольшой поток запросов иногда кладет крупный сервис.

Основные цели L7-атак: страница входа в личный кабинет, поиск по сайту, карточки товаров с большим числом запросов к базе, API без ограничений частоты запросов и генерация файлов и отчетов.

Самый коварный момент — атака похожа на всплеск реального интереса. Маркетинг запустил рекламу? Завирусилось видео? Или это ботнет? Ответить на все эти вопросы правильно очень непросто.

Защита включает WAF (Web Application Firewall), CAPTCHA, кэширование, CDN, ограничение частоты запросов, поведенческий анализ, защиту API и переработку «тяжелых» участков приложения.

Почему компании часто ошибаются в оценке атаки

Есть распространенный сценарий: сайт тормозит, команда видит рост нагрузки и решает, что не хватает серверных ресурсов. Докупают мощности, добавляют процессоры, расширяют кластер — а проблема остается. Причина проста: масштабируется не то место.

Еще одна ошибка — ориентироваться только на объем трафика. L7-атака может идти на сравнительно скромной скорости, но наносить больший ущерб, чем грубый flood на десятки гигабит.

Нужны метрики нескольких типов: сеть, соединения, HTTP-коды, задержки базы данных, нагрузка на приложение, структура запросов, география источников.

Как строят защиту на практике

Рабочий подход обычно многоуровневый. На границе сети фильтруется мусорный трафик, на транспортном уровне режутся аномальные соединения, на уровне приложения анализируется поведение клиентов.

Полезно заранее проверить какие страницы и API самые тяжелые, есть ли лимиты запросов, можно ли быстро включить CDN и кэш, кто принимает решение во время инцидента и как выглядят нормальные пики нагрузки.

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

Что стоит запомнить

L3, L4 и L7 — это три разных способа перегрузить сервис. Один бьет по каналу связи, второй по соединениям, третий по логике приложения. Внешне все выглядит как «сайт лежит», но причины разные.

Поэтому грамотная защита начинается не с покупки модного сервиса и не с паники в чатах, а с точного ответа на вопрос: где именно сейчас узкое место. Когда это ясно, борьба становится предметной, а не наугад.