看懂 Nginx 异常日志,区分无害扫描与高危入侵记录

刚搭博客那段时间,我一看到 Nginx 日志里出现 error400404 就紧张,总以为网站被攻击了。

后来天天翻日志才明白:

公网上 90% 的奇怪请求,都是无害扫描,真正危险的只有少数几种。

这篇就用最简单、最口语的方式,教你一眼分清:哪些日志可以无视,哪些看到必须立刻处理。


一、先记 4 类状态码,不用懂也能分风险

  • 200:正常访问,没事
  • 301 / 304:跳转或缓存,完全正常
  • 4xx:对方找不到东西 / 被你拦截,大部分无害
  • 5xx:你服务器扛不住了或报错,需要注意

二、这些日志【完全无害,不用管】

1. 大量 404 乱扫文件

GET /logo.png
GET /static/images/nopic.png
GET /assets/index.js
GET /.env /phpinfo.php /test.php
  • 只是爬虫、扫描器在瞎猜路径
  • 没找到就是 404,对你没任何危害
  • 日志多了看着烦,可以补个空文件,不用恐慌

2. 空 UA、简单 UA(pc、curl 之类)

  • 都是脚本、小爬虫在扫
  • 只要你 Nginx 已经 return 403,就安全
  • 不属于入侵,只是垃圾流量

3. SSL 握手失败、畸形包(\x16\x03\x01…)

SSL_do_handshake() failed
"\\x16\\x03\\x01\\x01\\x0C..."
  • 对方工具太老、发了半截 HTTPS 包
  • 全网每天都有,不是针对你
  • 进不来服务器,直接忽略

4. 一次性 HEAD / 探测请求

  • 扫你网站开没开、用什么程序
  • 扫一下就走,不反复折腾 = 无害

5. signal process started

  • 这是你自己执行了 reload nginx
  • 正常日志,不是错误

三、这些属于【轻度风险,建议拦截】

1. 同一 IP 秒刷大量请求

  • 一秒十几、几十次访问
  • 属于暴力扫描或轻量 CC
  • 用 Nginx 封禁 IP 或用 fail2ban 自动拦

2. 伪装各种爬虫 UA(Google、Amazon、ChatGPT 轮着换)

同一 IP 1 秒内:
Googlebot → Amazonbot → ChatGPT-User → anthropic-ai
  • 典型恶意扫描器,在绕你的 UA 拦截
  • 不是真实爬虫,直接封禁 IP 即可

3. 疯狂访问 /wp-login.php/xmlrpc.php

  • 针对 WordPress 后台爆破
  • 不用怕,但建议限制频率或拦截异常 IP

四、这些是【真正高危入侵,看到立刻处理】

当日中发现有陌生的IP不断访问URL,并带以这些文件参数就得注意了。

1. 日志里出现 evalbase64_decodesystemshell_exec

  • 这是在尝试上传木马、执行后门
  • 即使返回 404/403,也说明有人在真攻击
  • 立刻检查程序、主题、插件是否有异常文件

2. 访问 /wp-config.php/etc/passwd/proc/self/environ

尝试通过网站获取系统级文件,这是非常危险的,当然Linux也没这么容易入侵。

  • 尝试读配置、读系统敏感文件
  • 属于明确的入侵行为
  • 直接封禁 IP,并检查网站权限

3. 大量 POST 上传、奇怪脚本名

POST /1.php
POST /shell.php
POST /upload.php
  • 典型上传 Webshell 行为
  • 检查网站上传接口、插件漏洞
  • 必要时关闭不必要的功能

4. 502 / 504 突然暴增,服务器负载飙升

  • 可能是 CC 攻击、爬虫打满资源
  • 看日志 IP 集中,直接封禁段

5. /wp-admin/* 大量恶意 HEAD / 探测

  • 针对后台的漏洞扫描
  • 虽然不一定成功,但属于明确攻击行为

五、最简单的判断口诀(背会够用)

  • 扫文件、404 一堆:无害,无视
  • 换 UA、频率高:恶意扫描,封 IP
  • 读配置、跑脚本:高危入侵,立刻处理
  • 502、负载高:服务器扛不住,查攻击
  • 畸形包、SSL 错:公网常态,不用管

六、日常维护建议

  1. 不用天天盯着日志看,累且没必要
  2. 配好 Nginx 拦截垃圾 UA + 简单 IP 黑名单
  3. 偶尔用一条命令看高危记录就行:

# 看危险请求
grep -E "400|502|wp-login|xmlrpc|config.php" /var/log/nginx/access.log

# 看真正的错误
tail -f /var/log/nginx/error.log

总结

因为Linux 服务器放在公网,被各种扫描是家常便饭,不用看到一点异常就慌。大部分日志都是爬虫、机器人、全网盲扫,真正想入侵你、有能力入侵的很少。学会区分 “垃圾流量” 和 “真实入侵”,既能省心,又能保证网站安全。

如果你能看懂这些日志,你的服务器安全意识已经超过 80% 的新手站长。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress