从 access.log 的结构、常见攻击痕迹、过滤命令和证据保留开始,帮助初学者把 Web 日志变成可分析的安全线索。
写在前面:合法学习边界
日志分析是防守方常用技能。本文只讲如何在授权范围内分析自己系统的日志。请不要把日志内容、账号信息、用户数据或敏感路径发布到公共位置。
一、为什么 access.log 重要
Nginx/Apache 的 access.log 记录了每个 HTTP 请求的基本信息。它通常能告诉分析师:
1
2
3
4
| 谁在什么时候访问了什么路径
请求状态是什么
来自哪个 IP
响应大小和耗时是多少
|
安全分析不是只看 500,还要看:
1
2
3
4
5
6
| 大量 404
短时间大量 401/403
异常 User-Agent
异常路径
异常请求方法
重复失败登录
|
二、access.log 的基本结构
典型字段包括:
1
2
3
4
5
6
7
| IP
时间
请求行
状态码
响应字节数
Referer
User-Agent
|
示例:
1
| 1.2.3.4 - - [29/Aug/2026:06:25:00 +0800] "GET /login HTTP/1.1" 200 1234 "https://example.com/" "Mozilla/5.0"
|
三、常见攻击痕迹
1. 扫描探测
特征:
1
2
3
4
| 大量 404
访问不存在路径
目录枚举
工具 User-Agent
|
2. 爆破尝试
特征:
1
2
3
| 大量 401/403
重复请求同一登录接口
短时间高频访问
|
3. SQL 注入尝试
特征:
1
2
3
4
5
| 单引号
and 1=1
union select
%27
sleep
|
4. XSS 尝试
特征:
1
2
3
| <script>
onerror
javascript:
|
5. 文件遍历
特征:
1
2
| ../../etc/passwd
%2e%2e/
|
四、常用分析命令
1. 查看最近日志
1
| tail -n 100 /var/log/nginx/access.log
|
2. 统计状态码
1
| awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
|
3. 查找 404
1
| grep '" 404 ' /var/log/nginx/access.log
|
4. 查找可疑关键字
1
| grep -Ei "select|union|script|passwd|\.env" /var/log/nginx/access.log
|
5. 统计高频 IP
1
| awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
|
五、日志保留原则
1
2
3
4
| 不要随意删除原始日志
先备份再排查
不要把敏感信息复制到公共位置
记录分析过程
|
六、日志分析的结论写法
示例:
1
2
3
| 发现:10.0.0.20 在 10 分钟内对 /admin/login 发起 400 多次请求,返回大量 401。
风险:可能存在口令爆破尝试。
建议:锁定来源 IP;检查是否成功登录;增强 MFA 和告警。
|
七、小结
日志不是流水账,而是时间线。会看日志的人,能把碎片信息拼成攻击链路。