DDoS-атака: что это, как работает и как защитить сайт

1948
DDoS-атака: что это, как работает и как защитить сайт

Сайт может перестать отвечать не только из-за взлома или неудачного обновления. Иногда на него направляют столько обращений, что нормальные пользователи перестают попадать внутрь: страницы открываются через раз, корзина не оформляет заказ, API отвечает с задержкой, а админка висит на самом неприятном месте. Для владельца результат простой: сервис недоступен, поддержка получает жалобы, бизнес теряет заявки и деньги.

DDoS расшифровывается как distributed denial of service, по-русски распределенный отказ в обслуживании. Распределенный означает, что запросы идут не с одного компьютера, а с множества устройств. В атаке могут участвовать зараженные роутеры, камеры видеонаблюдения, серверы, домашние компьютеры, прокси-сети и арендованные облачные машины. Один адрес заблокировали, поток через минуту пришел из других сетей.

Важно не путать DDoS со взломом. Злоумышленникам не обязательно входить в панель управления или красть базу, чтобы причинить ущерб. Достаточно перегрузить канал, соединения, веб-сервер, приложение или базу данных.

Как работает перегрузка: от канала до базы данных

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

Атакующий выбирает место, где нагрузка даст максимум вреда. Если канал узкий, его забивают UDP- или ICMP-трафиком. Если сервер плохо держит соединения, давят SYN Flood или медленными подключениями. Если приложение выполняет тяжелые операции, бьют по поиску, фильтрам каталога, GraphQL, восстановлению пароля, экспорту CSV или генерации PDF.

Пример с интернет-магазином показывает механику без лишней теории. Главная страница может отдаваться из кэша, а поиск по каталогу каждый раз дергает базу, пересчитывает фильтры и сортирует товары. Если боты отправляют тысячи запросов именно в поиск, CDN пропускает обращения дальше, а база начинает отвечать медленно.

Отсюда главный вывод для настройки: сетевые атаки нужно фильтровать до вашей инфраструктуры, а атаки на приложение надо гасить правилами ближе к HTTP. Локальный firewall полезен, но он получает проблему поздно, если мусорный трафик уже занял канал.

Уровни L3, L4 и L7 без лишней теории

В описаниях DDoS-защиты часто встречаются L3, L4 и L7. Это не названия атак, а уровни, на которых работает сеть. Если совсем просто: L3 отвечает за доставку пакетов по IP-адресам, L4 за соединения и порты, а L7 за то, что происходит уже внутри сайта или приложения. Деление нужно не для красоты, а для выбора защиты: сетевой мусор фильтруют у провайдера или анти-DDoS-сервиса, а вредные HTTP-запросы разбирают через WAF и правила для сайта.

L3, или сетевой уровень, ближе всего к IP-адресам и маршрутам. На этом уровне атакующий пытается забить канал большим количеством пакетов. Например, при ICMP Flood на адрес летит поток служебных сетевых сообщений, а при UDP Flood сервер получает массу UDP-пакетов на разные порты. Сайт может быть исправен, но нормальный трафик до него просто не добирается, потому что канал занят мусором.

L4, или транспортный уровень, связан с TCP и UDP. TCP нужен для обычных веб-соединений, где клиент и сервер договариваются о передаче данных. При SYN Flood сервер получает много запросов на начало TCP-соединения и тратит ресурсы на ожидание продолжения. При ACK Flood атакующий шлет поток TCP-пакетов, которые заставляют сетевое оборудование и защитные системы проверять состояние соединений. Такие атаки бьют не по странице сайта, а по способности сервера и сети принимать подключения.

Отдельный тип сетевых атак связан с усилением трафика. При DNS amplification или NTP amplification злоумышленник использует сторонние серверы, которые отвечают на маленький запрос большим ответом. В итоге жертва получает поток данных, который намного крупнее исходных запросов атакующего. WAF почти не помогает в таких случаях, потому что полноценного HTTP-запроса к сайту еще нет. Нужны Anycast, центры очистки трафика, фильтрация у провайдера, механизм SYN cookies и закрытые лишние UDP-сервисы.

L7, или прикладной уровень, находится ближе всего к сайту. Здесь уже есть HTTP и HTTPS, страницы, формы, личный кабинет, корзина, API и админка. HTTP Flood отправляет много GET- или POST-запросов к конкретным адресам: /login, /api/search, /cart, /graphql, /wp-login.php, /xmlrpc.php. Для сервера такие обращения могут выглядеть почти как действия обычных пользователей, особенно если запросы идут через HTTPS и содержат нормальные заголовки браузера.

Главная сложность L7-атак в том, что блокировка по одному признаку часто бьет по нормальным посетителям. За одним IP-адресом могут сидеть пользователи мобильного оператора, офисная сеть, VPN или корпоративный прокси. Поэтому на прикладном уровне смотрят не только на IP, но и на адрес страницы, метод GET или POST, частоту запросов, cookie, заголовки, страну, автономную систему, сессию, токен или ключ API. Здесь уже помогают WAF, rate limiting, challenge-проверки, кэширование и отдельные правила для тяжелых функций сайта.

Тип атаки Куда давит Что видно Где фильтровать
UDP Flood Канал и UDP-порты Растет входящий трафик Провайдер, анти-DDoS-сеть, Anycast
SYN Flood TCP-соединения Много незавершенных подключений Периметр, балансировщик, защита L4
HTTP Flood Сайт, формы, API Много запросов к отдельным URL WAF, CDN, rate limiting
Slowloris Веб-сервер Много долгих соединений Прокси, тайм-ауты, limit_conn

Сервисы защиты в 2026 году

Cloudflare удобен для сайта, который нужно быстро поставить за CDN и WAF. В одной панели есть DNS, CDN, DDoS protection, WAF, Security Events и Rate limiting rules. Для HTTP DDoS в новой панели используется путь Security rules → DDoS protection → HTTP DDoS attack protection → Create override. В правиле задают Override name, Ruleset action и Ruleset sensitivity.

Сильная сторона Cloudflare в простом подключении через DNS и большом наборе готовых правил. Слабое место появляется при открытом исходном сервере. Если старый IP остался в DNS-истории, поддоменах или письмах, атакующий может обойти прокси. После подключения нужно разрешить входящие 80 и 443 только от IP-адресов Cloudflare или другого защитного сервиса.

Yandex Smart Web Security подходит проектам внутри Yandex Cloud. Сетевая DDoS Protection в Virtual Private Cloud защищает публичные IP-адреса на L3/L4, а Smart Web Security работает с HTTP-уровнем через Application Load Balancer, Security profiles, WAF profile и rules. Плюс в связке с облачной сетью, журналами и SmartCaptcha. Минус: для HTTP Flood, логина и API нужны отдельные правила.

AWS Shield логичен для инфраструктуры в AWS. Shield Standard входит в защиту ряда сервисов, Shield Advanced дает видимость атак и интеграцию с AWS WAF, CloudFront и Route 53. Google Cloud Armor раскрывается рядом с Google Cloud Load Balancing, security policies, WAF-правилами и Adaptive Protection. Для обычного VPS оба варианта часто избыточны.

Решение Подходит для Сильные стороны Ограничения
CDN и анти-DDoS-прокси Сайтов, блогов, СМИ, магазинов Кэш, WAF, защита HTTP, быстрое подключение Нужно скрыть исходный сервер
Провайдерская L3/L4-защита VPS, выделенных серверов, сетевых сервисов Фильтрация до сервера, защита канала Не исправляет тяжелые запросы к приложению
AWS Shield Advanced Проектов в AWS AWS WAF, CloudFront, Route 53 Неудобен для маленького сайта вне AWS
Google Cloud Armor Проектов за Google Cloud Load Balancing Security policies, WAF, Adaptive Protection Требует архитектуры Google Cloud

Что настроить до атаки

Подготовка начинается с инвентаризации. Нужно понять, где живет сайт, какие домены и поддомены ведут на сервер, какие порты открыты, где находится админка, какие URL создают нагрузку и кто должен иметь доступ к служебным панелям. Без этого защита часто работает только на главной странице.

После этого настраивают маршрут трафика: домен направляют на CDN или анти-DDoS-прокси, исходный сервер закрывают от прямых обращений, служебные интерфейсы уводят за VPN, bastion host или список разрешенных IP. Redis, Elasticsearch, база данных и тестовые стенды не должны быть доступны всему интернету.

  1. В DNS проверить, что рабочие A- и CNAME-записи идут через защитный сервис, а старые поддомены не раскрывают IP сервера.
  2. В firewall разрешить 80 и 443 только от IP-адресов CDN, анти-DDoS-сервиса или балансировщика.
  3. В WAF создать правила для /login, /admin, /api, /graphql, /wp-login.php и /xmlrpc.php.
  4. В rate limiting ограничить POST-запросы к входу, восстановлению пароля, поиску, экспорту и отправке форм.
  5. В приложении добавить кэш, очереди, лимиты на размер запросов и ограничения для дорогих операций без авторизации.

Для NGINX полезны limit_req, limit_conn, короткие тайм-ауты для медленных клиентов и корректное определение IP за прокси. Если сайт работает за Cloudflare, веб-сервер должен получать реальный адрес клиента из CF-Connecting-IP.

limit_req_zone $binary_remote_addr zone=login_limit:10m rate=5r/m;
 
 location = /login {
 	limit_req zone=login_limit burst=10 nodelay;
 	proxy_pass http://backend;
 }

Что делать во время атаки

Во время атаки сначала отделяют сетевую перегрузку от атаки на приложение. Если растет входящий трафик в битах или пакетах, нужен провайдер или анти-DDoS-сеть. Если канал свободен, но растут HTTP-запросы, смотрят WAF, access.log, Security Events, топ URL, методы, страны, автономные системы, user-agent и частоту обращений.

В Cloudflare можно временно включить Under Attack Mode, но держать сайт в таком режиме постоянно неудобно для посетителей. Точнее работают WAF Custom rules и Rate limiting rules для конкретных адресов: страницы входа, поиска, корзины, GraphQL, API и восстановления пароля. Для сомнительных правил сначала выбирают Log или Managed Challenge, для явного мусора используют Block.

Во время инцидента не стоит менять все DNS-записи без проверки TTL, отключать журналы, открывать панель сервера наружу, блокировать целые страны без понимания аудитории и удалять правила WAF наугад. Лучше быстро ограничить дорогие функции, усилить лимиты и сохранить данные для разбора.

Частые вопросы

Можно ли защититься бесплатно? Можно снизить риск: включить CDN, кэш, доступный WAF, лимиты в NGINX и закрыть прямой доступ к исходному серверу. От крупной сетевой атаки локальные правила не спасут.

Что важнее, WAF или анти-DDoS? Сетевая анти-DDoS-защита нужна против L3/L4, WAF нужен против вредных HTTP-запросов и атак на приложение. Для нормального сайта нужны оба слоя.

Какой минимум нужен WordPress? CDN или анти-DDoS-прокси, закрытый исходный сервер, защита /wp-login.php, ограничение или отключение /xmlrpc.php, обновленные плагины, кэш страниц, резервные копии и WAF.

DDoS-атака защита инструкции гайд
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
21
мая
11:00
Вебинар · Инфосистемы Джет
Каждая пятая компания режет ИБ-бюджет
21 мая разберем исследование «Инфосистемы Джет»: киберриски, бюджеты, кадры и готовность бизнеса к атакам.
Участвовать в вебинаре
Реклама. АО «Инфосистемы Джет», ИНН 771501001, 18+

Техно Леди

Технологии и наука для гуманитариев