温馨提示×

nginx日志如何定位攻击

小樊
54
2026-09-29 19:14:02
栏目: 网络安全

利用 Nginx 日志定位攻击,核心思路是:先找到“异常请求”,再结合行为特征判断是否恶意。下面按“日志位置 → 关键字段 → 常见攻击特征 → 实战定位方法 → 工具与规则”系统讲一遍。


一、Nginx 日志在哪里

默认路径(常见):

  • 访问日志:/var/log/nginx/access.log
  • 错误日志:/var/log/nginx/error.log

如果你用了 nginx -t 看到的配置:

access_log /var/log/nginx/access.log main;

二、先看懂访问日志字段(非常重要)

默认 main 格式示例:

192.168.1.10 - - [10/Oct/2024:12:00:01 +0800] "GET /admin.php?id=1' OR '1'='1 HTTP/1.1" 200 1234 "https://evil.com" "sqlmap/1.5"

字段含义:

字段 说明
IP 客户端 IP
时间 请求时间
方法+URL 攻击入口
状态码 200 / 404 / 500
字节数 返回大小
Referer 来源(常见伪造)
User-Agent 客户端(常暴露工具)

三、不同攻击在日志里的“样子”

1️⃣ SQL 注入(SQLi)

特征:

  • URL 含 ' OR UNION SELECT sleep()
  • UA 常见:sqlmap

排查:

grep -E "union|select|sleep\(|or 1=1" access.log

2️⃣ XSS 攻击

特征:

  • URL / 参数含 <script> onerror= alert(
grep -E "<script|onerror=|alert\(" access.log

3️⃣ 目录穿越 / 文件读取

特征:

  • ../ %2e%2e/ /etc/passwd
grep -E "\.\./|%2e%2e|passwd" access.log

4️⃣ 命令注入

特征:

  • ;cat |id &&whoami
grep -E ";|&&|\|id|\|cat" access.log

5️⃣ 扫描器 / 爆破

特征:

  • 短时间大量 404
  • UA:nmap awvs dirbuster
  • 高频访问 /wp-admin /phpmyadmin
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

6️⃣ CC / DoS 攻击

特征:

  • 同一 IP 每秒几十次请求
  • 状态码大量 200 / 503
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

7️⃣ Webshell 访问

特征:

  • 奇怪文件名:shell.php x.php a.aspx
  • POST 请求 + 200
grep -E "POST .*\.php" access.log | grep 200

四、用“行为”而不是“单条”判断

判断攻击者的关键维度

  1. IP 是否异常
  2. 请求频率是否异常
  3. URL 是否敏感
  4. UA 是否工具
  5. 状态码是否试探

✅ 攻击 ≠ 一条奇怪请求
✅ 攻击 = 异常 + 持续 + 目的性


五、实战定位流程(推荐)

Step 1:找高频 IP

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

Step 2:看这个 IP 干了啥

grep "1.2.3.4" access.log

Step 3:看错误日志

grep "1.2.3.4" error.log

Step 4:看是否成功

  • 200 + 敏感路径 = 可能成功
  • 404 / 403 = 试探

六、增强日志(强烈建议)

改日志格式(记录更多)

log_format attack '$remote_addr - $request - $status - $http_user_agent - $request_time';
access_log /var/log/nginx/access.log attack;

七、自动拦截(日志 → 防御)

限流

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

屏蔽 UA

if ($http_user_agent ~* (sqlmap|nikto|masscan)) {
    return 403;
}

八、进阶工具

  • goaccess(实时可视化)
  • fail2ban(自动封 IP)
  • ELK / Grafana(攻击画像)
  • WAF(ModSecurity)

如果你愿意,可以:

  • 发一段真实日志(脱敏)
  • 或告诉我你怀疑的攻击类型

我可以帮你逐条分析谁是攻击者、是否成功、怎么防。

0 踩