首页/安全/取证与溯源速查/频率突增定位异常时段
日志溯源53 条

频率突增定位异常时段

对同一日志的特定事件(失败登录、错误码、特定 UA)做频率统计,突增时段对应扫描、爆破或攻击尝试的高峰。

取证与溯源速查安全更新于 2026-10-13

突增本身就是线索

把某类事件单独抽出来统计频率,比看全量日志更容易看出异常:失败登录在某个小时集中爆发、Web 日志出现大量 5xx、同一路径被反复请求、某个 User-Agent 突然高频出现,这些都是扫描、爆破或攻击尝试的典型形态。做法是按小时或十分钟聚合计数,找出峰值时段。

先减去正常业务曲线

监控探活、健康检查、爬虫与业务批量操作本身就会产生规律性高频事件。判断突增前先把已知的固定频率来源标出来,剩下的离群计数才值得深入看,否则报告里会出现大量「疑似扫描」其实是内部监控的结论。

基本信息

适用平台Linux 命令行(grep、awk、sort、uniq、zgrep)
统计对象失败登录、特定状态码、特定路径、特定 User-Agent、特定域名
聚合粒度按小时为主,攻击短促时改用十分钟
对照基线同主机前后时段的分布、同类主机的横向对比
输出峰值时段清单加对应来源地址与请求特征

典型使用场景

  • 确认爆破时间段与来源:按小时统计失败登录,再看来源地址分布
  • 定位扫描行为:统计同一来源在短时间内的多路径请求
  • 发现异常状态码:Web 日志里 5xx 集中出现,可能是利用成功的迹象
  • 识别异常客户端:某个 User-Agent 或工具特征在特定时段集中出现
  • 验证防护效果:某时段后计数归零,说明封禁或加固起了作用

按事件统计频率

按事件统计频率
# 失败登录:按小时聚合
awk '/Failed password|Failed publickey/ {print substr($3,1,2)}' /var/log/auth.log | sort | uniq -c

# 同时看来源地址分布,判断是单源还是多源
grep 'Failed password' /var/log/auth.log | \
  grep -oE 'from [0-9a-fA-F:.]+ port' | awk '{print $2}' | sort | uniq -c | sort -rn | head -20

# Web 日志:压缩历史一起统计 5xx 的时间分布
zgrep -hE ' 5[0-9][0-9] ' /var/log/nginx/access.log* 2>/dev/null | cut -c1-16 | uniq -c | tail -20

# 特定路径被高频请求
zcat /var/log/nginx/access.log.*.gz 2>/dev/null | awk '{print $7}' | sort | uniq -c | sort -rn | head

突增模式与常见含义

模式常见含义验证方式
同源高频失败登录口令爆破看来源地址与尝试的用户名集合
同源多路径 404目录扫描或漏洞探测看请求路径的字典特征
固定间隔规律请求监控探活或计划任务与监控配置、任务计划表比对
5xx 集中出现利用尝试或服务异常对照错误日志与变更记录
单一 UA 高频自动化工具或爬虫提取 UA 与其他来源横向对比
统计口径必须一致:同一个表里混用「按行计数」与「按唯一实体计数」,或者一部分文件没加 -h 导致带文件名前缀,都会让结果不可比。
轮转后的压缩文件要一并纳入统计,否则最早的一段(往往正是攻击开始的时间)会被漏掉;用 zgrep -h 处理多文件可避免输出里混入文件名。

易错点

  • 把监控探活当攻击:未标注固定频率来源时会产生大量误报
  • 漏掉压缩历史日志:只统计当前文件,攻击起点被截掉
  • 统计口径混用:行数与唯一数混在一个表里,对比结论失效
  • 只看计数不看来源分布:多源慢速尝试会被平均掉,看不出来
  • 按固定小时聚合短促攻击:攻击只持续十分钟时会被摊平,应降低粒度

数据来源与参考

  • SANS 日志分析资料
  • nginx 日志文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌