404 в access.log: сканеры, не клиенты
Открыл лог — тысячи строк с 404. Паника «сайт сломан» обычно лишняя:
это интернет стучится в /wp-admin, /.env и чужие CMS, которых у вас нет.
Ниже — как отличить шум сканеров от реальной поломки.
Серия «Периметр VPS»: этот разбор → DNSBL → Security Headers.
Это не обязательно DDoS
Автоматические боты перебирают популярные пути на каждом публичном IP.
На чистом nginx/Bitrix/лендинге 404 на /wp-login.php — нормальный фон, не сигнал «нас взломали».
Типичные пути сканеров
/.env
/.git/config
/wp-admin/ /wp-login.php /xmlrpc.php
/phpmyadmin/ /admin/ /manager/
/.aws/credentials
/actuator/env
Если эти URL у вас не существуют — 404 ожидаемы. Если существуют и отдают конфиг/логин без защиты — уже другой разговор (закрыть, fail2ban, VPN).
Команды за 2 минуты
Путь к логу чаще /var/log/nginx/access.log (или access в каталоге сайта).
# топ URI с 404 за хвост лога
awk '$9==404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# топ IP, которые ловят 404
awk '$9==404 {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -15
# живой хвост только 404
tail -f /var/log/nginx/access.log | awk '$9==404'
Формат combined: поле $9 — статус, $7 — URI, $1 — IP. Если у вас кастомный log_format — поправьте номера полей.
Когда бить тревогу
| Ситуация | Что делать |
|---|---|
404 на несуществующие wp-*, .env | Игнор / опционально fail2ban по nginx |
| 404 на ваши реальные ЧПУ / товары | Битые ссылки, редиректы, sitemap |
| Всплеск 404 + рост CPU/LA | Смотреть нагрузку, rate limit, firewall |
200 на /.env или админку без auth | Срочно закрыть доступ |
Связка с fail2ban
Фон 404 не «лечится» мониторингом uptime — это шум периметра. Имеет смысл jail по SSH (и при желании по nginx) — см. fail2ban за 10 минут. Не баньте агрессивно все 404 подряд: можно зацепить легитимных ботов и CDN.
Что смотреть снаружи
Сканеры в логе ≠ «сайт лежит». Снаружи проверяйте главную и критичные URL:
- site-check — код ответа, SSL, редиректы
- Алерты Mediops — 5xx / недоступность до звонка клиента