什么是慢速连接攻击?
想象一下,一家热门餐厅只有50个座位。正常顾客吃完就走,翻台率很高。但如果突然来了50个人,每人只点一杯水,然后以极其缓慢的速度,每分钟只喝一小口,一坐就是几小时——那么真正的顾客就永远没位置了。慢速连接攻击就是这个原理:攻击者利用HTTP协议本身的合法机制,通过“慢动作”合法地占满服务器的所有连接资源,让正常用户无法访问。
它不像传统DDoS那样用洪水般的流量冲垮你,而是像“温水煮青蛙”,安静地耗尽你的资源,极具隐蔽性。
攻击者常用的三种“慢动作”招式
第一式:慢速头攻击(Slowloris)——永不结束的问候
攻击原理:正常HTTP请求以“回车换行”(\r\n\r\n)表示“我说完了”。攻击者发起连接后,只发送部分请求头(比如GET / HTTP/1.1\r\nHost: xxx\r\n...),然后卡住,永远不发送那个表示结束的\r\n\r\n。
模拟场景:就像给客服打电话,你只说了一句“你好,我有个问题……”,然后沉默,既不挂断也不继续说话。客服只能一直等着你开口,而他的电话线路就这样被你白白占着。
攻击效果:用大量这样的“半吊子”连接,填满Web服务器(如Apache)的并发连接池,使其无法处理新请求。
第二式:慢速POST攻击(Slow HTTP POST)——永不提交的表单
攻击原理:在提交表单(POST请求)时,客户端会先告诉服务器“我要上传的数据总大小是多少”。攻击者先声明要上传一个巨大的文件(比如1GB),然后以极慢的速度(如每分钟几个字节)发送数据。
模拟场景:就像你去柜台寄包裹,声称有个超大箱子要寄(占用了柜台资源),然后你以龟速一点一点地往里装东西,让柜员和后面排队的人干等。
攻击效果:服务器需要为每个这样的连接分配内存并长期等待,大量此类连接会迅速耗尽服务器的内存和线程资源。
第三式:慢速读取攻击(Slow Read Attack)——拒不收货的客户
攻击原理:这次攻击发生在服务器回应之后。攻击者正常请求一个大文件(如图片、视频),但在建立连接后,故意将自己接收数据的“窗口”调得非常小,并延迟确认收到数据。
模拟场景:就像快递员给你送一个巨大包裹,但你每次只开一条门缝,一次只接一小件,还磨蹭半天才说“好,下一件”。快递员被迫来回奔波无数次才能送完。
攻击效果:迫使服务器将一个大响应拆分成无数个极小的数据包缓慢发送,长时间占用服务器发送连接,消耗上行带宽和处理能力。
为什么传统防火墙很难防住它?
因为慢速攻击的所有数据包都完全符合TCP/IP和HTTP协议规范,没有恶意代码,也没有畸形包。传统的基于流量阈值或特征码的防护设备,会认为这是“合法流量”而放行。
如何有效防护慢速攻击?
防御的核心思路是:既然攻击者利用“慢”来消耗资源,我们就给所有连接设置一个合理的“时间底线”。
第一层:Web服务器/代理层配置加固(最直接有效)
这是防御的第一道关,通过调整参数来“掐断”过慢的连接。
针对Nginx:
client_header_timeout:设置接收客户端请求头的超时时间(防Slowloris)。建议设为10-15秒。
client_body_timeout:设置接收客户端请求体的超时时间(防Slow POST)。建议设为10-15秒。
keepalive_timeout:设置长连接的超时时间,不宜过长。
limit_conn 模块:限制单个IP的并发连接数。
针对Apache:
Timeout、KeepAliveTimeout:调低这些超时值(如降至15-30秒)。
启用 mod_reqtimeout 模块:专门用于控制接收请求头/体的时间。
针对Tomcat:
使用NIO或NIO2运行模式(性能更好,对慢连接更有韧性)。
在 server.xml 的Connector配置中,合理设置 connectionTimeout(如20000毫秒)。
第二层:部署专业的Web应用防火墙
专业的WAF或云WAF服务具备更智能的慢速攻击防护能力:
行为分析:建立连接速率、请求速率、流量基线模型。当某个IP建立大量连接且长期无完整交互时,自动识别为慢速攻击。
协议完整性检查:主动检测并切断那些长时间未发送结束符或未完成声明的POST请求的连接。
动态挑战:对可疑连接插入验证(如轻量级JS挑战),正常浏览器能快速通过,而攻击脚本通常无法响应。
第三层:接入高防IP/云清洗服务
对于大规模的攻击,尤其是混合了慢速攻击和洪水攻击的场景,应使用高防服务:
流量牵引与清洗:将所有流量先引至具备超大带宽和算力的清洗中心。
深度协议分析:在清洗中心识别并剥离慢速攻击流量,只将正常流量回源到你的服务器。
弹性防护:轻松应对攻击流量的波动,确保源站IP不被暴露和打垮。
第四层:架构与运维优化
负载均衡:使用负载均衡器分散请求到多个后端服务器,避免单点被压垮。
连接限制:在操作系统或硬件层面,对单IP的连接数和新建连接速率进行限制。
持续监控:建立监控告警,重点关注“连接数长时间居高不下但总流量不大”的异常情况,这是慢速攻击的典型信号。
慢慢整理为以下内容
慢速连接攻击是一种“非暴力”却极其有效的资源消耗型攻击。防御它不能靠蛮力,而要靠精细化配置和智能行为分析。
核心行动清单:
立即检查:核对你的Nginx/Apache/Tomcat的超时配置是否过于宽松。
考虑加装:为重要业务部署具备慢速攻击防护能力的WAF。
准备预案:了解并预备高防IP等应急服务,以防大规模混合攻击。
持续观察:监控连接数异常,防患于未然。
记住,攻击者之所以选择“慢速”,正是因为它高效且隐蔽。主动加固你的“时间防线”,让他们无慢可图。
|
|
|
|
|
|
评论
直达楼层