技术帮助 · 发布时间:
慢速HTTP攻击不一定制造很高的带宽流量:攻击端可能只发送少量数据,或把请求内容分批拖慢,让连接长期占用服务端资源。业务遭遇慢速HTTP攻击时的防护规则调优,关键不是把所有超时压到最低,而是找出连接被占用的位置,再按业务请求特点逐层收紧。
一、先确认是慢连接,而非普通流量高峰
检查反向代理、Web服务器和负载均衡器的连接数、请求持续时间、已接收字节数及超时日志。若大量连接长时间停留在请求头或请求体读取阶段,却没有持续传输有效内容,应重点排查Slowloris一类慢请求;请求体长时间缓慢上传,则需考虑慢速POST。单看来源IP或总流量不足以定性,代理出口、移动网络可能让许多正常用户共用地址。
同时按路径、方法和客户端类型分组观察。登录页、文件上传和长轮询的正常行为不同,不应直接套用一套阈值。
二、分别设置请求头、请求体和空闲超时
Nginx可检查client_header_timeout、client_body_timeout、keepalive_timeout和send_timeout。它们分别约束读取请求头、读取请求体、空闲保持连接以及向客户端发送数据时的等待间隔;其中send_timeout不是整个响应的总时长限制。
可在确认业务基线后,把普通网页请求的头部读取超时从约10至15秒作为试调起点,空闲保持时间可从约15至30秒评估。具体值要结合网络质量、请求大小和服务器负载调整。大文件上传、弱网客户端或流式响应应采用独立路径规则,避免较短超时误伤。Apache httpd可评估mod_reqtimeout的头部与请求体读取限制;启用前应核对版本、模块状态和现有配置。
三、用并发与速率限制补上超时盲区
超时只能缩短单条连接的占用时间,不能独自阻止大量连接同时建立。可在边缘层、反向代理或Web服务器设置每来源并发连接上限,并对请求频率设置合理门槛;请求速率限制与连接并发限制作用不同,前者约束单位时间内的请求数,后者约束同时占用的连接数。
先按正常高峰观察单个来源的连接分布,再逐步启用限制。共享出口场景不宜仅靠严格的单IP封禁,可结合路径、会话或其他可用信号判断。对上传、长轮询、WebSocket等长连接业务单独设定规则,必要时排除在普通页面策略之外。
四、在边缘拦截,并限制源站直连
若网站使用CDN或WAF,应让外部流量优先经过该层,启用其连接管理、请求超时和异常请求防护能力,并检查源站是否仍能被公网直接访问。源站访问控制应只允许必要的代理或可信网络入口,否则攻击者可能绕过边缘规则直接连接服务器。
边缘设备无法替代源站配置:代理到源站的连接、应用服务器工作进程和文件描述符仍需监控。调优时记录各层的连接上限和超时,避免某一层等待时间过长、另一层资源先耗尽。
五、灰度验证,兼顾防护与可用性
- 建立基线:记录正常时段的并发连接、请求时长、上传大小和超时比例,并标记关键业务路径。
- 小范围试调:先对普通页面收紧一项规则,保留原配置备份;每次只改少量参数,便于定位误伤来源。
- 检查业务影响:观察正常请求成功率、上传中断、登录失败和长连接断开情况,同时确认异常慢连接是否减少。
- 逐步扩大并设回退:指标稳定后扩大规则范围;若出现明显误伤,回退参数并为特定路径制定更合适的阈值。
业务遭遇慢速HTTP攻击时的防护规则调优,应以日志和资源指标验证效果,不要只凭连接数下降判断成功。保留变更记录和回滚方案,才能在攻击变化或业务流量改变时及时修正。
常见问题
缩短超时是不是越多越安全?
不是。阈值过短可能中断弱网访问、文件上传或流式响应,应根据实际请求时长分路径设置。
只封禁高连接数IP够不够?
通常不够。攻击来源可能分散,正常用户也可能共享出口;应结合连接持续时间、请求阶段和业务路径判断。
调优后重点看哪些指标?
关注慢连接数量与持续时间、超时比例、并发连接、源站资源占用,以及正常请求成功率和上传中断情况。

什么时候需要重新调整规则?
网站上线新上传功能、改变长连接用法、流量结构变化或监控显示误伤增多时,应重新核对基线。业务遭遇慢速HTTP攻击时的防护规则调优,应始终随业务特征和观测结果迭代。


