Что делать при DDoS-атаке на сайт?

Avatar
Мануэль Шульц · 31.10.2025 · ИТ-безопасность · 7 мин

Недавно Zerlo.net столкнулся с DDoS-атакой. Нас интересовало: как справляться с этим, как распознать такое – и как нам удалось это однозначно доказать? В этой статье я покажу наши шаги, что стоит за DDoS и как Cloudflare помогает в качестве защитного слоя. Если у вас схожие проблемы, вы найдете практические инструменты на нашей Zerlo-Toolseite и другие статьи в Zerlo-Blog .

Баннер статьи: DDoS-атака – Символическое изображение

Источник: Собственная иллюстрация

Объяснение: Что такое DDoS?

Distributed-Denial-of-Service-Angriff (DDoS) - это попытка вывести онлайн-сервис из строя путем массовых распределенных запросов. «Распределенный» означает: атака исходит одновременно от множества, часто автоматизированных источников ( CISA-Leitfaden). ). Грубо различают атаки на сетевом уровне (например, UDP/ICMP-флуды) и на уровне приложений (Layer 7), например HTTP-Floods. . Хорошее, практическое введение также предоставляет OWASP ( (Denial of Service)).

Как это распознать?

Одного метрики редко достаточно. Типичные паттерны: резко возрастающая нагрузка на Origin, но неизменные реальные сеансы/конверсии; внезапно много запросов на «дорогие» конечные точки (логин, поиск, /api, формы); подозрительные или пустые User-Agents; необычные пики из новых ASN; высокая нагрузка на CPU/IO без изменения кода. Помогают чистые логи, которые вы, например, анализируете через Cloudflare Logpush/Log Explorer или на стороне сервера. Компактный контрольный список вы найдете в Zerlo-Blog при схожих инцидентах.

Распознавание через Cloudflare

В Cloudflare эти паттерны можно аккуратно разложить:

Вывод: Для сайтов с большим количеством пользователей предварительный защитный слой, такой как Cloudflare Application Services , является практически обязательным – телеметрия и инструменты помогают отличить легитимную нагрузку от атаки и быстро реагировать. Внутренне мы ссылаемся на Zerlo-Blog для базовых статей и на Zerlo-Tools для инструментов.

Личное

Мы в Zerlo 31.10.2025 зафиксировали необычно высокую загрузку – временами сайт несколько раз был офлайн. Сначала я предположил техническую проблему. Затем я проверил число посетителей: почти идентично предыдущему дню, что было странно, так как наш счетчик измеряет только взаимодействие человека (JavaScript). Under-Attack-Mode (UAM) Классическая контр-проверка: Запустить все локально (localhost). Результат: локально 0% нагрузки – значит, внешняя нагрузка должна была быть искусственной. В Cloudflare рост был виден однозначно. Я активировал в тестовом режиме

Статистика Cloudflare: сильный рост входящих запросов

Источник: Собственная иллюстрация

Короче: Нас DDoSили. Больше инсайтов мы постоянно делимся в Zerlo-Blog.

Cloudflare

Если у веб-хостинга уже есть хорошая защита на сетевом уровне, этого часто достаточно для объемных атак, особенно если провайдер сам смягчает их. Однако в Zerlo мы управляем более крупной сетью с несколькими сервисами и нуждаемся в центральных, предварительных интерфейсах, которые интеллектуально терминируют и фильтруют трафик до того, как он достигнет наших Origin. Именно здесь помогает глобальная Edge-сеть, такая как Cloudflare: Anycast, Кэширование, WAF, Bot Fight Mode, Rate-Limiting и детальная телеметрия.

Cloudflare в базовом виде можно использовать бесплатно и можно краткосрочно «разогнать» при атаках. Он не распознает идеально каждый сценарий автоматически – нужно наблюдать за паттернами, – но после правильной настройки правил становится очень эффективным. Для настроек и бенчмарков мы также документируем лучшие практики на zerlo.net/de/tools.

Объяснение механизма защиты Cloudflare

Просто как гениально: Перед фактическим вызовом страницы Cloudflare может включить JavaScript-проверку ( Challenge) ), оценивая при этом сигналы из браузера. Для настоящих пользователей это происходит один раз и почти незаметно; боты и скрипты терпят неудачу или должны тратить значительно больше ресурсов. Результат: Нагрузка на бэкенд падает немедленно, и у вас появляется время для тонкой настройки ( WAF, Rate-Limits, Caching)).

DDoS не предотвращают – им управляют. Искусство состоит в том, чтобы сделать атаки невидимыми для людей, но дорогими для ботов.
Мануэль Шульц
Мануэль Шульц
Zerlo.net

Источник: Краткий обзор ботнетов и DDoS.

Что можно сделать против этого?

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

Краткосрочно: Under-Attack-Mode (UAM) активировать, чтобы немедленно подавить нагрузку Layer 7.

Постоянно: WAF-Regeln для POST/APIs/дорогих GETs, Managed-Challenges для подозрительных User-Agents, Rate-Limiting на IP. Для публичных страниц « Cache Everything“, », для логинов/админов «Bypass on Cookie». Формы защитить с помощью Turnstile .

Эксплуатация: Security Analytics наблюдать, устанавливать оповещения, Logs обеспечивать. Небольшой скрипт может автоматически включать UAM, если пинги пропадают – и уведомлять вас. Примеры и сниппеты мы документируем на zerlo.net/de/blog.

Cloudflare: полезные правила WAF/Rate Limit
(len(http.user_agent) = 0
 or lower(http.user_agent) contains "python"
 or lower(http.user_agent) contains "curl"
 or lower(http.user_agent) contains "bot"
 or lower(http.user_agent) contains "crawler")
=> Action: Managed Challenge

(http.request.method eq "POST"
 or starts_with(http.request.uri.path, "/api/")
 or http.request.uri.path contains "/sendMail.php")
=> Action: Managed Challenge

# Rate Limiting (Beispiel)
(http.request.method eq "POST" and starts_with(http.request.uri.path, "/api/"))
Threshold: 10 requests in 10 seconds per IP
Action: Challenge

# Doku:
# UAM: https://developers.cloudflare.com/fundamentals/reference/under-attack-mode/
# WAF: https://developers.cloudflare.com/waf/
# Rate Limiting: https://developers.cloudflare.com/waf/rate-limiting-rules/
# Challenges: https://developers.cloudflare.com/cloudflare-challenges/
cloudflare_uam_toggle.sh
#!/usr/bin/env bash
# Under-Attack-Mode per API setzen (Beispiel)
# Voraussetzung: CF_API_TOKEN mit Berechtigung 'Zone Settings Edit'
ZONE_ID="<ZONE_ID>"

# UAM EIN
curl -sX PATCH "https://api.cloudflare.com/client/v4/zones//settings/security_level" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"under_attack"}'

# UAM AUS (z.B. wieder auf 'high' oder 'medium')
curl -sX PATCH "https://api.cloudflare.com/client/v4/zones//settings/security_level" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"value":"high"}'

# Mehr: https://developers.cloudflare.com/api/operations/zone-settings-change-security-level
nginx_rate_limit_example.conf
# Nginx: simples per-IP-Limit (Beispiel)
limit_req_zone $binary_remote_addr zone=perip:10m rate=30r/s;

server {
  location /api/ {
limit_req zone=perip burst=60 nodelay;
proxy_pass http://backend;
  }
}

# OWASP-DoS-Cheatsheet: https://cheatsheetseries.owasp.org/cheatsheets/Denial_of_Service_Cheat_Sheet.html

Дополнительные ресурсы

Основы и углубление: NIST-DoS, NIST-DDoS, CISA-DDoS, OWASP-DoS, Cloudflare Learning Center. Другие практические статьи и инструменты вы найдете на zerlo.net и особенно под zerlo.net/de/tools.

Вывод

DDoS – это не чрезвычайное положение, а рабочий случай. Тот, кто быстро распознает аномалии, краткосрочно их снижает и затем целенаправленно укрепляет систему, остается онлайн. Для растущих сайтов Cloudflare в качестве предварительного защитного слоя очень рекомендуется: видимость, немедленные меры и строительные блоки для надежной постоянной работы. Для индивидуальных настроек, контрольных списков и сниппетов мы ссылаемся на Zerlo-Blog и Zerlo-Tools.

Поделитесь нашей статьёй!