首页/安全/应急响应速查/Web 访问日志扫描统计

Web 访问日志扫描统计

用 awk 对 access.log 按状态码、来源与路径聚合:404 洪水、单 IP 高频请求与陌生 UA 往往就是扫描器与漏洞探测。

应急响应速查安全更新于 2026-10-13

日志聚合能看出什么

用 awk 对 access.log 按状态码、来源 IP、请求路径与 UA 分别排序计数,扫描与漏洞探测会在统计里自己冒出来:单 IP 请求量畸高、404 集中、陌生 UA、路径带明显字典特征。

判定要留余地

404 多不一定是攻击,站点改版、外链失效、爬虫误爬都会产生同类现象,需要结合单 IP 的 404 集中度与请求节奏定性。统计前先 head 一行确认日志格式,列号一变,awk 结果就全错。

基本信息

状态码combined 格式第 9 列
来源 IP第 1 列
请求行第 7 列(含方法与路径)
UA末列引号内的客户端标识
时间第 4 列方括号内的本地时间
常见路径/var/log/nginx/access.log、/www/wwwlogs/*.log

典型使用场景

  • 判断站点是否正被扫描或暴力探测
  • 定位被成功利用的路径(200 响应里的异常请求)
  • 统计来源 IP 以决定封禁范围
  • 确定攻击时间窗,为其他日志检索提供线索
  • 评估入侵是否源自某个组件漏洞

状态码与来源聚合

状态码与来源聚合
head -n 1 /var/log/nginx/access.log          # 先确认格式与列位
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 20
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 20
grep -aiE 'sqlmap|masscan|nmap|Go-http-client|python-requests' /var/log/nginx/access.log | tail -n 20
zgrep -aiE 'union.*select|/etc/passwd' /var/log/nginx/access.log*.gz 2>/dev/null | tail -n 10

输出逐列读法

统计维度含义正常/异常
状态码分布各类响应占比404 占比异常高说明探测密集
单 IP 请求量来源集中度单 IP 占比过高需核对其请求路径
高频路径被反复访问的 URL出现管理路径、备份文件、配置文件需重点看
UA 分布客户端标识出现扫描器或脚本 UA 即为定性依据
自定义日志格式会移动列位:统计前用 head -n 1 核对一行,必要时按 log_format 定义重新计算字段位置。
别只统计 top 10:慢速扫描与低频探测藏在长尾里,需要按时间维度补查,例如逐小时统计单 IP 的请求量。

时间窗与成功利用线索

时间窗与成功利用线索
awk -F'[][]' '{print $2}' /var/log/nginx/access.log | cut -d: -f1,2 | sort | uniq -c | sort -rn | head -n 20
awk '$9==200 && $7 ~ /(admin|upload|\.php|wp-login)/ {print $1, $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -n 20
awk -F'[][]' '$2 ~ /01\/Oct\/2026:0[0-9]/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head

统计之后要做的三件事

  • 把高频来源 IP 与已成功的 200 请求路径单独导出,作为封禁与清理依据
  • 把攻击时间窗交给日志检索环节,用于比对系统与认证日志
  • 检查服务器是否安装 WAF,若有则调取其拦截记录补充上下文

易错点

  • 把日志格式当固定列号:自定义格式会移动列位,统计结果全歪
  • 只看 top 10:低频慢扫描藏在长尾里,需按时间维度补查
  • 把 404 多等同于被攻击:改版与外链失效会产生同样现象
  • 只看 access.log:错误日志与 WAF 记录往往直接指出被利用的组件
  • 读归档日志忘了 zcat:轮转后的压缩日志要用 zcat/zgrep 才能检索

数据来源与参考

  • Nginx 默认 combined 日志格式说明
  • OWASP:日志监控与审查要点

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌