服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-25 更新于 2026-08-25 简米科技 5,078 字 12 分钟阅读

被流量攻击后从哪些日志入手排查异常请求来源,流量攻击日志如何排查

导读被流量攻击后,排查异常请求来源最有效的方法是依次检查Web服务器访问日志、CDN日志和WAF日志,通过分析请求频次、源IP、User-Agent和请求路径的异常模式,可以快速锁定攻击源和攻击类型, 很多站长遇到攻击后第一反应是关服务器,其实日志才是第一手证据,你不需要看完所有记录,只要知道从哪几个维度切入,就能……

被流量攻击后,排查异常请求来源最有效的方法是依次检查Web服务器访问日志、CDN日志和WAF日志,通过分析请求频次、源IP、User-Agent和请求路径的异常模式,可以快速锁定攻击源和攻击类型。 很多站长遇到攻击后第一反应是关服务器,其实日志才是第一手证据,你不需要看完所有记录,只要知道从哪几个维度切入,就能在几分钟内找到线索。

流量攻击后排查日志该从哪入手

日志类型有好几种,优先级不同,行业共识认为,排查顺序应该是:Web服务器访问日志 > CDN日志 > WAF日志 > 系统日志,下面挨个说清楚,每种怎么查、查什么。

Web服务器访问日志是首选战场

Nginx或Apache的access.log记录了每一次请求的完整信息,包括客户端IP、时间、请求方法、URL、状态码、User-Agent、Referer等,攻击流量在这里会留下最直接的痕迹。

关键字段说明:

  • $remote_addr:实际的客户端IP,如果经过CDN,需要看$http_x_forwarded_for
  • $time_local:请求时间,精确到秒,用来判断流量是否集中在某个时间段
  • $request:请求行,GET /admin.php HTTP/1.1”,观察是否大量请求同一个路径或随机路径
  • $status:状态码,大量404或499说明在扫描或暴力请求
  • $body_bytes_sent:返回体大小,攻击请求通常返回体很小
  • $http_user_agent:浏览器标识,攻击脚本常使用固定UA或空UA

实操步骤:

  1. 先统计访问量最高的前20个IP:
    awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
  2. 如果某个IP请求数远超其他,比如平时单IP每分钟几十,现在达到几千,直接看这个IP的具体请求:
    grep "192.168.1.1" access.log | head -100
  3. 观察URL和UA是否单一,如果全是同一个UA且URL随机,基本可以确认是攻击源。

日志格式优化建议: 确保日志包含$http_x_forwarded_for,否则CDN场景下记录的都是中间节点IP,Nginx配置示例:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';

CDN日志帮你看到真实IP分布

如果网站用了CDN(如Cloudflare、简米云CDN、酷番云CDN),服务器日志里记录的IP大多是CDN节点,真实IP藏在X-Forwarded-ForTrue-Client-IP里,CDN日志本身会记录请求来源IP、边缘节点、回源信息,是判断攻击是否来自节点分布的关键。

CDN日志分析要点:

  • 回源请求比例突然升高,说明缓存失效,攻击可能直接打源站
  • 被流量攻击后从哪些日志入手排查异常请求来源,流量攻击日志如何排查

  • 来自某个边缘节点的请求量远高于其他节点,可能是被定向攻击
  • 对比CDN日志中的client_ip和服务器日志中的$http_x_forwarded_for,看是否一致,排除伪造头

命令示例: 下载CDN日志文件后,统计真实IP请求量:

grep -oP 'client_ip="K[^"]+' cdn.log | sort | uniq -c | sort -rn | head -20

WAF日志记录被拦截的攻击样本

WAF(Web应用防火墙)日志会记录被拦截的请求,包括匹配到的规则ID、攻击类型、攻击payload,流量攻击时,WAF日志可能被大量正常请求淹没,但集中分析被拦截部分,能提前发现攻击手法。

重点关注:

  • 规则ID命中次数:如果某个规则ID命中量突然暴增,说明攻击者正在尝试特定漏洞
  • 攻击类型分布:SQL注入、XSS、命令执行等,帮助判断攻击者意图
  • 请求payload:有时能看到攻击者使用的工具特征

异常请求来源分析需要看哪些日志

光知道看哪种日志不够,还得知道从日志里提取哪些特征,异常请求来源分析需要看哪些日志,答案不是单一的,而是组合使用,下面从四个维度教你把日志里的攻击找出来。

请求频率和时间分布是突破口

突发性流量攻击最明显的特点就是请求量短时间内暴增,用日志时间戳拆分到分钟级别,能看到清晰的时间窗口。

操作命令: 提取每分钟请求数

awk '{print $4}' access.log | cut -d: -f1-2 | sort | uniq -c | sort -n

输出类似“145 21/Jan/2026:10:35”,如果某分钟请求数从平时的几十涨到几千,那分钟就是攻击开始点,再结合CDN日志,看哪些IP在那个时间段集中出现。

源IP的分布特征暴露攻击类型

  • 如果少量IP贡献了大部分请求,可能是CC攻击或扫描
  • 如果大量IP,每个IP请求数不多,但总请求数巨大,很可能是DDoS
  • 如果IP集中在同一网段或同一机房,可能是购买云主机发起的攻击

对比技巧: 正常流量IP分布通常符合二八定律,20%的IP贡献80%的请求,攻击流量IP分布更扁平,甚至每个IP请求数都差不多。

User-Agent和Referer是伪装破绽

很多攻击脚本使用固定的UA,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”或“python-requests/2.25”,统计UA出现次数:

awk -F" '{print $6}' access.log | sort | uniq -c | sort -rn | head -20

如果前几名UA不是主流浏览器(Chrome、Safari等),且请求量巨大,就是攻击。

Referer也一样,如果大量请求Referer为空或指向一个陌生网站,可能是刷流量,正常用户访问Referer通常来自搜索引擎、外部链接或直接访问。

被流量攻击后从哪些日志入手排查异常请求来源,流量攻击日志如何排查

请求路径和方法暴露攻击意图

攻击者通常会扫描常见漏洞路径,如/admin、/login、/phpmyadmin、/.env等,统计请求路径出现次数:

awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20

如果某个路径请求量异常高,或者路径是随机字符串(如“/asdf1234”),极可能是攻击。

HTTP方法也要留意,正常用户只用GET和POST,如果出现大量PUT、DELETE、OPTIONS、TRACE,说明有人在做漏洞探测。


如何从日志中定位攻击特征

不同攻击类型在日志里留下的痕迹各有特点,以下四种情况最常见,掌握如何从日志中定位攻击特征,你就能反向判断攻击手段,采取针对性防御。

CC攻击:频率高、目标固定

CC攻击模拟正常用户,但请求频率极高,且通常针对高消耗页面(如搜索接口、报表查询),日志特征:同一IP短时间内请求大量同一URL,状态码多是200,但请求间隔均匀(如每0.1秒一次),UA正常但请求数远超人类极限。

判断方法: 对单个IP统计每秒请求数(QPS),如果超过10且持续几分钟,基本是CC攻击。

DDoS攻击:分布式、流量大

DDoS攻击使用大量僵尸IP,每个IP请求不多,但总量巨大,日志特征:源IP数量极多,分布广泛,请求的URL可能随机或不完整,CDN日志中能看到总请求量飙升,但单个IP在服务器日志中可能只有几十条。

判断方法: 统计日志中唯一IP数量,如果突然从每天几万涨到几十万,且每个IP请求数很少,就是DDoS,此时需要结合CDN或云盾的流量视图确认。

恶意爬虫:UA固定、访问深度异常

恶意爬虫会伪装成浏览器或搜索引擎,但访问深度和频率不对,比如Googlebot正常情况下每天爬几千次,如果突然每小时爬几万次,且爬的都是登录页、后台页面,就是恶意爬虫。

日志特征: UA可能包含“bot”或“spider”但频率异常,或者UA伪装成“Mozilla/5.0”但请求间隔规律,没有人性化访问模式。

扫描和漏洞探测:404居多

扫描器会遍历大量路径,日志中404状态码比例大幅上升,统计404路径:

awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -rn | head -20

如果前几名都是常见漏洞路径(如“/../”、“/admin/”、“/wp-admin”),就是扫描。


网站被攻击日志分析工具推荐

手动分析虽然有效,但日志量大了不现实,下面推荐几款工具,各有侧重,你可以根据自己情况选择,网站被攻击日志分析工具选对了,能节省不少时间。

GoAccess:轻量级实时分析

GoAccess可以在终端里直接生成交互式报告,安装简单,性能好,支持Nginx、Apache、IIS等格式,统计IP、URL、状态码、访客区域等,还能实时刷新。

被流量攻击后从哪些日志入手排查异常请求来源,流量攻击日志如何排查

使用命令:

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html

然后浏览器打开report.html,就能看到各指标的排名和趋势,异常请求一目了然。

ELK Stack:企业级深度分析

Elasticsearch + Logstash + Kibana(ELK)适合日均日志量在GB级以上的网站,Logstash负责解析日志,Elasticsearch负责存储和搜索,Kibana提供可视化仪表盘,你可以设置Dashboard专门监控流量异常,比如按IP聚合请求数,按时间展示QPS曲线,设置阈值告警。

优点: 灵活度高,可以自定义查询;缺点:部署维护成本高,适合有运维团队的情况。

云服务商日志服务

简米云SLS、酷番云CLS、AWS CloudWatch日志服务都支持对日志进行SQL查询,能快速定位异常IP和URL,比如简米云SLS的查询语句:

 | SELECT remote_addr, COUNT() as cnt GROUP BY remote_addr ORDER BY cnt DESC LIMIT 20

这些服务还支持告警,当请求量超过阈值时自动通知,适合不想自己搭建工具的用户。


流量攻击日志分析常见问题

日志文件太大,无法直接打开分析怎么办?

tail -n 1000查看最后1000行,或者用head -n 1000看前1000行,分段排查,如果服务器内存够,用less -N打开,支持翻页搜索,需要统计时,用awk配合sort,即使日志有几十GB,也能通过管道逐步处理,如果实在太大,建议先按时间切割,比如只分析攻击时间段的日志。

没有CDN日志,只有服务器日志,能排查吗?

可以,但需要确认真实IP,如果网站使用了CDN,服务器日志中的IP通常是CDN节点,真实IP在X-Forwarded-For头中,如果日志格式没有记录该头,需要先修改日志格式,然后等待下一次攻击,如果非常紧急,可以联系CDN服务商提供边缘日志,或者直接在CDN控制台查看实时请求统计,据工信部数据,超过60%的网站攻击通过CDN日志能更准确定位源IP。

如何区分正常突发流量和攻击流量?

正常突发流量(如促销活动、热点新闻)通常有规律:请求路径绝大多数是正常页面,IP分布广泛且符合地理分布,UA多样化,Referer来自搜索引擎或社交平台,请求间隔有随机性,攻击流量则表现为:请求路径异常(后台、敏感文件、不存在路径),UA单一或明显异常,IP集中在同一机房或网段,请求间隔过于均匀,状态码404比例高,结合业务历史数据做对比,通常能清晰分开,如果你不确定,可以先用WAF开启拦截模式,看是否影响正常用户,如果影响不大,说明攻击比例高。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱