被攻击后怎样统计请求频率找出可疑目标地址,核心思路是:先抓服务器访问日志,按时间窗口切割请求,用排序工具统计每个来源IP的请求次数,再交叉比对UA、状态码和请求路径,异常高频且行为怪异的IP就是重点怀疑对象。这套流程不依赖昂贵设备,纯手工也能在十几分钟内完成初筛,下面拆开讲。
服务器被攻击后如何定位攻击源IP
攻击发生的那一刻,服务器会留下两种痕迹:系统日志和网络连接记录,前者记的是谁访问了什么,后者记的是谁正在连你的端口,定位攻击源,本质上就是从这些痕迹里把“异常高频”的访问者捞出来。
先看连接层,SSH登录服务器后,用 netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr 这条命令,能直接列出当前所有与服务器建立连接的IP,并按连接数从高到低排序,如果某个IP的连接数远超其他IP,比如其他IP只有个位数,它却顶着几十甚至上百条连接,那它大概率在对你做并发攻击。
再看应用层,攻击者通过HTTP请求打你,每一条都会记录在Web日志里,Nginx日志默认在 /var/log/nginx/access.log,Apache在 /var/log/httpd/access_log 或 /var/log/apache2/access.log,拿到日志后,用 awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -50 快速统计所有IP的请求次数,排名前几的IP就是首要排查目标。
这里有个容易踩的坑:攻击者会伪造IP或使用代理池,日志里的IP可能不是真实源站,所以不要只看IP数量,还要看请求的具体行为,正常用户一分钟内不会刷新同一个URL几十次,但CC攻击脚本会,用 awk '{print $1, $7}' access.log | sort | uniq -c | sort -nr | head -30 统计IP和URL的组合,如果发现某个IP疯狂请求同一个接口,且返回状态码集中在404或500,那基本就能确认是人为构造的攻击流量而不是正常访问。
请求频率异常怎么快速排查与验证
统计出异常IP后,别急着封禁,先验证,误杀正常用户或CDN节点IP的代价比攻击本身更大,尤其要留意CDN来源的IP,排查分三步走。
第一步,核对请求时间分布。 正常用户访问时间分散在几点到几点的区间内,攻击流量往往是脉冲型的,把日志里可疑IP的每一条请求时间拉出来看,用 grep "可疑IP" access.log | awk '{print $4}' | head -50 查看该IP前50条请求的时间戳,如果时间戳之间的间隔极其均匀,比如精确到每0.5秒一次,或者集中在同一秒内爆发几十次,那就是机器行为,基本就是攻击机。
第二步,篡改字段检测。 大多数脚本攻击会露出马脚,比如User-Agent字段为空、全是Python-requests或Go-http-client,又或者Referer字段固定指向某个不相关的站点,可以用

grep "可疑IP" access.log | awk -F'"' '{print $6}' | sort | uniq -c 查看该IP用过的UA,如果一个IP在短时间内换了几十种不同的UA,同时请求频率还很高,那基本是扫站脚本无疑,可以直接标记。
第三步,命中路径分析。 攻击者的目标通常很明确,比如你的登录接口、搜索接口或某个PHP文件,把可疑IP请求过的URL去重后拉出来看,用 grep "可疑IP" access.log | awk '{print $7}' | sort -u,如果它请求的全是带参数的动态接口,或者全是后台路径如 /admin/、/wp-login.php,那这个IP就是在试探系统漏洞或强行撞库,务必封禁。
用日志频率统计找出CC攻击源地址的实操步骤
CC攻击(Challenge Collapsar)是请求频率统计最典型的应用场景,攻击者控制大量肉鸡,向目标服务器发送大量看似合法的请求,消耗服务器资源,这种攻击的特征不是流量带宽大,而是请求数极高,单IP的请求速率轻松达到每秒几十甚至上百次。
实操中,建议按以下顺序执行,逻辑清晰且能避开一些常见坑:
- 先确认日志记录格式,Nginx日志如果没配置自定义格式,默认的combined格式中IP在第一列,如果格式不对,用
tail -n 5 access.log看一眼实际输出,再做字段提取。 - 按一分钟为窗口切分统计,用
awk -v date="$(date +%d/%b/%Y:%H:%M)" '{print $1}' access.log | grep "$date" | sort | uniq -c | sort -nr | head -20只看当前这一分钟内的TOP20IP,这样能捕捉到瞬间爆发的攻击流量,而不会被全天累计数据稀释。 - 把TOP20的IP逐一拿出来做行为验证,具体做法是提取该IP的完整访问记录,评估其对同一URL的重复请求次数,用
grep "IP地址" access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -10看该IP请求最多的路径是什么,如果TOP10路径全是同一个URL,且占比超过该IP总请求的80%,那就是典型的CC攻击行为。 - 交叉验证多个时间窗口,同一个IP如果在早上、中午、下午三个不同时段都出现在TOP10榜上,且请求模式完全一致,那基本可以确认不是用户高峰期的正常波动。
- 验证完毕后对IP做临时封禁,注意写入防火墙规则时先记录原有规则,便于后期确认无误再清除,命令示例:
iptables -I INPUT -s 可疑IP -j DROP。
CC攻击还有一种变体是慢速攻击,即不是高频请求,而是每个连接迟迟不发送完整数据,占用服务器连接数,这种无法靠请求频率报表发现,需要靠 netstat 监控ESTABLISHED状态的连接数,但慢速攻击的主体通常也是少量IP,用前文提到的连接统计方法同样能定位到,如果想区分攻击类型,可以对比同一IP的请求频率和连接数量的比值,高频攻击连接多、请求多;低频慢速攻击连接多、请求少,这个比值差异可以作为参考。

网站被刷流量时如何辨别正常访客与恶意IP
不是所有高频率请求都代表攻击,CDN节点、企业出口网关、公共DNS服务器都会在你网站上留下高频IP痕迹,攻击发生后,如果漏判会有风险,但如果误判,封禁了内容分发网络节点,则会让大面积访客断连,封禁前必须区分“普通高频”和“恶意高频”。
辨别依据主要有以下几个维度:
- 请求路径的多样性,正常爬虫如百度蜘蛛会规律性地抓取多个URL,且抓取频率稳定;恶意攻击则集中在少数几个URL上反复刷新。
- 响应码的分布比例,正常访问的200响应占比通常在90%以上;攻击流量为了探测漏洞,常伴随大量404、403或500,用
grep "IP地址" access.log | awk '{print $9}' | sort | uniq -c查看可疑IP的状态码分布,如果404占比明显偏高,说明它在扫描,不是正常访问。 - 单次会话的页面停留时间,正常访客从打开页面到点击下一个链接通常有数秒间隔,攻击流量则往往是毫秒级连续请求,几乎没有思考时间。
- 请求头缺漏分析,正常浏览器请求头里包含Accept、Accept-Language、Accept-Encoding等完整标头,而很多攻击脚本只带最基本的Host和UA,缺了大量字段,业内专家指出,通过对比请求头完整性就能筛掉相当一部分简易攻击脚本。
综合这四点,如果一个IP同时满足“高频请求单一URL”“404占比高”“请求头缺字段”三条,那基本可以认定为恶意IP,如果只有“请求频率高”这一条符合,那很可能就是正常的高频访问者,不应封禁。
攻击溯源后的快速封禁与后续分析
定位出可疑地址后,处置顺序应该是:封禁 → 观察 → 分析 → 预防,封禁不难,但要确保封禁后业务恢复正常、攻击不再复发,才算是完整闭环。
封禁操作三条途径:
- 服务器防火墙,适用于单IP封禁,生效最快,一条命令即可完成,缺点是纯手动操作,IP量大时效率低。
- CDN的IP黑名单,适用于带宽型攻击,在CDN控制台把你认定的IP拉入黑名单,流量在边缘节点就被拦截,不占用源站资源,现在多家云厂商的CDN高防方案都支持IP黑名单功能,一般是按区域配置,操作路径通常是在“防护设置”或“访问控制”菜单下。
- Web应用防火墙(WAF)的访问控制规则,适用于高频URL或特征攻击,按请求路径或UA特征来做限速控制,比单纯封IP更精准。
封禁后的观察期不能省。

至少观察24小时,确认服务器的连接数、CPU占用率和请求日志是否恢复正常,如果攻击者换了IP继续打,说明IP封禁只能治标,需要结合频率限制、验证码等主动防御手段。
后续分析建议做两件事:
第一件事,把攻击期间的完整日志单独拉出来,用 grep "攻击时间点" access.log > attack_log.txt 保存为一个独立文件,这份日志要保留至少半年,将来做安全复盘、追责取证或配合网警报案时都用得上。
第二件事,统计一下自己被攻击的接口清单,用 awk '{print $7}' attack_log.txt | sort | uniq -c | sort -nr | head -20 找出被攻击者重点关照的接口,这些接口大概率是你的业务核心路径或已知弱点,需要做针对性的防护加固,比如限流、参数校验、接口鉴权。
关于高防服务器是否值得投入,这取决于攻击发生的频率与业务中断的损失,近年来高防产品的价格已经比早期亲民不少,而且按天计费的弹性模式也让中小站长能用较低成本扛住大流量攻击,如果被攻击的频率已经影响到正常流量,比如一个月内反复出现多次,那从性价比角度看,直接采用高防方案往往比每次靠人肉加黑名单更省心。
整个排查过程的要点归纳下来就一句话:别盯着单个IP的请求量绝对值,要看它的行为模式是否像人,频率统计只是第一步,行为分析才是关键,把频率统计的结果和行为特征交叉验证,再来决定封禁还是放行,基本不会出错。
被攻击后怎样统计请求频率找出可疑目标地址会遇到的常见问题
Q:日志文件太大,统计命令跑起来特别慢怎么办?
A:先按时间切割,用 grep "2026-03-15" access.log 或按小时提取攻击时间段的日志到一个临时文件,再对小文件做频率统计,攻击时间点的日志量通常只有全天的十分之一,处理速度会快很多。
Q:多个可疑IP同时高频请求,怎么确认哪个是攻击主力?
A:按请求量的绝对值排序后,对比每个IP的请求URL集中度,最先处理的优先级顺序是:集中在同一URL、返回大量404的IP优先级最高,其次是集中在同一URL但返回200的IP,最后才是请求URL分布广泛的IP。
Q:用统计工具分析后,发现部分请求来自百度或谷歌的爬虫IP,需要封禁吗?
A:不需要,百度官方公布的蜘蛛IP段优先级最高,正规搜索引擎爬虫会严格遵守robots协议,可控性较强,而且搜索引擎自动抓取会带有明显的特征字段,这些在日志中可查,如果确认是官方蜘蛛IP,放行即可,真正需要封的是打着搜索引擎旗号、但UA和IP行为对不上的伪造爬虫。