HTTP POST Flood&慢速攻击

本文深入解析HTTP POST Flood攻击原理,介绍华为Anti-DDoS系统如何通过重定向认证、验证码认证等方式防御,同时探讨慢速攻击如Slow Headers与Slow POST的机制及应对策略。

转载自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=367981

0x01 HTTP POST Flood攻击与防御

书接上回,本篇我们来介绍HTTP POST Flood攻击和HTTP慢速攻击的原理及防御方式,先来看HTTP POST Flood攻击。攻击者利用攻击工具或者操纵僵尸主机,向目标服务器发起大量的HTTP POST报文,消耗服务器资源,使服务器无法响应正常请求,这就是HTTP POST Flood攻击。

华为Anti-DDoS解决方案防御HTTP POST Flood攻击与防御GET Flood攻击类似,常用手段也是源认证,包括重定向认证和验证码认证。

重定向认证

Anti-DDoS系统代替服务器向客户端响应307状态码(针对POST请求方法的重定向),同时向客户端的浏览器注入Cookie,客户端再次发起请求时会在HTTP报头上附加Cookie信息,Anti-DDoS设系统通过验证Cookie信息的真实性来验证客户端。

 

20161025094845018.png

 

1、当连续一段时间内去往目标Web服务器的HTTP POST请求报文超过告警阈值后,Anti-DDoS系统启动源认证机制。源认证机制启动后,Anti-DDoS系统将会代替服务器与客户端建立TCP三次握手。

2、Anti-DDoS系统拦截HTTP请求,代替Web服务器回应307状态码,并在响应头部附加上由客户端IP生成的Cookie。

3、如果这个源是虚假源,或者不支持完整HTTP协议栈的攻击工具,不会重新发起请求。

4、如果这个源是真实客户端,Anti-DDoS系统生成的Cookie会写入到浏览器中,并且客户端会重新发起请求,请求头部就会带有该Cookie信息。Anti-DDoS系统收到请求后,验证Cookie是否正确,如果正确则将该客户端的源IP地址加入白名单。然后Anti-DDoS系统会回应408状态码,表示请求超时,使客户端重新发起访问。

5、后续这个客户端发出的HTTP请求报文命中白名单直接通过。

我们结合一组抓包信息来看一下交互报文的具体情况。

1、Anti-DDoS系统代替Web服务器与客户端建立TCP三次握手,然后客户端发起访问请求。

 

20161025094916989.png

 

2、Anti-DDoS系统代替Web服务器回应307状态码,同时在响应头部附加上由客户端IP生成的Cookie,然后双方关闭连接。

 

20161025095000488.png

 

3、真实客户端会再次与Anti-DDoS系统建立TCP三次握手,并且会重新发起请求,请求头部就会带有Cookie信息。

 

20161025095020696.png

 

4、Anti-DDoS系统收到请求后,通过验证Cookie来判定该客户端为真实客户端,将其IP地址加入白名单。然后Anti-DDoS系统会回应408状态码,表示请求超时,使客户端重新发起访问。

 

20161025095046895.png

 

上面介绍的307重定向认证方式能够很好地防御HTTP POST Flood攻击,但是这种方式也具有一定的局限性。其一,依赖于客户端浏览器的Cookie的机制,受安全级别限制。如果客户端的浏览器安全级别较高而无法写入Cookie,会导致认证不通过;其二,第一阶段重定向结束后,需要客户端再次手动执行提交等操作,才能重新发起POST请求。

同HTTP GET Flood的防御方式相似,HTTP POST Flood的源认证防御也支持增强方式,即验证码认证。

验证码认证

此处的验证码认证与HTTP GET Flood中的验证码机制相同,Anti-DDoS系统要求客户端输入验证码,以此来判断请求是否由真实的用户发起。其弊端也是需要人机交互输入验证码,用户体验稍差一些。具体的工作原理请参考HTTP GET Flood攻击与防御部分中的介绍,此处不再赘述。

URI动态指纹学习和URI行为监测

防御HTTP POST Flood攻击时,也可以使用URI动态指纹学习和URI行为监测防御方式,作为源认证方式的补充,满足不同场景的需求。其防御原理我们在上面的HTTP GET Flood攻击与防御部分中已经介绍过,在此也不赘述了。

了解两种Flood类攻击后,下面我们来认识另外一种针对HTTP协议的DDoS攻击:慢速攻击。与Flood类攻击靠海量的数据洪流“淹没”目标服务器不同,慢速攻击反其道而行之,通过发送很少的数据来维持连接状态,持续消耗目标服务器的资源。

0x02 HTTP慢速攻击与防御

HTTP慢速攻击是利用HTTP协议的正常交互机制,先与目标服务器建立一个连接,然后长时间保持该连接不释放。如果攻击者持续与目标服务器建立这样的连接,就会使目标服务器上的可用资源耗尽,无法提供正常服务。

HTTP慢速攻击主要包括针对HTTP请求报文头部结束符的Slow Headers攻击,以及针对POST请求报文数据长度的Slow POST攻击。

Slow Headers

我们在HTTP协议基础部分中介绍HTTP请求报文时,提到过请求头部的后面会存在一个空行(结束符),其中包括回车符和换行符,告知服务器请求头部结束,后面不再有请求头。如果服务器没有收到这个空行则会一直保持连接。

Slow Headers攻击正是利用这一点,攻击者使用GET或POST请求方法与目标服务器建立连接,然后持续发送不包含结束符的HTTP头部报文,目标服务器会一直等待请求头部中的结束符而导致连接始终被占用。如果攻击者控制大量的僵尸主机向目标服务器发起这种攻击,将会导致服务器资源耗尽,无法正常提供服务。

 

20161025095131906.png

 

如下图所示,正常的HTTP报文中请求头部的后面会有结束符0x0d0a(\r\n的十六进制表示方式),而攻击报文中不包含结束符,并且攻击者会持续发送不包含结束符的HTTP头部报文,维持连接状态,消耗目标服务器的资源。

 

20161025095152946.png

 

Slow Headers攻击行为的特征比较明显,华为Anti-DDoS解决方案防御Slow Headers攻击时,会对HTTP报文进行检查。如果发现某个源发出的连续多个HTTP GET/POST请求报文的报文头中都没有结束符“\r\n”,则认为发生Slow Headers攻击,将该源IP地址加入黑名单。

Slow POST

Slow POST攻击利用的是POST请求方法,攻击者向目标服务器发送POST请求报文提交数据,数据的长度设置为一个很大的数值,但是在随后的数据发送中,每次只发送很小的报文,这样就是导致目标服务器一直等待攻击者发送数据。如果攻击者控制大量的僵尸主机向目标服务器发起这种攻击,将会导致服务器资源耗尽,无法正常提供服务。

 

20161025095216349.png

 

如下图所示,Slow POST攻击报文中,POST请求头部的Content-Length关键字的值设置为8192,表示数据长度为8192字节,但是攻击者后续每次只发送1个字节的报文,导致连接一直被占用,消耗了服务器的资源。

 

20161025095236579.png

 

华为Anti-DDoS解决方案防御Slow POST攻击时,防御方法也是对HTTP报文进行检查。如果发现某个源发出的连续多个HTTP POST请求报文的长度设置的很大,但是实际报文的数据部分长度都很小,则认为发生Slow POST攻击,将该源IP地址加入黑名单。

至此,我们讲解了HTTP协议的基础知识,并分析了针对HTTP协议的DDoS攻击方式以及防御原理,下一篇华安将给大家带来NTP攻击事件的解密,敬请关注。

### 华为云 ELB 防御 HTTP 慢速攻击的解决方案 华为云弹性负载均衡(Elastic Load Balancer, ELB)能够通过多种方式有效应对 HTTP 慢速攻击。这类攻击通常利用少量连接长时间占用服务器资源,从而导致正常请求无法被处理。以下是基于华为云 Anti-DDoS 和 ELB 的最佳实践和配置建议: #### 1. 启用 Anti-DDoS 功能 Anti-DDoS 是华为云提供的 DDoS 攻击防护服务,可以有效抵御包括 HTTP Flood、CC 攻击在内的多种攻击形式[^2]。启用该功能后,可以通过以下措施增强安全性: - **实时监控与告警**:设置阈值触发机制,在检测到异常流量时立即发出通知。 - **清洗中心过滤恶意流量**:当检测到大规模攻击时,自动将流量引导至清洗中心进行分析和清理。 #### 2. 调整 ELB 连接超时时间 为了减少慢速攻击的影响,可调整 ELB 的连接超时参数。具体操作如下: - 登录华为云控制台,进入 ELB 实例详情页面。 - 修改“空闲连接超时时间”,将其缩短至合理范围(如 60 秒)。这有助于快速释放长期未完成的数据传输连接,降低资源消耗。 #### 3. 使用 HTTPS 加密通信 启用 HTTPS 可以增加中间人攻击的成本,并结合 SSL/TLS 握手过程中的验证机制进一步提高系统的抗攻击能力。此外,对于特定类型的 DoS/DDoS 攻击(如 SSL DoS),Anti-DDoS 提供专门的防护手段[^2]。 #### 4. 应用层规则优化 在 ELB 上配置 WAF(Web Application Firewall)插件或者自定义 ACL(访问控制列表),阻止可疑 IP 地址或行为模式。例如: ```bash # 创建一条拒绝来自某个网段的所有入站请求的安全组规则 security-group create-rule --protocol tcp --port-range 80 --remote-ip-prefix 192.168.1.0/24 --action deny ``` #### 5. 结合日志分析工具 定期审查 ELB 日志文件,识别潜在威胁源并采取相应行动。借助华为云 OBS 存储服务保存历史记录以便后续审计。 --- ### 示例代码片段 以下是一个简单的 Python SDK 示例,展示如何通过 API 获取当前 ELB 设置并更新其属性: ```python from huaweicloudsdkelb.v3 import * from huaweicloudsdkcore.auth.credentials import BasicCredentials def update_elb_timeout(elb_id, timeout_seconds): credentials = BasicCredentials("your_ak", "your_sk", "project_id") client = ElbClient.new_builder() \ .with_credentials(credentials) \ .build() request = UpdateLoadBalancerOption( admin_state_up=True, description="Updated by script", name="new-elb-name", tags=[], timeout_config=TimeoutConfig( client_timeout=timeout_seconds, member_timeout=timeout_seconds ) ) response = client.update_load_balancer(UpdateLoadBalancerRequest(elb_id, request)) print(response) ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值