慢速攻击检测模型通过连接时长与速率双重维度分析,能精准识别伪装成正常用户的低速率耗尽型攻击,这是当前企业防御层最有效的技术路径之一。
慢速攻击之所以棘手,在于它模仿真实用户的行为,攻击者建立连接后,以极慢的速度发送数据,让服务器永远等不到完整的请求,从而耗尽连接池,传统基于包速率或IP频率的检测方法在此失效,因为攻击流量本身并不密集,业内共识认为,必须引入连接时长和传输速率这两个维度,才能从行为模式上揪出异常。
慢速攻击检测模型有哪些核心指标
一个成熟的慢速攻击检测模型,不会只看单一维度,连接时长和速率是两支主梁,但还需要其他指标辅助判断。
连接时长最长寿的“客人”最可疑
正常用户在HTTP会话中,连接时长通常分布在秒级到分钟级,而慢速攻击会刻意维持连接数十分钟甚至数小时,检测模型通过统计每个连接的生命周期,与基线对比,识别出那些远超正常范围的“长住客”。
- 基线建立:基于历史流量,按不同时间段(如白天、夜间)统计连接时长P50、P90、P99。
- 异常判定:当连接时长超过P99的数倍(如3倍),且持续存在,触发告警。
- 实操要点:在Nginx配置中,通过
client_header_timeout和client_body_timeout定义超时,但攻击者往往能在超时前刷新部分数据,所以仅靠服务端超时不够,需要结合反向代理或WAF的会话跟踪。
传输速率慢到像“断网”反而是攻击
攻击者刻意控制发送速率,通常低于1字节/秒,检测模型以滑动窗口计算每个连接的平均速率,将速率极低但连接存活时间极长的行为标记为嫌疑。
- 速率计算:例如每10秒采样一次已接收字节数,若10秒内增量小于某个阈值(如50字节),则判定为低速率。
- 区分正常用户:正常用户也有慢速场景(如上传大文件中途暂停),但连接时长通常不会很长,因此需结合

速率与时长
的联合特征。 - 可验证操作:在Linux上通过
tcpdump抓包,观察攻击流的TCP窗口和ACK间隔,低于正常值就是信号。
辅助指标:请求频率、包大小、方向不对称
单纯时长+速率仍有误报风险,需要补充:
- 请求频率:攻击者通常只发少量请求,甚至一直不发,而正常用户会持续交互。
- 包大小:攻击数据包往往小于MTU,且内容碎片化。
- 方向不对称:攻击者发送极少数据,却期待服务器大量响应(如Slowloris),检测模型统计上行/下行字节比,若比例严重失衡,标记为高风险。
连接时长与速率检测原理是什么
这个问题的核心在于联动分析,而非孤立看一个指标。
先建立正常行为基线
模型需要先学习业务的流量特征,以一个电商网站为例:
- 正常浏览:连接时长30秒-2分钟,传输速率平均50KB/s。
- 正常下单:连接时长3-5分钟,传输速率平均100KB/s。
- 攻击特征:连接时长超过10分钟,传输速率低于1KB/s。
检测模型通过聚类算法,将每个连接映射到“时长-速率”二维坐标系,正常流量集中在高速率、中短时长的区域,而攻击流量则出现在低速率、长时长的角落。
阈值设定与动态调整
静态阈值容易被绕过,所以模型需要动态调整。
- 基于百分位数:比如设定连接时长超过99%分位值且速率低于1%分位值的组合为异常。
- 滑动窗口:每5分钟重新计算基线,适应业务波动(如大促期间正常连接也会变长)。
- 实操命令:在ModSecurity中,可以使用`SecRule`配合`@within`检查连接时长,但需要结合`COLLECTION`持久化,
```
SecRule &IP:CONN_TIME "@gt 600"
"phase:2,id:1001,block,msg:'连接时长异常'"
```
但更完整的方案是使用商业WAF或自研模型,因为它们能维护会话状态。
低速率检测的“前置”陷阱
行业共识认为,慢速攻击检测必须在连接建立后即刻开始,而不是等到数据传输完成,因为攻击者可能永远不发完,所以模型需要在连接生命周期内持续评估速率,如果某连接持续5分钟速率低于阈值,即使还没超时,也要提前告警。
慢速攻击防御方案对比:连接时长检测与传统方法
传统方法侧重于“量”的维度,而连接时长+速率模型侧重于“质”的维度,下表快速对比:
| 维度 | 传统方法(包速率/IP黑名单) | 连接时长+速率模型 |
|---|---|---|
| 检测依据 | 每秒包数、每秒请求数、IP频率 | 连接生命周期、字节传输速率 |
| 对慢速攻击效果 | 基本无效,攻击流量不密集 | 有效,直接命中行为模式 |
| 误报率 | 较高,容易误伤正常爬虫 | 较低,但需配合其他指标 |
| 部署复杂度 | 低,可基于iptables/nginx | 中等,需要会话跟踪机制 |
| 资源消耗 | 低,主要消耗内存 | 稍高,需维护连接状态表 |
从实际场景看,电商平台曾使用iptables限制每秒连接数,但攻击者改用慢速连接后,这个方法完全失效,而引入连接时长检测后,误报率控制在较低水平,但告警准确率显著提升。
企业如何选择慢速攻击检测模型
不同规模的企业,选择路径不同。
中小企业:从开源工具起步
- 推荐方案:Nginx + ngx_http_limit_conn_module + 自定义脚本分析连接时长。
- 局限性:开源方案难以实现“时长+速率”联动,需要自己写Lua脚本或使用ModSecurity。
- 价格考量:免费,但需要投入运维人力。
大型企业:商业WAF或自研模型
- 商业产品:简米云WAF、酷番云WAF、绿盟WAF等都内置了慢速攻击检测模型,它们基于连接时长和速率,已集成到规则引擎中。
- 自研模型:使用机器学习的异常检测,如XGBoost训练“时长-速率”特征,再结合实时流计算(Flink)处理。
- 成本:商业产品按QPS或域名收费,自研模型需要数据团队和维护。
国内慢速攻击检测方案如何选
地域因素影响选择,国内企业更常面对的是HTTP慢速攻击(如Slowloris变种),而非SSL慢速攻击,因此检测模型应优先支持HTTP连接时长监控,许多国产WAF早已支持,但关键在于是否支持“速率”阈值自定义,而非仅靠超时机制。
慢速攻击检测模型价格与成本解析
价格不是统一标准,但可以给出常见范围:
- 开源方案:零软件成本,但需要服务器资源和运维时间,月均成本可能数千元(人力折算)。
- 商业WAF入门版:年费几千到几万元,通常包含基础慢速攻击检测。
- 专业版:年费数万到数十万,支持自定义时长和速率阈值,以及误报调优。
- 按QPS计费:如简米云WAF,按每秒请求数收费,慢速攻击检测包含在内,不额外计费。
需要提醒的是,价格最低的方案未必省钱,如果误报率高导致业务中断,损失更大。
Q&A:慢速攻击检测模型常见问题
连接时长设置多少秒才算异常?
没有统一标准,取决于业务类型,通常以历史P99时长为基准,普通网站建议超过300秒(5分钟)即告警,但文件上传类业务需要放宽,建议先观察一周,设定基线,再动态调整。
速率检测会误伤正常用户吗?
有可能,比如用户网络差,下载一个大文件,速率很低但连接时长很长,这时需要结合请求频率和方向不对称来区分:正常用户会持续发送请求,而攻击者几乎不发,所以单纯速率检测不能单独使用,必须与时长、请求频率联合判断。
开源方案能实现完整的连接时长+速率检测吗?
可以,但需要组合工具,例如使用Nginx的`$connection_time`变量记录时长,通过`$body_bytes_sent`和`$request_time`计算速率,再配合Lua脚本写入日志分析,或者使用ModSecurity的`persistent`集合存储状态,但实时告警和自动阻断能力较弱,适合作为监控环节,不适合直接防御,商业方案在联动性和低误报上更成熟,对于高安全需求的企业,建议直接采用商业WAF。