要发现隐藏的慢速攻击,唯一可靠的方法是通过对比基线流量,因为慢速攻击的流量特征与正常访问高度相似,只有通过长期基线对比才能识别出细微的异常。
慢速攻击怎么发现?对比基线流量是核心方法
很多网站管理员都会遇到服务器响应变慢,但查流量又看不出明显峰值的情况,这很可能就是慢速攻击,比如Slowloris或Slow POST,它们的原理很简单:占用连接不释放,或者以极慢的速度发送数据,让服务器资源一点点耗尽,这类攻击不依赖高带宽,所以传统阈值检测很容易漏掉。
你可能会问,如何区分正常慢速用户和攻击?答案就藏在对比基线流量里,正常用户的慢速行为是分散的,而攻击者的慢速连接会集中在特定资源或时间段,且连接数量异常,行业共识认为,慢速攻击的检测难点在于它看起来像正常波动,但通过对比网站自身的基线流量,就能把这种“正常中的不正常”揪出来。
什么是基线流量?
基线流量是网站在无攻击时段的历史流量数据,它不只是一个平均值,而是多维度的统计分布,你需要收集的关键指标包括:
- 请求速率:每秒请求数(RPS)
- 并发连接数:同时活跃的连接数量
- 连接持续时间:从建立到关闭的时长
- 请求大小:每个请求的字节数
- 源IP访问频率:每个IP的请求间隔
通常需要收集至少一周的数据,覆盖工作日和周末,才能建立可靠基线,国内一些大型网站还会按小时粒度统计,以应对业务波动。
为什么慢速攻击会隐藏在基线之下?
因为慢速攻击的速率通常低于正常用户,但连接时间更长,如果只看瞬时流量,它可能淹没在正常波动中,但当你对比基线后,会发现某些连接的平均时长显著高于正常值,而请求速率却偏低,这种“低速率+长连接”的组合就是慢速攻击的指纹。没有基线,你根本看不出异常。
建立网站基线流量模型的三个关键步骤
要有效对比,你得先把自己的基线建好,以下是实操步骤,每一步都可以直接落地。

收集多维流量数据
你需要从Web服务器日志或流量分析工具中提取指标,以Nginx为例,修改日志格式,记录$request_time和$upstream_response_time:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'$request_time $upstream_response_time $connection_requests';
然后将日志导入ELK或Prometheus,用Logstash解析字段,在Kibana中创建聚合视图。关键一定要采集源IP、连接时长和请求速率,这些是检测慢速攻击的核心维度。
确定基线统计模型
常见的做法是使用百分位数,而不是平均值,因为平均值容易被波动带偏,而P95、P99能反映大多数正常行为的边界,过去7天同一时段(如工作日下午2点)的P99连接时长是5秒,那么任何超过5秒的连接都可能异常。
你可以用SQL或Python定期计算:
SELECT PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY request_time) AS p99_time FROM access_log WHERE timestamp BETWEEN '2026-01-01' AND '2026-01-07';
建议每天更新一次基线,以适应业务自然增长。
设定对比阈值并触发告警
根据基线,为每个指标设定动态阈值,一开始可以定得宽松一些,减少误报,然后逐步收紧。
- 连接持续时间超过基线P99的2倍
- 请求速率低于基线P10的0.5倍
- 同一IP的并发连接数超过基线P99的3倍
把这些规则写入WAF或自建检测脚本,发现异常立即告警。多数情况下,你还需要结合业务实际调整阈值,比如促销活动期间手动放宽。
慢速攻击与正常流量对比的三大典型场景
通过对比基线,你可以发现以下三种典型异常,每个场景都对应具体的攻击模式。
长连接低速率
这是最常见的慢速攻击形式,攻击者建立连接后,以几十秒甚至几分钟的间隔发送数据,对比基线,你会看到某个IP的连接持续时间远超正常范围,但请求速率明显偏低。

据统计,这种场景占慢速攻击的多数,解决办法是配置应用层网关,对长时间不发送数据的连接进行超时处理,比如将Nginx的client_body_timeout设为10秒。
部分URI异常集中
攻击者可能针对特定API或登录页面发起慢速攻击,对比基线,如果某个URI的并发连接数高于平时5倍以上,而请求体却很小,那就是异常,这时需要检查该URI是否被频繁打开但未完成。建议在WAF中对该URI单独设置连接数限制。
源IP的请求间隔异常均匀
正常用户的请求间隔有随机性,而慢速攻击工具往往使用固定间隔,对比基线,你能发现某个IP的请求间隔几乎恒定,比如每15秒一次。结合IP黑名单或速率限制,可以有效缓解,比如在Nginx中限制同一IP的请求速率:
limit_req_zone $binary_remote_addr zone=slow:10m rate=10r/s;
国内网站慢速攻击防护方案价格对比
现在市面上有多种防护方案,价格和效果各有优劣,这里整理一个对比表格,供你参考。
| 方案类型 | 典型产品 | 价格范围(年付) | 基线检测能力 | 适合场景 |
|---|---|---|---|---|
| 云WAF | 简米云WAF、酷番云WAF | 几千到几万元 | 自带基线学习,但需配置连接超时规则 | 中小型网站,运维人力有限 |
| CDN防护 | Cloudflare、Akamai | 按流量收费,基础版免费 | 中等,付费版才有基线异常检测 | 全球站点,对延迟敏感 |
| 自建Nginx+Lua | 开源方案 | 免费,但需运维成本 | 可定制,需自己实现基线对比逻辑 | 技术团队强,预算有限 |
| 硬件负载均衡器 | F5、A10 | 数万到数十万元 | 高,但需专业人员配置 | 大型企业,数据中心 |
从价格对比来看

,如果预算有限,自建开源方案配合基线对比是最灵活的,但需要人力维护,云WAF则基本都有基线异常检测功能,性价比不错。一些国内云厂商的WAF已经将慢速攻击检测作为标配,但要注意开启“连接超时”和“请求速率限制”规则。
如何选择适合你的方案?
- 如果你有运维团队,建议自建或使用开源WAF,可以完全控制基线逻辑。
- 如果团队小,直接上云WAF,开箱即用,但记得定期检查告警日志。
- 大型企业可以考虑硬件负载均衡器,配合SIEM系统做全局基线分析。
慢速攻击排查常见问题与解答
慢速攻击和正常用户慢速操作怎么区分?
通过对比基线,正常用户的慢速操作通常时间分散,而攻击者的慢速连接往往集中在特定资源或时间段,且连接数量异常,正常用户慢速时,请求速率依然会波动,而攻击工具大多是匀速,你可以结合源IP的地理位置和历史行为做判断,比如攻击IP通常来自没有业务关联的地区。
慢速攻击检测需要哪些工具?
你需要流量采集工具(如ELK、Prometheus)和基线分析平台,开源社区有基于数据分析的慢速攻击检测脚本,也可以商用WAF的基线学习功能。业内专家指出,关键在于数据采集的准确性和基线的更新频率,建议优先使用ELK,因为它能灵活处理日志并生成可视化报表。
对比基线法能检测所有慢速攻击吗?
不能,但可以检测大部分,一些高级攻击会模拟人类行为,但通过对比多维度基线(如请求大小、URL路径、请求头顺序),仍然能发现异常。结合网络层和应用层的联合检测,效果更好,比如在网络层限制每个IP的连接数,在应用层对比请求间隔,这样即使攻击者模拟人性化,也很难同时绕过。
通过对比基线流量,你才能发现那些隐藏在正常访问中的慢速攻击,建立并维护好网站流量基线,是防御慢速攻击的基础,也是成本最低的检测手段,记得定期更新基线,并结合实际业务调整阈值,让攻击无处遁形。