Новости / 24.10.2026
Как понять, что сайт под DDoS-атакой: признаки и команды для проверки
Признаки DDoS-атаки и команды, которые за пять минут покажут, что происходит: соединения, логи nginx, трафик на канале. И как отличить атаку от наплыва посетителей.

Сайт тормозит или отдаёт 502, и непонятно, атака это, наплыв посетителей или упавшая база. Ниже признаки атаки и команды, которые за пять минут покажут, что происходит. Команды для Linux с nginx, для Apache логи лежат в другом месте, но смысл тот же.
Признаки атаки
- Сайт отвечает медленно или отдаёт 502 и 504, хотя код и база не менялись.
- Нагрузка на сервер выросла, а продаж, заявок и регистраций не прибавилось.
- В логах много запросов с небольшого числа адресов или, наоборот, с тысяч адресов к одной странице.
- Входящий трафик в разы выше обычного, а исходящий почти не изменился.
- Хостер прислал письмо об атаке или отключил адрес.
Один признак ещё ничего не значит. Если совпадают два-три, скорее всего, это атака.
Шаг 1. Нагрузка и соединения
Посмотрите нагрузку и число соединений:
uptime
ss -s
ss -ant state syn-recv | wc -lLoad average выше числа ядер значит, что сервер не успевает. Тысячи соединений в состоянии SYN-RECV — почти верный признак SYN-флуда, атаки на уровне L4.
Шаг 2. Кто шлёт запросы
Возьмите последние запросы из лога nginx и посчитайте, с каких адресов их больше всего:
tail -n 50000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20Если у первых адресов десятки тысяч запросов, а у остальных по несколько, это боты. Если адресов тысячи и у каждого понемногу, атака распределённая, и банить адреса вручную бесполезно.
Шаг 3. Что запрашивают
Посмотрите, по каким страницам бьют и какие у запросов User-Agent:
tail -n 50000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
tail -n 50000 /var/log/nginx/access.log | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head -10Атаки на L7 обычно бьют по тяжёлым страницам: поиску, корзине, входу, или по главной со случайными параметрами вроде /?a=8341. Одинаковый User-Agent у тысяч запросов или пустой User-Agent тоже выдают скрипт.
Шаг 4. Трафик на канале
Если сервер почти не нагружен, а сайт недоступен, проверьте канал:
nload eth0Если входящий трафик упирается в потолок канала, это атака на L3 или L4. Её не отбить на самом сервере: трафик забивает канал раньше, чем доходит до файрвола. О том, чем отличаются атаки разных уровней, мы писали в статье «Атаки L3, L4 и L7: в чём разница».
Это точно не атака?
Перед тем как защищаться, исключите три частые причины:
- Живой наплыв. Рассылка, пост в Telegram, реклама. В логах много разных адресов, обычные браузеры, запросы идут по ссылке из поста, и растут заявки.
- Поисковый робот. Googlebot или YandexBot иногда обходят сайт очень активно. Это видно по User-Agent, такие роботы проверяются по обратному DNS.
- Сломалось что-то своё. Медленный запрос к базе после обновления, закончившееся место на диске, упавший PHP-FPM. Тогда в
error.logвидны таймауты к бэкенду, а трафик обычный.
Что делать дальше
Если это атака, по шагам действуйте как в статье «Сайт под DDoS-атакой: что делать прямо сейчас». Коротко: включить фильтрацию до сервера, спрятать его адрес и закрыть прямые подключения.
Подключить сайт к защите можно за 10–30 минут, хостинг менять не нужно. Как это работает и сколько стоит, описано на странице «Защита сайта от DDoS».