TurtleGuard

Новости / 24.10.2026

Как понять, что сайт под DDoS-атакой: признаки и команды для проверки

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

новость24.10.20262 минуты чтения

Сайт тормозит или отдаёт 502, и непонятно, атака это, наплыв посетителей или упавшая база. Ниже признаки атаки и команды, которые за пять минут покажут, что происходит. Команды для Linux с nginx, для Apache логи лежат в другом месте, но смысл тот же.

Признаки атаки

  • Сайт отвечает медленно или отдаёт 502 и 504, хотя код и база не менялись.
  • Нагрузка на сервер выросла, а продаж, заявок и регистраций не прибавилось.
  • В логах много запросов с небольшого числа адресов или, наоборот, с тысяч адресов к одной странице.
  • Входящий трафик в разы выше обычного, а исходящий почти не изменился.
  • Хостер прислал письмо об атаке или отключил адрес.

Один признак ещё ничего не значит. Если совпадают два-три, скорее всего, это атака.

Шаг 1. Нагрузка и соединения

Посмотрите нагрузку и число соединений:

uptime
ss -s
ss -ant state syn-recv | wc -l

Load 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».

Подключить сайт