慢速攻击为何让CDN边缘WAF“失明”
先看关键判断
如果你正在处理WAF规则拦截Slowloris,先别急着照搬网上的参数。Slowloris和慢速POST的核心原理是用极低的发包速率无限期保持HTTP连接,直到服务器连接池被占满。很多运维人员的第一反应是“直接开WAF默认规则”,结果要么误封正常长连接(如WebSocket、HTTP/2),要么攻击依然穿透。原因在于:CDN边缘WAF的默认防护逻辑通常针对大流量DDoS,而非这种“小水管”攻击。
相关阅读:此处可内链到“WAF规则拦截Slowloris常见问题”专题。
1. 理解Slowloris与慢速POST的本质区别
我的处理经验
避坑1:混淆两种攻击类型。Slowloris通过不断发送不完整的HTTP请求头(每次只发一个换行符),拖住连接;慢速POST则是用极慢的速度发送请求体,例如设置Content-Length为1000字节,但实际每30秒才发1字节。两种攻击的检测参数完全不同:前者需监控请求头完成时间,后者需监控请求体接收速率。如果你用同一套规则拦截两者,必然顾此失彼。
正确的做法:在CDN边缘WAF中分别定义两条规则——一条针对“请求头超时”(Header Timeout),一条针对“请求体最小速率”(Minimum Data Rate)。
WAF规则拦截Slowloris:2. CDN边缘WAF的检测原理:请求超时与速率限制
我的处理经验
避坑2:只依赖默认规则,不调整阈值。主流CDN厂商(如Cloudflare、Akamai、Gcore)的WAF默认请求超时通常是30~60秒,但慢速攻击往往在5~10分钟才完成一次“合法”的请求。你需要将超时时间缩短到15~20秒,同时开启“最小接收速率”检查(例如要求至少每秒100字节)。注意:不要将阈值设得太低,否则会拦截正常的长轮询或大文件上传。
建议初始值:
· 请求头超时:15秒
· 请求体最小速率:每秒200字节(可后续根据业务日志微调)
延伸阅读:此处可内链到“WAF规则拦截Slowloris配置案例”相关文章。
关联教程:此处可内链到“WAF规则拦截Slowloris部署与验证”内容。
WAF规则拦截Slowloris:3. 正确配置WAF规则:设置Request Timeout和Minimum Data Rate
验证与回滚
避坑3:阈值设置不合理导致误拦或漏拦。经验教训:某电商平台将请求体速率限制设为每秒500字节,结果用户上传头像的图片(平均200KB)在慢速Wi-Fi下偶发被拦。正确的做法是区分路径:对API接口和静态资源分别设置不同阈值。例如:
· API路径(/api/):请求头超时10秒,请求体速率每秒1000字节
· 上传路径(/upload/):请求头超时30秒,请求体速率每秒50字节(针对大文件)
在CDN边缘WAF规则中,通过“URL路径匹配”条件实现差异化保护。
进阶阅读:此处可内链到“WAF规则拦截Slowloris性能优化”指南。
4. 实战演练:在CDN控制台操作(以通用步骤为例)
验证与回滚
避坑4:生产环境未充分测试就直接上线。无论你使用哪家CDN,配置流程基本一致:进入WAF规则引擎 → 创建新规则 → 设置“请求特征”字段(如Header Complete Time、Body Transfer Rate)→ 触发动作设为“拦截”或“挑战”。以下为关键操作点:
· 选择“速率限制”类规则,而非“HTTP协议异常”类(后者通常不检测极小速率)
· 开启“学习模式”至少24小时,记录误判率
· 启用后观察“日志”中的“速率限制”命中次数,排除正常请求
5. 验证与测试:使用slowhttptest和自定义脚本
验证与回滚
避坑5:忽略日志,一次性配置永不再看。测试时不要只触发攻击,还要验证正常请求是否受影响。推荐工具:
· slowhttptest -H -u https://yourdomain.com -c 1000 -r 200 -windows 1 (模拟Slowloris)
· slowhttptest -B -u https://yourdomain.com -c 1000 -r 200 -data 1024 (模拟慢速POST)
同时用curl发送一个正常请求:curl -i --header "Connection: keep-alive" https://yourdomain.com。如果正常请求被拦截,说明阈值太激进,需要回滚。
6. 日志分析与规则调优
避坑6:没有回滚计划,导致业务中断。上线后每天检查WAF日志,重点看“规则命中”中的源IP、User-Agent和请求速率。若发现某个CDN边缘节点误拦了正常用户,可通过IP白名单或路径例外来放行。同时保留规则的历史版本,一旦出现大面积误拦截,立即回退至前一个版本。记住:任何WAF规则都不是终身免疫的,应用版本升级或用户行为变化都需要重新评估阈值。
7. 回滚与应急预案
最容易被忽略的坑:没有预案。建议在CDN控制台中预先创建一条“宽松规则”(超时60秒、速率100字节),当紧急误拦时一键切换。同时开启CDN的“安全事件自动通知”,一旦拦截率异常飙升,立即得到报警。实际案例:某社交应用因规则过严导致用户无法发布图片,运维团队花了40分钟定位问题,如果有回滚预案,只需2分钟。
总结:WAF规则拦截Slowloris并不复杂,但细节决定成败。区分攻击类型、分路径设置阈值、充分测试、持续观察、预留回滚——这五个步骤能让你避开90%的坑。下次当你的CDN边缘WAF被慢速攻击绕过时,不妨对照本文逐条检查。
延伸阅读
