HTTP慢速攻击的本质不是靠洪水般的流量打垮服务器,而是用极低速率、超长连接时间把服务器的并发连接池一点点占满,让正常用户无法建立新连接,最终造成服务瘫痪。
HTTP慢速攻击怎么防御:先看清极低速率如何耗尽连接池
多数人理解的DDoS攻击是大量请求瞬间涌入,带宽被占满,HTTP慢速攻击走的是另一条路:它只建立连接,不着急发送完整请求,或者发送完整请求后以极慢速度读取响应,服务器为每个连接分配了线程、内存和文件描述符,这些资源总量有限,也就是常说的连接池。
- 攻击者用工具批量发起TCP连接,完成三次握手后,每隔十几秒甚至几十秒才发送一个请求头字节。
- 服务器认为客户端网络慢,一直保持连接等待后续数据。
- 当连接数达到上限,新的正常请求被拒绝,网站表现为无法访问或访问极慢。
这个过程的可怕之处在于攻击流量本身很小,可能只有几十KB/s,传统基于流量阈值的防火墙很难触发告警。
连接池为何被“温水煮青蛙”式占满
以Nginx为例,配置里的worker_connections默认值往往是1024,Apache的MaxClients在常见版本中默认256,攻击者只需要同时保持几百个慢速连接,就能让一台中小型服务器弹尽粮绝。
| 对比项 | 正常HTTP请求 | 慢速攻击请求 |
|---|---|---|
| 请求速率 | 毫秒到秒级完成 | 几分钟到几小时持续占用 |
| 单连接数据量 | 完整请求头和body | 可能只发送几个字节 |
| 资源占用 | 短暂分配随即释放 | 长期占用线程和内存 |
| 流量特征 | 突发型 | 平稳低速型 |
| 检测难度 | 容易触发阈值告警 | 极难通过流量大小识别 |
攻击者常用的手法包括Slowloris、Slow POST和Slow Read,Slowloris只发送不完整的请求头,服务器一直等;Slow POST声明很大的Content-Length,然后以极慢速度发送body;Slow Read则以极小窗口读取响应,拖住服务器发送缓冲区。
业内专家指出,单靠传统防火墙很难识别慢速攻击,必须在Web服务器层做严格的超时优化和速率控制,否则连接池会在不知不觉中被耗尽。
服务器连接池耗尽怎么办:从超时配置到应急封禁
遇到这类攻击,第一反应不是重启服务器,而是先确认连接状态。
常用检测和验证命令
在Linux服务器上,运维人员可以执行以下命令快速判断是否被慢速攻击:
netstat -an | grep :80 | awk '{print $6}' | sort | uniq -c | sort -nr:统计80端口的连接状态,如果大量连接处于ESTABLISHED且持续时间异常长,就要警惕。ss -tan state established '( dport = :80 or sport = :80 )':进一步查看源IP分布。tcpdump -i eth0 -s 0 -w slow_attack.pcap port 80:抓包后用Wireshark过滤http.request.method,看是否有连接长时间没有完整请求。
确认攻击后,可以临时采取以下措施:
- 调低
client_header_timeout和client_body_timeout,让不完整的连接快速超时。 - 在Nginx中使用
limit_conn模块限制单IP并发连接数。 - 通过防火墙封禁可疑IP,前提是攻击源没有大规模分散。
- 启用CDN或反向代理,由边缘节点承担慢速连接,源站只接收完整请求。
慢速攻击和CC攻击区别:一个抢带宽,一个占连接
很多站长把HTTP慢速攻击和CC攻击混为一谈,导致买错防护产品,两者区别很明显:
- CC攻击通常模拟大量正常用户访问某个动态页面,消耗服务器CPU和数据库资源,流量可能较大。
- HTTP慢速攻击流量极小,但连接持续时间极长,消耗的是连接池资源而非计算资源。
- 传统高防IP对CC攻击有清洗效果,但对慢速攻击的识别能力较弱,因为慢速连接本身看起来像网络不好的正常用户。
行业共识认为,针对慢速攻击的防护核心在于连接超时策略和速率控制,而不是单纯堆带宽,如果你的业务经常遭遇慢速攻击,选购防护服务时要重点问清楚对方是否支持最小速率限制和连接级行为分析。
最小速率限制的实际配置
Nginx可以通过limit_rate指令限制响应速度,但更关键的是防止客户端读得太慢,一个常见配置组合如下:
http {
client_header_timeout 10s;
client_body_timeout 15s;
send_timeout 10s;
keepalive_timeout 30s;
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 20;
limit_rate_after 1m;
limit_rate 100k;
}
这些参数让不完整的请求头在10秒内必须发完,单IP最多20个并发连接,响应超过1MB后限速100KB/s,既保护连接池,又避免误伤正常大文件下载。
国内服务器与高防方案在慢速攻击防护中的实际成本
地域因素也会影响防护效果,国内服务器普遍带宽成本高,攻击者更容易通过慢速连接占满连接池,美国服务器带宽充裕,但国际线路延迟高,慢速攻击的特征更隐蔽,因为正常跨境用户的网络本身就慢。
高防服务器价格差异背后的连接管理能力
高防服务器价格从每月几百元到数万元不等,价差不仅体现在防护带宽上,更体现在连接管理策略的精细度上,便宜的高防可能只提供流量清洗,对慢速攻击几乎无效,较贵的方案会在应用层做连接超时优化、慢速请求识别和自动封禁,选购前可以用Slowloris测试工具模拟攻击,看服务商是否能在不误伤正常用户的情况下拦截。
对于一些预算有限的中小企业,可以先在源站自己配置Nginx或Apache的超时参数,再配合云服务商的基础DDoS防护,成本几乎为零,能抵御多数普通慢速攻击,只有面对持续、分布式的慢速攻击时,才需要考虑昂贵的专业高防方案。
真实排查场景:网站访问慢背后的慢速攻击
某企业网站突然反馈网站访问慢,监控显示带宽使用率不高,CPU负载正常,但TCP连接数接近上限,运维人员执行
netstat -an | grep :443 | grep ESTABLISHED | wc -l,发现大量来自几个IP的连接持续超过10分钟,抓包后看到这些连接只发送了半个请求头,每隔30秒补充一个字节,最终确认是HTTP慢速攻击。
调整Nginx配置:将client_header_timeout从60秒改为10秒,client_body_timeout改为15秒,同时启用limit_conn限制单IP最多20个并发连接,重启服务后,连接数在几分钟内回落到正常水平,网站恢复。
这个案例说明,HTTP慢速攻击不依赖大流量,传统监控指标往往看不到异常,必须关注连接时长和连接状态分布。
Q&A:HTTP慢速攻击检测工具和彻底解决思路
HTTP慢速攻击检测工具有哪些?
常用的检测思路是抓包分析连接行为,工具包括Wireshark、tcpdump等通用抓包工具,专门的慢速攻击测试工具有Slowloris、SlowHTTPTest、OWASP HTTP Post Tool等,它们可以模拟慢速连接,帮助验证服务器配置是否生效,旁路检测设备则通过分析连接持续时间和请求完整性来识别慢速攻击。
HTTP慢速攻击怎么彻底解决?
彻底解决需要多层配合:在Web服务器层设置严格的请求超时和最小速率限制;在反向代理层启用连接缓冲和单IP并发限制;在网络层通过防火墙限制异常连接行为,没有单一工具能一劳永逸,必须让正常慢速用户不被误伤,同时让恶意慢速连接快速释放。
HTTP慢速攻击和DDoS区别是什么?
DDoS攻击通常以海量流量或海量请求为特征,追求瞬间压垮带宽、CPU或内存,HTTP慢速攻击则追求长时间占用连接资源,单看流量和请求数都不大,却能造成服务不可用,两者的检测指标不同:DDoS看流量峰值和请求速率,慢速攻击看连接持续时间和不完整请求比例。
HTTP慢速攻击的核心就是极低速率发送、长期占用连接,防御的关键在于让服务器不再无限期等待不完整的请求。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/637367.html





