Что такое DDoS-атака простыми словами
DDoS (Distributed Denial of Service) — распределенная атака, цель которой сделать сайт, приложение или API недоступными для пользователей. Обычно злоумышленник не пытается украсть данные: он создает столько соединений или запросов, что инфраструктура перестает обслуживать настоящих посетителей.
Представьте магазин, в который одновременно вошли тысячи ложных покупателей. Они заполняют помещение, занимают кассы и задают продавцам бессмысленные вопросы. Реальные клиенты не могут попасть внутрь или оформить покупку. В интернете роль таких посетителей выполняет ботнет — сеть зараженных компьютеров, смартфонов, серверов, роутеров, камер и других устройств.
Интерактивная схема: как развивается DDoS-атака
Нажмите на этап, чтобы увидеть, что происходит с инфраструктурой и какую метрику проверять.
1Начало атакиНовый паттерн
2Резкий рост RPSRequests/sec ↑
3Рост нагрузки CPUCPU / RAM ↑
4Очередь запросовp95 latency ↑
5Ошибки 502 / 503 / 5045xx ↑
6Сайт становится недоступенSLA ↓
7Потеря пользователейКонверсия ↓
8Фильтрация трафикаWAF + Rate Limit
9Восстановление работыМетрики → baseline
Почему современные атаки сложно обнаружить
Примитивный поток одинаковых запросов с нескольких адресов обнаружить легко. Современные ботнеты меняют User-Agent, используют реальные браузеры и residential IP, выполняют JavaScript, сохраняют Cookie и имитируют переходы по страницам. Внешне такой трафик может напоминать рекламную кампанию или вирусный рост посещаемости.
Поэтому количества запросов недостаточно. Нужно одновременно оценивать:
- скорость и равномерность запросов;
- целевые URL и HTTP-методы;
- географию, ASN и тип сети;
- User-Agent, заголовки, Cookie и выполнение JavaScript;
- глубину просмотра, длительность сессий и конверсию;
- нагрузку на CPU, RAM, сеть, диск, приложение и базу данных.
Какие бывают DDoS-атаки
| Уровень | Примеры | Что перегружается | Характерные симптомы |
|---|---|---|---|
| L3/L4 | SYN Flood, UDP Flood, ICMP Flood, DNS Amplification | Сетевой канал, таблица соединений, TCP/IP-стек | Высокий входящий трафик, потеря пакетов, сервер перестает отвечать даже по SSH |
| L7 | HTTP Flood, атака на поиск, авторизацию, API или тяжелые страницы | Веб-сервер, приложение, PHP-FPM, база данных | Запросы выглядят легитимно, но растут RPS, задержки и доля 5xx |
L7-атака часто опаснее для диагностики: запрос GET /catalog сам по себе не выглядит вредоносным. Проблема возникает, когда десятки тысяч клиентов повторяют его одновременно и вынуждают приложение выполнять дорогие операции.
20 признаков DDoS-атаки
Оценивайте признаки группами. Совпадение симптомов из разных групп намного показательнее, чем десять похожих событий в одной метрике.
1. Сайт неожиданно стал медленно работать
Страница, которая обычно отвечала за 500–700 мс, без релиза и маркетинговой активности загружается 5–15 секунд. Сначала проверьте origin, базу данных и внешние API: медленный сайт не всегда атакуют.
2. Массово появляются ошибки 502, 503 и 504
| Код | Что обычно означает | Что проверить |
|---|---|---|
| 502 Bad Gateway | Прокси получил некорректный ответ upstream | Состояние приложения, рестарты, разрывы соединений |
| 503 Service Unavailable | Сервис перегружен или временно недоступен | Очереди, лимиты workers, CPU и память |
| 504 Gateway Timeout | Upstream не ответил вовремя | Медленные запросы к БД и внешним сервисам |
3. CPU постоянно загружен на 90–100%
При естественном росте аудитории нагрузка обычно увеличивается постепенно и сопровождается ростом полезных действий. Во время атаки процессор может достичь предела за несколько минут, а продажи останутся прежними или снизятся.
4. Load Average вырос в несколько раз
Load Average отражает число процессов, выполняющихся или ожидающих ресурсы. Сравнивайте значение не с универсальным числом, а с количеством CPU-ядер и собственной базовой линией. Например, скачок с 0,8–1,1 до 15–40 без плановой задачи требует расследования.
5. Резко выросло количество HTTP-запросов
Скачок с десятков до сотен или тысяч запросов в секунду за короткий интервал подозрителен, особенно ночью или без рекламной кампании. Но абсолютный порог индивидуален: 500 RPS могут быть критичны для небольшого WordPress и нормальны для кешируемой статики.
6. Посещаемость выросла, а продаж и заявок больше не стало
Если число «посетителей» увеличилось в десять раз, но заказов столько же или меньше, проверьте качество трафика. Падение конверсии может объясняться ботами либо тем, что реальные клиенты не могут пользоваться перегруженным сайтом.
7. В логах тысячи одинаковых запросов
Повторяющиеся обращения к /wp-login.php, /xmlrpc.php, /.env, /.git/config или одному API-методу — сильный сигнал автоматизации. Однако сканирование уязвимостей и DDoS — не одно и то же: оцените интенсивность и влияние на ресурсы.
8. Большинство запросов сосредоточено на нескольких URL
Живые пользователи открывают карточки, статьи, корзину и формы. Атакующий выбирает дешевые для него, но дорогие для сервера точки: главную, поиск, фильтры, авторизацию, XML-RPC или API.
| URL | Почему привлекает ботов |
|---|---|
/ |
Универсальная цель; страница часто динамическая |
/search |
Может запускать тяжелые запросы к БД |
/login, /wp-login.php |
Авторизация, подбор паролей и создание сессий |
/xmlrpc.php |
Чувствительная точка WordPress |
/api/* |
Обход кеша и нагрузка на бизнес-логику |
/.env, /.git/config |
Поиск секретов и конфигурации; чаще сканирование, но может входить в смешанную атаку |
9. Резко выросло количество уникальных IP
Распределенная атака может идти с десятков тысяч зараженных устройств. Особенно подозрителен почти мгновенный рост новых адресов, которые выполняют один и тот же сценарий.
10. Значительная доля IP принадлежит дата-центрам
Анализируйте ASN и тип сети. Поток из hosting/cloud-сетей может указывать на арендованные серверы или прокси. Но блокировать весь AWS, Google Cloud или Hetzner без контекста опасно: там могут находиться партнеры, API и полезные роботы.
11. Изменилась география трафика
Если локальный магазин внезапно получает большую долю запросов из стран, где у него нет клиентов, это полезный индикатор. Сам по себе иностранный трафик не является атакой — ищите одновременный рост RPS, ошибок и однотипного поведения.
12. User-Agent выглядит подозрительно
В логах могут появиться curl, python-requests, Go-http-client, старые версии браузеров или сотни тысяч полностью одинаковых строк. User-Agent легко подделать, поэтому проверяйте согласованность заголовков, TLS/HTTP fingerprint и поведение клиента.
13. Один IP выполняет сотни запросов в секунду
Человек редко генерирует сотни запросов каждую секунду с идеально равными интервалами. Исключения возможны для NAT, корпоративных сетей, API-клиентов и поисковых роботов — лимит должен учитывать назначение endpoint.
14. Клиенты не загружают CSS, JavaScript и изображения
Браузер после HTML обычно запрашивает стили, скрипты, шрифты и изображения. Поток только к HTML или API может быть автоматизированным. Для SPA и мобильных приложений паттерн будет другим, поэтому сравнивайте с нормальным профилем именно вашего сервиса.
15. Отсутствуют Cookie и устойчивые сессии
Простые боты игнорируют Cookie и каждый запрос начинают как новый клиент. Современные инструменты умеют поддерживать сессии, поэтому отсутствие Cookie — лишь один из сигналов.
16. Клиенты не выполняют JavaScript
JS-проверка отделяет часть простых HTTP-клиентов от браузеров. Но она не является абсолютным доказательством: поисковые роботы могут выполнять JavaScript, продвинутые боты используют headless-браузеры, а у реальных пользователей скрипты иногда заблокированы.
17. Нагрузка появляется ночью или в нетипичное время
Атакующие часто выбирают часы минимального внимания команды. Сравнивайте текущий профиль с обычной сезонностью, часовым поясом аудитории и расписанием фоновых задач.
18. Хостинг сообщает о превышении лимитов
Предупреждения о CPU, количестве процессов, соединениях или трафике часто становятся первым заметным сигналом. Запросите у провайдера сетевые графики и уточните, какой ресурс исчерпан.
19. Веб-сервер или приложение перезапускаются
OOM Killer, исчерпание workers и health-check могут вызывать рестарты nginx, Apache, PHP-FPM или контейнеров. Обязательно исключите утечку памяти, ошибочный deploy и внутреннюю задачу.
20. Поведение посетителей неестественно однообразно
Тысячи клиентов открывают один URL, проводят на нем доли секунды, не переходят по ссылкам и не взаимодействуют с формами. Чем больше независимых IP повторяют одинаковую последовательность, тем выше вероятность координированной автоматизации.
Как проверить, действительно ли на сайт идет DDoS-атака
Даже если вы заметили несколько тревожных признаков, не стоит сразу делать вывод, что сайт подвергся DDoS. Похожие симптомы вызывают ошибки в коде, неудачные обновления, проблемы с базой данных или резкий всплеск интереса к публикации.
Ниже — пошаговый алгоритм, который используют специалисты по информационной безопасности. Все этапы раскрыты по умолчанию; ненужные карточки можно свернуть нажатием на заголовок.
1Проверьте скорость роста запросовRPS
Первое, что необходимо посмотреть, — количество запросов в секунду (Requests Per Second).
| Время | RPS | Оценка |
|---|---|---|
| 09:00 | 48 | Обычный уровень |
| 09:10 | 52 | Обычный уровень |
| 09:20 | 61 | Небольшой рост |
| 09:30 | 4 850 | Резкая аномалия |
| 09:35 | 8 230 | Критический рост |
Если рост произошел за несколько минут без рекламной кампании, вирусной публикации или другого понятного события, это серьезный повод продолжить проверку.
2Проверьте нагрузку на процессорCPU / RAM
Подключитесь к серверу и откройте мониторинг процессов:
top
# или
htop
Обратите внимание на загрузку CPU, число процессов, свободную память, а также процессы nginx, Apache, PHP-FPM, MySQL или PostgreSQL.
При HTTP Flood процессор часто загружен веб-сервером или приложением. Если ресурсы потребляет база данных, фоновая задача или сторонний процесс, причина может быть в производительности, а не во внешней атаке.
3Посмотрите Load AverageОчередь процессов
uptime
# или
cat /proc/loadavg
| Состояние | 1 минута | 5 минут | 15 минут |
|---|---|---|---|
| Нормальная линия | 0.75 | 0.83 | 0.92 |
| Во время перегрузки | 18.4 | 24.8 | 31.6 |
Сопоставляйте Load Average с количеством CPU-ядер. Если сервер имеет четыре ядра, а показатель стабильно превышает 20–30, процессы проводят много времени в очереди и нужно искать источник нагрузки.
4Проанализируйте access.logГлавный этап
Для Nginx:
tail -f /var/log/nginx/access.log
Для Apache:
tail -f /var/log/apache2/access.log
Ищите повторяющиеся IP, одинаковые URL и User-Agent, а также большое количество запросов за короткое время.
185.xxx.xxx.xxx GET /wp-login.php
185.xxx.xxx.xxx GET /wp-login.php
185.xxx.xxx.xxx GET /wp-login.php
GET /.env
GET /.env
GET /.git/config
Тысячи повторов — явный сигнал автоматизации. Но сначала определите интенсивность: редкое сканирование еще не является DDoS.
5Найдите самые активные IPTop talkers
Для стандартного формата access.log Nginx:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
| IP | Запросов |
|---|---|
185.xxx.xxx.xxx |
84 235 |
103.xxx.xxx.xxx |
78 120 |
91.xxx.xxx.xxx |
66 944 |
176.xxx.xxx.xxx |
61 337 |
Один реальный пользователь редко отправляет десятки тысяч запросов за короткое время. Учитывайте NAT, корпоративные сети, API-клиентов и поисковых роботов, прежде чем блокировать адрес.
6Определите атакуемые URLTop paths
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
| URL | Запросов |
|---|---|
/wp-login.php |
1 248 000 |
/xmlrpc.php |
814 000 |
/.env |
205 000 |
/.git/config |
97 000 |
/admin |
63 000 |
Если подавляющее большинство запросов приходится на ограниченный набор технических URL, высока вероятность автоматизированного сканирования или атаки. Значения в таблице — иллюстрация формата отчета, а не статистика TrafficVeil.
7Проверьте User-AgentКлиентский профиль
Подозрительными могут быть массовые запросы с curl, python-requests, Go-http-client, Java, Apache-HttpClient или okhttp. Тревожна и полная однотипность браузерных строк:
Chrome/120
Chrome/120
Chrome/120
Chrome/120
User-Agent легко подделать. Сопоставляйте его с HTTP-заголовками, TLS fingerprint, Cookie, JavaScript и последовательностью действий.
8Проверьте распределение по странамGeoIP
Если локальный сайт за несколько минут начал получать значительную долю трафика из десятков новых стран, проведите дополнительный анализ. Не блокируйте страны только по факту появления: поисковые системы, CDN и облачные сервисы используют международную инфраструктуру.
Оценивайте географию вместе с ASN, типом сети, скоростью запросов и поведением клиентов.
9Посмотрите тип сетиNetwork Type
| Тип сети | Что означает |
|---|---|
| Residential | Домашний интернет |
| Mobile | Мобильные операторы |
| Business | Корпоративные сети |
| Hosting | Виртуальные и выделенные серверы |
| Proxy | Прокси-сервисы |
| VPN | VPN-провайдеры |
| Tor | Выходные узлы сети Tor |
Высокая доля нового трафика из hosting, VPN, proxy или Tor повышает риск, но не доказывает атаку. Современные ботнеты также используют residential и mobile IP.
10Проанализируйте ASNВладелец сети
ASN (Autonomous System Number) показывает, какому оператору или облачной платформе принадлежит IP-адрес.
| ASN | Организация |
|---|---|
| AS16509 | Amazon AWS |
| AS15169 | |
| AS8075 | Microsoft |
| AS24940 | Hetzner |
| AS14061 | DigitalOcean |
| AS9009 | M247 |
| AS16276 | OVH |
Если тысячи однотипных запросов сосредоточены в небольшом числе ASN, это сильный индикатор автоматизированной активности. Не блокируйте весь ASN, пока не проверите легитимные зависимости.
Как отличить DDoS от сканирования сайта
Не вся подозрительная активность является DDoS. Массовые сканеры ищут панели администратора, резервные копии, открытые Git-репозитории, конфигурационные файлы, уязвимости CMS и забытые API.
Ключевое различие — не название URL, а объем, продолжительность и влияние на доступность. Один сканер может искать уязвимости, не создавая заметной нагрузки; распределенный поток тех же запросов способен превратиться в DDoS.
Что чаще всего ищут злоумышленники
| URL | Назначение |
|---|---|
/wp-login.php |
Подбор паролей WordPress |
/xmlrpc.php |
Злоупотребление WordPress XML-RPC |
/.env |
Получение секретов приложения |
/.git/config |
Поиск исходного кода проекта |
/phpMyAdmin |
Панель управления базой данных |
/admin |
Административные панели |
/actuator |
Spring Boot Actuator |
/vendor/phpunit |
Уязвимые PHPUnit endpoints |
/backup.zip |
Архивы сайта |
/config.php |
Конфигурационные файлы |
/composer.json |
Информация о зависимостях |
/storage/logs |
Логи приложения |
Разбираем реальные ситуации
Отдельный симптом редко позволяет сразу назвать причину. Ниже — пять типовых ситуаций, в которых DDoS легко перепутать со сбоем приложения, фоновой задачей или естественным ростом аудитории.
1Сайт резко стал открываться за 15–20 секунд504 / latency
Что произошло. Еще утром сайт работал нормально, а после обеда каждая страница стала загружаться по 15–20 секунд. Иногда появляется 504 Gateway Timeout, иногда страница все же открывается.
| Возможная причина | Приоритет проверки |
|---|---|
| DDoS HTTP Flood | ★★★★★ |
| Проблемы с базой данных | ★★★★☆ |
| Медленный или перегруженный хостинг | ★★★☆☆ |
| Ошибка после обновления | ★★☆☆☆ |
| Высокая нагрузка от поисковых роботов | ★☆☆☆☆ |
- ✅ CPU и свободную память;
- ✅ Load Average;
- ✅ Requests/sec и p95 latency;
- ✅
access.log; - ✅
nginx error.log.
2CPU постоянно показывает 100%, но посетителей почти нетCPU saturation
На первый взгляд кажется, что сервер неисправен. На практике сначала нужно определить процесс, который потребляет ресурсы.
| Причина | Как проверить |
|---|---|
| DDoS | Посмотреть RPS, соединения и top URL |
| Парсер | Проверить User-Agent и последовательность страниц |
| Тяжелый SQL-запрос | Открыть MySQL Slow Query Log или pg_stat_activity |
| PHP | Проверить процессы и очередь PHP-FPM |
| Cron / backup | Проверить расписание задач и потребление диска |
Если CPU потребляет веб-сервер одновременно с резким ростом RPS, версия с HTTP Flood становится сильнее. Если нагрузку создает один SQL или архиватор, причина внутренняя.
3Посещаемость выросла в пять раз, а заказов стало меньшеКонверсия ↓
Такое расхождение указывает на ухудшение качества трафика или недоступность ключевых страниц для реальных клиентов.
| Метрика | До | После | Изменение |
|---|---|---|---|
| Посетители | 7 200 | 42 000 | ×5,8 |
| Заказы | 184 | 179 | −2,7% |
| Конверсия | 2,56% | 0,43% | −83% |
Нормальный рост посещаемости обычно сопровождается ростом хотя бы части полезных действий. Если заявки не увеличились, проверьте источники, глубину просмотра, доступность корзины и долю автоматизированных клиентов.
4Ночью сайт начинает тормозитьНочная аномалия
| Возможная причина | Что проверить |
|---|---|
| DDoS | RPS, новые IP и ASN |
| Backup | Cron, disk I/O и время запуска резервной копии |
| Индексация | User-Agent и верификацию поискового робота |
| AI-боты | Логи, robots.txt и частоту обхода |
| Парсер | Top URL, интервалы и отсутствие Cookie |
Сравните ночной профиль с обычным расписанием фоновых задач. Если нагрузка начинается строго по расписанию, сначала исключите backup, отчеты и индексацию.
5Все началось после публикации статьиВирусный трафик?
Иногда это действительно вирусный рост, но момент публикации также может совпасть с началом парсинга или атаки.
- Растут переходы по ссылкам
- Растут заявки и подписки
- Увеличивается время на сайте
- Открываются разные страницы
- Открывается одна страница
- Заказы не растут
- Одинаковые User-Agent
- Нет JavaScript и Cookie
Ошибки диагностики
Поспешный вывод опасен в обе стороны: можно заблокировать настоящих клиентов или потерять время, считая атаку обычной перегрузкой.
«CPU 100% — значит DDoS»
Причиной могут быть MySQL, Redis, PHP, backup, Docker или ошибочный процесс.«Много IP — значит атака»
После рекламы или публикации также приходит много новых пользователей.«Много запросов из США — это DDoS»
Многие сервисы работают через AWS и другие международные сети. Проверяйте ASN.«CDN ничего не показала — атаки нет»
L7-атака может выглядеть как обычный браузерный трафик и проходить базовые фильтры.Самодиагностика за пять минут
Этот экспресс-тест не заменяет расследование, но помогает быстро понять, в какую сторону двигаться.
CPU, RAM и главный потребитель ресурсов
Requests/sec и динамика роста
access.log и повторяющиеся клиенты
Самые популярные URL
KPI здорового сайта
| Метрика | Хорошо | Требует внимания | Опасно |
|---|---|---|---|
| CPU | <60% | 60–85% | >85% |
| RAM | <70% | 70–90% | >90% |
| Load Average | <2 | 2–8 | >8 |
| RPS | Стабильно | ×2 | ×5 |
| Time To First Byte | <300 мс | 300–800 мс | >800 мс |
| 5xx ошибки | 0 | Единичные | Массовые |
| Конверсия | Стабильная | Небольшое снижение | Резкое падение |
| Новые ASN | Немного | Заметный рост | Массовый всплеск |
| Hosting IP | <20% | 20–40% | >40% |
| Residential IP | >70% | 40–70% | <40% |
📊 Анатомия одной DDoS-атаки
Рассмотрим, как типичная L7-атака развивается по минутам — от первых ботов до пика нагрузки.
| Время | Что происходит | Что видит владелец сайта | Что должна сделать защита |
|---|---|---|---|
| 00:00 | Появляются первые боты | Все работает нормально | Фиксировать аномальный рост новых IP и ASN |
| 00:02 | RPS увеличивается в три раза | Незначительное замедление | Анализировать поведение и репутацию IP |
| 00:05 | Начинается HTTP Flood | CPU достигает 80–90% | Включать Rate Limiting и фильтрацию подозрительных клиентов |
| 00:08 | Поток идет на /wp-login.php и /xmlrpc.php |
Появляются первые 503 | WAF блокирует обращения к чувствительным URL |
| 00:12 | Нагрузка продолжает расти | Пользователи жалуются на недоступность | Автоматически ограничивать вредоносный трафик |
| 00:15 | Пик атаки | Без защиты возможен полный отказ | Поддерживать фильтрацию и доступность для легитимных пользователей |
Сценарий иллюстративный: реальная атака может развиваться быстрее, идти волнами или менять целевые URL после включения защиты.
Как отличить DDoS от обычного роста посещаемости
| Признак | Реальные пользователи | SEO-боты | Парсеры | DDoS |
|---|---|---|---|---|
| Конверсия | Обычно растет вместе с трафиком | Не влияет напрямую | Не растет | Часто резко падает |
| Маршруты | Разнообразные | Системный обход ссылок | Ограниченный набор | Массово однотипные |
| JavaScript | Как правило, выполняется | Зависит от робота | Редко | Зависит от инструмента |
| Cookie | Обычно используются | Иногда | Редко | Часто отсутствуют |
| Скорость | Естественная и неравномерная | Ограниченная | Высокая | Очень высокая или координированная |
| Нагрузка | Соразмерна полезной активности | Обычно невысокая | Средняя | Приближается к пределу инфраструктуры |
Чек-лист: находится ли сайт под DDoS-атакой
Производительность
- ☐ Сайт стал заметно медленнее без релиза или плановых работ.
- ☐ Пользователи сообщают о недоступности.
- ☐ Растут 502, 503 или 504.
- ☐ Время ответа увеличилось в несколько раз.
Инфраструктура
- ☐ CPU длительно выше 90%.
- ☐ Load Average значительно выше обычного.
- ☐ Заканчивается RAM или срабатывает OOM Killer.
- ☐ Растут очереди nginx, Apache, PHP-FPM или приложения.
- ☐ Сервисы начали перезапускаться.
Трафик и поведение
- ☐ RPS вырос кратно за несколько минут.
- ☐ Число уникальных IP и новых ASN резко увеличилось.
- ☐ География и типы сетей не соответствуют аудитории.
- ☐ Конверсия упала при росте «посетителей».
- ☐ Клиенты не используют Cookie или не загружают статику.
- ☐ Тысячи клиентов выполняют один сценарий.
Логи
- ☐ Основной поток направлен на один или два URL.
- ☐ Повторяются одинаковые User-Agent и наборы заголовков.
- ☐ Один IP создает аномально много запросов.
- ☐ Множество IP обращается с одинаковыми интервалами.
Количество совпадений — ориентир, а не математическая модель. Вес признаков различается: кратный рост 5xx и исчерпание канала важнее одного необычного User-Agent.
Что делать в первые 10 минут
| Время | Действие | Цель |
|---|---|---|
| 0–2 мин | Зафиксируйте время начала, RPS, 5xx, CPU, RAM, сеть и состояние origin. Не перезагружайте сервер вслепую. | Сохранить исходные данные и исключить внутренний сбой |
| 2–4 мин | Посмотрите access.log, топ URL, IP, User-Agent, страны и ASN. | Определить тип и цель потока |
| 4–6 мин | Включите безопасный rate limit на атакуемые endpoint, WAF и правила для явно вредоносных запросов. | Снизить нагрузку без массовой блокировки клиентов |
| 6–8 мин | Проверьте reverse proxy, кеш и доступность origin только через защищенный контур. | Не позволить обойти фильтрацию по прямому IP |
| 8–10 мин | Сравните метрики после мер, уведомите команду и провайдера, продолжайте наблюдение. | Понять, работает ли защита и меняется ли тактика |
Не перезагружайте сервер сразу
Если вредоносный поток продолжается, нагрузка вернется сразу после запуска. Кроме того, рестарт уничтожит часть оперативной диагностики и гарантированно прервет обслуживание настоящих пользователей.
Убедитесь, что ресурсы потребляет внешний трафик
Сопоставьте запросы с CPU, памятью, диском, соединениями и медленными SQL-запросами. Если нагрузку создает фоновая задача или ошибка приложения, сетевые блокировки не помогут.
Включите Rate Limiting
Начинайте с чувствительных URL и разумных лимитов. Учитывайте NAT и легитимные API-клиенты. Для распределенного low-rate HTTP Flood ограничения только по IP может быть недостаточно — комбинируйте их с сессиями, fingerprint, ASN и поведенческими сигналами.
Активируйте WAF и Reverse Proxy
Фильтрация должна происходить до origin. Закройте прямой доступ к реальному IP сервера, иначе атакующий сможет обойти защитный контур. Кешируйте безопасные ответы и ограничьте дорогие endpoint.
Какие показатели нужно контролировать постоянно
На практике команды часто следят только за CPU и замечают атаку уже после отказа сайта. Полезный мониторинг должен одновременно показывать поток запросов, ресурсы сервера, ошибки и качество источников.
| Метрика | Норма | Опасно | Критично |
|---|---|---|---|
| Requests/sec | <100 | 100–500 | >500 |
| CPU | <60% | 60–90% | >90% |
| RAM | <70% | 70–90% | >90% |
| Load Average | <2 | 2–8 | >8 |
| 5xx за интервал | 0 | 1–10 | >10 |
| Уникальные IP | Стабильно | ×2 | ×10 |
| Новые ASN | Немного | Много | Очень много |
| Datacenter IP | <20% | 20–40% | >40% |
| Residential IP | >70% | 40–70% | <40% |
Считайте 5xx как долю от всех ответов и отслеживайте p95/p99 latency. Десять ошибок на десяти запросах опаснее десяти ошибок на миллионе.
🌍 Какие страны чаще становятся источниками подозрительного трафика
Ниже — не выдуманный пример, а снимок базы IP Reputation TrafficVeil на 12 июля 2026 года: 165 695 профилей с категориями suspicious или malicious. Проценты показывают долю IP-профилей, а не долю всех запросов.
📡 Какие сети чаще используются ботами
Оценка ниже отражает типичный уровень риска, а не автоматический вердикт для каждого адреса. Residential и mobile IP также могут входить в ботнет, а hosting-сеть может обслуживать полезный API.
🤖 Как отличить человека от бота
| Признак | Человек | Поисковый бот | AI-бот | Парсер | DDoS |
|---|---|---|---|---|---|
| Выполняет JavaScript | ✅ | Частично | Частично | ❌ | ❌ |
| Использует Cookie | ✅ | Иногда | Иногда | ❌ | ❌ |
| Двигает мышью | ✅ | ❌ | ❌ | ❌ | ❌ |
| Скроллит страницу | ✅ | ❌ | ❌ | ❌ | ❌ |
| Осмысленно взаимодействует с текстом | ✅ | ❌ | Частично | ❌ | ❌ |
| Открывает разные страницы | ✅ | ✅ | Частично | ❌ | ❌ |
| Высокая скорость запросов | ❌ | ❌ | Иногда | ✅ | ✅ |
Матрица помогает отвечать на запросы «как отличить бота от человека», «как определить ботов» и «какие вредные боты заходят на сайт», но надежная классификация всегда использует сочетание признаков.
🚨 Наиболее часто запрашиваемые чувствительные URL
Рейтинг построен по реальным proxy-логам TrafficVeil за последние 24 часа на момент подготовки статьи. Это все обращения к шаблонам URL: среди них могут быть сканеры, боты и небольшая доля легитимных запросов, поэтому значения не следует трактовать как число подтвержденных DDoS-событий.
| URL | Запросов за 24 часа | Что ищут или атакуют |
|---|---|---|
/xmlrpc.php |
182 400 | WordPress XML-RPC |
/.env |
21 722 | Переменные окружения и секреты |
/wp-login.php |
14 992 | Авторизация WordPress |
/admin |
6 538 | Административные панели |
/.git |
2 241 | Файлы репозитория |
/actuator |
827 | Spring Boot Actuator |
/vendor/phpunit |
503 | Уязвимые PHPUnit endpoints |
/config.php |
460 | Конфигурационные файлы |
/backup.zip |
8 | Резервные копии |
/phpMyAdmin |
5 | Панель управления базой данных |
Источник: обезличенные данные сети TrafficVeil, окно 24 часа, снимок 12.07.2026. Всего за период обработано 4 038 337 запросов.
Как TrafficVeil обнаруживает аномальный трафик
TrafficVeil анализирует запросы на reverse proxy до их отправки на origin. Решение может учитывать сразу несколько групп сигналов:
- частоту запросов и повторяемость действий;
- страну, ASN, hosting/residential/mobile/proxy/VPN-сети;
- репутацию IP и известные источники угроз;
- User-Agent и согласованность HTTP-заголовков;
- работу с Cookie и выполнение JavaScript;
- обращения к чувствительным URL;
- срабатывания WAF, GeoIP, ASN-фильтров и bot detection.
Задача многофакторного анализа — не заблокировать максимум запросов, а отделить вредоносный поток от настоящих клиентов с минимальным количеством ложных срабатываний.
Частые ошибки при реагировании
- Блокировать целые страны без анализа. Это может отсечь клиентов, поисковых роботов и партнерские сервисы. Сочетайте GeoIP с ASN, репутацией и поведением.
- Полностью отключать сайт. Если фильтрация доступна, сохраняйте обслуживание легитимных пользователей.
- Игнорировать логи. Без top URL, IP, ASN, кодов ответа и User-Agent команда будет менять правила вслепую.
- Полагаться только на IP. Распределенные атаки используют множество адресов, а один адрес может скрывать корпоративную сеть.
- Не иметь плана реагирования. Контакты провайдера, доступ к метрикам и безопасные профили защиты должны быть подготовлены заранее.
Мифы о DDoS
«DDoS всегда полностью отключает сайт».
Нет. Атака может часами лишь повышать задержки и долю ошибок.
«Маленькие сайты никому не интересны».
Ботнеты и автоматические сканеры выбирают цели массово; размер бизнеса не гарантирует безопасность.
«HTTPS защищает от DDoS».
Шифрование защищает данные в пути, но TLS-handshake и HTTP-запросы также потребляют ресурсы.
«Достаточно заблокировать несколько IP».
При распределенном потоке адреса быстро меняются, поэтому нужны rate limit и многофакторная фильтрация.
Заключение
Современный DDoS редко выглядит как «миллион запросов с одного IP». Чаще это распределенный поток, похожий на обычных посетителей. Поэтому смотрите не на один график, а на связку сигналов: RPS и задержки, URL и коды ответа, ASN и географию, Cookie и JavaScript, поведение пользователей и состояние origin.