防范httppost泛洪攻击的方法及防火墙的制作方法

文档序号:7742016阅读:1591来源:国知局
专利名称:防范http post泛洪攻击的方法及防火墙的制作方法
技术领域
本发明涉及通信技术领域,具体涉及防范HTTP POST泛洪攻击的方法及防火墙,适用于防范超文本传输协议(HTTP,HyperText Transfer Protocol) POST泛洪(Flood)攻击。
背景技术
网络(Web)服务器在当前的互联网应用中担当着极为重要的角色,例如提供网页浏览、电子邮件收发、资源下载等服务,这些服务通常建立在HTTP协议基础上。在开放的网络环境下,Web服务器很容易受到HTTP Flood攻击,这是一种拒绝服务(DOS :Denial ofService)攻击,即攻击者利用大量的服务请求或系统漏洞来占用服务资源,致使服务器超载,无法响应其它正常用户的请求的攻击方式。HTTP Flood攻击主要针对部署在Web服务器上使用ASP、 JSP、PHP等语言并调用MsSQL、MySQL、Oracle等数据库的动态网页系统而设计,其特征是通过僵尸网络或攻击工具与Web服务器建立正常的TCP连接,并不断向脚本程序提交查询、列表等大量耗费数据库资源的调用。 一但Web服务器受到HTTP Flood攻击,将严重影响正常用户的Web访问。由于HTTP Flood属于应用层攻击,常常可以绕过普通的防火墙防护。 目前有使用以下两种技术来防范HTTP Flood攻击
—、 HTTP连接统计防范技术 防火墙统计客户端和服务器通信的每个源地址的并发连接数或者新建连接数,当发现某个源地址的连接数统计值超过预置的警戒值时,则切断该源到被保护服务器的所有HTTP流量。本发明的发明人在研究此方案的过程中发现,对于僵尸网络等分散源的分布式拒绝服务攻击(DD0S distributed Denialof Service),由于每个源的HTTP连接速率并不高,甚至低于正常用户连接的速率,该方案通过连接数统计很难判断出是否异常,如果阈值配置不当,很容易出现误判。
二、HTTP重定向技术 防火墙在接收到某个源的HTTP GET请求报文之后,解析该报文提取出统一资源定位符(URL, Uniform Resource Locator)信息,附加上特定的key值生成新的URL信息,并使用新的URL构造出HTTP重定向报文,发送到客户端。正常的客户端在接收到该HTTP重定向报文之后将重新使用新的URL进行请求。由于HTTP规范的限制,该方法只适用于针对GET请求攻击的防范,无法用于处理POST请求攻击。

发明内容
本发明实施例提供一种能够有效防范HTTP POST Flood攻击的方法及相应的防火
摊I回o —种防范HTTP POST泛洪攻击的方法,包括接收客户端发送的超文本传输协议HTTP请求,判断所述HTTP请求的源地址是否在白名单中;若不在白名单中,则代替服务器与所述客户端建立HTTP连接,接收客户端发送的HTTPPOST请求,判断所述POST请求是否携带有验证信息;若未携带验证信息,则向所述客户端返回第一响应,所述第一响应携带有与所述POST请求的源地址对应的验证信息,用于使客户端重新发起携带所述验证信息的POST请求;若携带有验证信息,则根据所述POST请求的源地址验证所携带的验证信息是否符合所述第一响应携带的验证信息;若携带的验证信息正确,则将所述POST请求的源地址加入所述白名单,并向所述客户端返回第二响应,用于使客户端重新发起POST请求;若携带的验证信息不正确,则滤除所述POST请求。 —种防范HTTP POST泛洪攻击的防火墙,包括接收模块,用于接收客户端发送的超文本传输协议HTTP请求;第一处理模块,用于判断所述接收模块接收的HTTP请求的源地址是否在白名单中,若在白名单中,则令所述HTTP请求透过防火墙到达服务器,若不在白名单中,则代替服务器与所述客户端建立HTTP连接,触发第二处理模块的操作;第二处理模块,用于判断所述接收模块接收的所述客户端发送的HTTP POST请求是否携带有验证信息,若未携带验证信息,则向所述客户端返回第一响应,所述第一响应携带与所述POST请求的源地址对应的验证信息,用于使客户端重新发起携带所述验证信息的POST请求,若携带有验证信息,则触发第三处理模块的操作;第三处理模块,用于根据所述POST请求的源地址验证所携带的验证信息是否符合所述第一响应携带的验证信息,若携带的验证信息正确,则将所述POST请求的源地址加入所述白名单,并向所述客户端返回第二响应,用于使客户端重新发起POST请求,若携带的验证信息不正确,则滤除所述POST请求。
本发明实施例中,对客户端的首次HTTP POST请求响应验证信息,客户端再次请求时携带该验证信息,通过检测验证信息的正确性即可有效防范HTTP POST Flood攻击,有效保护Web服务器的安全。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的
附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领
域普通技术人员来讲,还可以根据这些附图获得其他的附图。 图1是本发明实施例一防范HTTP POST泛洪攻击的方法的流程示意图; 图2是本发明实施例二采用注入Cookie机制的信令流程示意图; 图3是本发明实施例四防火墙的逻辑结构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本领域普通技术人员基于本发明中的实施例获得的所有其他实施例,都属于本发明保护的范围。 实施例一、一种防范HTTP POST泛洪攻击的方法,如图1所示,包括
Al、防火墙接收客户端发送的超文本传输协议HTTP请求。 本发明实施例中,防火墙可以旁路部署或直路部署。在旁路部署方式中,上游网络的HTTP流量被引流到防火墙上,由防火墙按照本发明实施例方法对HTTP攻击进行防范,清洗过滤攻击流量后,将HTTP的正常访问流量回注到下游网络。在直路部署方式中,防火墙
5直接对来自上游网络的HTTP攻击流量进行防范,过滤掉攻击流量后,令正常的HTTP流量通过防火墙进入下游网络。 防火墙可以持续使用本实施例方法对POST Flood攻击进行防范,优选的,防火墙也可以在检测到发生POST Flood攻击后,才启动本发明实施例的下述防范流程。具体可采用已有的各种检测方式,例如检测服务器收到的HTTP POST请求是否超过预定阀值等。在未发生POST Flood攻击的情况下,防火墙可以不必启动本发明实施例的下述防范流程。
A2、防火墙判断收到的HTTP请求的源地址是否在白名单中,若在白名单中,则执行步骤A3,若不在白名单中,则执行步骤A4。 防火墙可维护一个"源地址监控表",对应于源地址保存其白名单标记,当然,可以理解的是也可以设置相应的黑名单标记等,本实施例只是针对采用白名单标记的方法进行描述。在启动防范流程的时候,根据源地址监控表对收到的HTTP请求进行分别处理。
A3、防火墙将收到的HTTP请求透过防火墙发送到服务器。 通过后续即将描述的验证过程可知,白名单中记录的源地址为验证通过的源地址,可以认为是真实浏览器用户的网络协议(IP, Internet Protocol)地址,其HTTP请求将直接发送给服务器,进行正常的Web访问。 A4、防火墙代替服务器与客户端建立HTTP连接,接收该客户端发送的HTTP POST请求,继续执行步骤A5。 为保护服务器,防火墙代替服务器与地址不在白名单中的客户端建立HTTP连接。优选的,防火墙可通过与客户端进行三次握手,建立传输控制协议(TCP,TransmissionControl Protocol)连接。对于伪造源IP的攻击,如果源IP不能与防火墙建立TCP三次握手,即可将其阻止在三次握手阶段,提高攻击防范的效率。当然,对于僵尸网络发起的攻击,由于攻击源一般都可以与防火墙建立TCP三次握手后再发送POST请求,则需要通过下述进一步的处理来达到防范攻击的目的。 POST是HTTP的标准协议动词,用于编码和传送变量名以及变量值。每个POST请求都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。 A5、防火墙判断接收的POST请求是否携带有验证信息,若未携带验证信息,则执行步骤A6,若携带有验证信息,则执行步骤A7。 客户端发送的POST请求可采用各种方式携带验证信息,例如报文头中的cookie,或报文内容中携带的超文本置标语言(HTML, HyperText MarkupLanguage)页面等,只要能够为防火墙所识别即可。为便于与现有规范兼容,可优选使用符合现有规范要求的携带方式。 A6、防火墙向客户端返回第一响应,该第一响应携带与POST请求的源地址对应的验证信息,用于使客户端重新发起携带该验证信息的POST请求。 防火墙所返回的第一响应同样可采用各种方式,只要能将验证信息带给客户端并使得客户端重新发起携带该验证信息的POST请求即可。为便于与现有规范兼容,可优选使用现有规范已提供的响应方式。 A7、防火墙根据收到的POST请求的源地址验证所携带的验证信息是否符合所述第一响应携带的验证信息,若携带的验证信息正确,则执行步骤A8,若携带的验证信息不正
6确,则执行步骤A9。 由于正确的验证信息是由防火墙相应于源地址生成并发送给客户端的,因此,防火墙能够根据源地址与验证信息的对应关系确认其是否正确。 A8、防火墙将收到的P0ST请求的源地址加入白名单,并向客户端返回第二响应,用于使客户端重新发起POST请求。 防火墙所返回的第二响应同样可采用各种方式,只要能使客户端重新发起POST
请求即可。为便于与现有规范兼容,可优选使用现有规范已提供的响应方式。 客户端第三次发起POST请求时,源地址已加入到白名单,因此后续的HTTP请求将
直接透过防火墙到达服务器,与服务器建立连接并进行正常的Web访问。 A9、防火墙滤除收到的P0ST请求。 上述防范过程中,通过对客户端的POST请求进行验证来过滤攻击,优选的,还可以进一步记录收到的POST请求的源地址的验证情况,例如,可以扩展"源地址监控表",除了源地址字段和黑/白名单标记字段外,再增加验证次数以及时间戳字段,对某个源地址进行验证次数(例如,返回第一响应的次数与/或验证信息不正确的次数)以及时间间隔进行记录,若单位时间内,与某个源地址对应的验证次数超过设定阈值(或返回第一响应的次数超过设定的阀值,同时验证信息不正确的次数超过设定的阀值;或者返回第一响应的次数超过设定的阀值),则可认为该源地址为攻击源,切断该源地址的HTTP流量,以提高攻击防范的效率。 本实施例中,对客户端的首次HTTP POST请求响应验证信息,客户端再次请求时携带该验证信息,通过检测验证信息的正确性来防范HTTP POSTFlood攻击,由于僵尸网络等攻击源一般都不能对防火墙响应的报文进行响应,通常无法再次发起携带验证信息的POST请求,即便伪造验证信息直接发起POST请求也无法通过验证,因此防火墙可以有效的切断攻击报文,以保护Web服务器不会受到攻击。 实施例二、本实施例在实施例一的基础上详细描述了采用注入Cookie机制进行防范的具体执行过程,本实施例中,防火墙在检测到发生POST Flood攻击后,启动下述防范流程,其中客户端与防火墙之间的信令流程如图2所示,包括 B1、防火墙接收客户端发送的HTTP请求,该客户端的源IP不在白名单中,防火墙代替web服务器与客户端进行三次握手,TCP连接成功后写入源IP监控表,记录源IP的验证次数和时间戳。 B2、防火墙接收该客户端发送的HTTP POST请求,该请求携带请求的URL以及数据(data),由于是客户端第一次发送POST请求,还没有携带验证信息。 B3、防火墙向客户端返回"307临时重定向"作为第一响应,并在响应报头中附加上
由源IP生成的cookie。 一个示例的307响应报文描述如下 HTTP/1. 1307 Temporary Redirect Connection :Close Pragma :no_cache set-cookie :USGSESSID = Cookie值 cache—control :no—cache Content—Type :text/html ;charset = UTF—8 ;
Content-Length :0 ; B4、防火墙与客户端之间关闭连接,第一次交互结束。 B5、如果客户端是真实的浏览器而不是攻击源,在收到"307临时重定向"后,防火 墙生成的cookie就会写入到浏览器中,用户可通过对307响应页面的手动确认,再次发送 POST请求,由于此时客户端的源IP仍不在白名单中,还是由防火墙代替web服务器与客户 端进行三次握手。 B6、防火墙收到带有cookie的POST请求。 B7、防火墙验证Cookie是否正确,如果正确则将源IP加入到白名单里(例如在 "源IP监控表"中将该源IP标记为"白")。 B8、防火墙向客户端返回"408请求超时"响应作为第二响应。 一个示例的408响
应报文描述如下 HTTP/1. 1408 Timeout Connection :Close Pragma :no_cache cache—control :no—cache Content-Type :text/html ;charset = UTF-8 ; Content-Length :0 ; 当然,防火墙还会在源IP监控表中记录该源IP的cookie验证次数和时间间隔, 如果单位时间内的验证次数超过设定阈值,则认为此IP为攻击源,可切断此攻击源的HTTP流量。 B9、防火墙与客户端之间关闭连接,第二次交互结束。 B10、真实的客户端浏览器在收到"408请求超时"后,会自动再次发送POST请求, 此时客户端源IP已加入到白名单,该请求以及后续的HTTP请求将直接透过防火墙到达服 务器,客户端可以与服务器建立HTTP连接以进行正常的Web访问。 本实施例采用防火墙对客户端的浏览器注入Cookie机制来携带防火墙生成的验 证性信息,客户端再次进行POST请求时会在HTTP报头(Header)上附加cookie,防火墙通 过检测Cookie的真实性实时进行HTTP POST Flood的攻击防范,有效保护Web服务器的安 全。 实施例三、本实施例给出实施例一方法采用HTML页面表单(Form)自动提交技术 的一个实例。 本实施例的具体执行过程与实施例二类似,区别之处在于 防火墙在首次响应客户端发送的HTTP POST请求时,使用"200成功"作为第一响 应(对应于步骤B3),通过在200响应的消息部分中的一个简易的表单页面来携带验证信 息。 具体的,该表单页面可以包括一个文本框和一个自动提交按钮,该文本框的内容 即为用作验证信息的随机验证码,而自动提交按钮则用于使客户端重新发起携带该文本框 的POST请求,该自动提交按钮可利用HTML的onload方法与Javascript脚本语言使得客 户端浏览器收到此响应后自动进行POST请求。 相应的,客户端在收到这个"200成功"响应后,基于HTML页面表单(Form)自动提
8交技术,会自动使用原来的URL重新进行POST请求(对应于步骤B6),此时表单中的随机验 证码也会被携带发送给防火墙,防火墙即可将其作为验证信息进行验证(对应于步骤B7)。
本实施例采用HTML页面表单自动提交技术来防范HTTP POST Flood攻击,能够在 客户端浏览器不支持cookie技术的情况下,既不影响正常客户的Web应用,又有效保护Web 服务器的安全。 下面对本发明实施例涉及的装置进行说明。 实施例四、一种防范HTTP POST泛洪攻击的防火墙,可用于执行实施例一中描述的 方法,如图3所示,包括 接收模块IOI,用于接收客户端发送的超文本传输协议HTTP请求; 第一处理模块102,用于判断接收模块101接收的HTTP请求的源地址是否在白名
单中,若在白名单中,则令该HTTP请求透过防火墙到达服务器,若不在白名单中,则代替服
务器与客户端建立HTTP连接,触发第二处理模块103的操作; 第二处理模块103,用于判断接收模块101接收的客户端发送的HTTPP0ST请求 是否携带有验证信息,若未携带验证信息,则向客户端返回第一响应,所称第一响应携带与 POST请求的源地址对应的验证信息,用于使客户端重新发起携带该验证信息的POST请求, 若携带有验证信息,则触发第三处理模块104的操作; 第三处理模块104,用于根据POST请求的源地址验证所携带的验证信息是否符合 所述第一响应携带的验证信息,若携带的验证信息正确,则将该POST请求的源地址加入白 名单,并向客户端返回第二响应,用于使客户端重新发起POST请求,若携带的验证信息不 正确,则滤除该POST请求。 本发明实施例中,对客户端的首次HTTP POST请求响应验证信息,客户端再次请求 时携带该验证信息,通过检测验证信息的正确性即可有效防范HTTP POST Flood攻击,有效 保护Web服务器的安全。 优选的,相应于实施例一中的描述,本实施例防火墙可进一步包括 记录模块105 (在图3中以虚线框示出),用于记录POST请求的源地址的验证情
况,若单位时间内,与某个源地址对应的返回第一响应的次数与/或验证信息不正确的次
数超过设定阈值,则切断该源地址的HTTP流量。 优选的,相应于实施例一中的描述,第一处理模块102代替服务器与客户端建立
HTTP连接,是通过与客户端进行三次握手,建立传输控制协议TCP连接。 优选的,相应于实施例一中的描述,本实施例防火墙可进一步包括控制模块
106 (在图3中以虚线框示出),用于在检测到发生HTTP POST泛洪攻击后,触发第一处理模
块102的判断操作。 与实施例一中的描述相应的,本实施例防火墙可以旁路部署或直路部署。在旁路 部署的情况下,当启用防火墙进行HTTP流量过滤时,上游网络的流量被引流到防火墙经过 过滤后再回注到下游网络,在未启用防火墙时,则流量不必引流到防火墙,直接从上游网络 发送到下游网络。在直路部署情况下,上游网络流量直接经过防火墙到达下游网络,此时防 火墙支持路由模式和透明模式,路由模式下,防火墙可以对流经的HTTP流量进行攻击清洗 过滤,透明模式下,防火墙令流量直接穿过而不进行处理。本实施例防火墙对客户端的首 次HTTP POST请求响应验证信息,客户端再次请求时携带该验证信息,通过检测验证信息的正确性来防范HTTP POST Flood攻击,由于僵尸网络等攻击源一般都不能对防火墙响应的 报文进行响应,通常无法再次发起携带验证信息的POST请求,即便伪造验证信息直接发起 POST请求也无法通过验证,因此防火墙可以有效的切断攻击报文,以保护Web服务器不会 受到攻击。 本领域普通技术人员可以理解,上述实施例中各种方法的全部或部分步骤可以通 过程序来指令相关硬件完成,该程序可以存储于一计算机可读存储介质中,存储介质可以 包括只读存储器、随机存储器、磁盘或光盘等。 以上对本发明实施例所提供的防范HTTP POST泛洪攻击的方法及防火墙进行了详 细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的 说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依 据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容 不应理解为对本发明的限制。
权利要求
一种防范HTTP POST泛洪攻击的方法,其特征在于,包括接收客户端发送的超文本传输协议HTTP请求,判断所述HTTP请求的源地址是否在白名单中;若不在白名单中,则代替服务器与所述客户端建立HTTP连接,接收客户端发送的HTTP POST请求,判断所述POST请求是否携带有验证信息;若未携带验证信息,则向所述客户端返回第一响应,所述第一响应携带有与所述POST请求的源地址对应的验证信息,用于使客户端重新发起携带所述验证信息的POST请求;若携带有验证信息,则根据所述POST请求的源地址验证所携带的验证信息是否符合所述第一响应携带的验证信息;若携带的验证信息正确,则将所述POST请求的源地址加入所述白名单,并向所述客户端返回第二响应,用于使客户端重新发起POST请求;若携带的验证信息不正确,则滤除所述POST请求。
2. 根据权利要求1所述的方法,其特征在于,还包括记录所述POST请求的源地址的验证情况,若单位时间内,与某个源地址对应的返回第一响应的次数和验证信息不正确的次数均超过设定阈值,或者,与某个源地址对应的返回第一响应的次数和验证信息不正确的次数两者任一超过设定阈值,则切断该源地址的HTTP流量。
3. 根据权利要求1所述的方法,其特征在于代替服务器与客户端建立HTTP连接包括通过与客户端进行三次握手建立传输控制协议TCP连接。
4. 根据权利要求1所述的方法,其特征在于,在所述接收客户端发送的超文本传输协议HTTP请求之后,还包括检测是否发生HTTP POST泛洪攻击,若检测到发生HTTP POST泛洪攻击,执行所述判断步骤。
5. 根据权利要求1至4任意一项所述的方法,其特征在于所述第一响应包括临时重定向响应或成功响应,所述验证信息包括携带在临时重定向响应报头中的小型文字档案cookie,所述成功响应的消息部分携带用作所述验证信息的验证码和提交按钮,所述提交按钮用于使客户端重新发起携带所述验证码的POST请求;所述第二响应包括请求超时响应。
6. —种防范HTTP POST泛洪攻击的防火墙,其特征在于,包括接收模块,用于接收客户端发送的超文本传输协议HTTP请求;第一处理模块,用于判断所述接收模块接收的HTTP请求的源地址是否在白名单中,若在白名单中,则令所述HTTP请求透过防火墙到达服务器,若不在白名单中,则代替服务器与所述客户端建立HTTP连接,触发第二处理模块的操作;第二处理模块,用于判断所述接收模块接收的所述客户端发送的HTTPPOST请求是否携带有验证信息,若未携带验证信息,则向所述客户端返回第一响应,所述第一响应携带与所述POST请求的源地址对应的验证信息,用于使客户端重新发起携带所述验证信息的POST请求,若携带有验证信息,则触发第三处理模块的操作;第三处理模块,用于根据所述POST请求的源地址验证所携带的验证信息是否符合所述第一响应携带的验证信息,若携带的验证信息正确,则将所述POST请求的源地址加入所述白名单,并向所述客户端返回第二响应,用于使客户端重新发起POST请求,若携带的验证信息不正确,则滤除所述POST请求。
7. 根据权利要求6所述的防火墙,其特征在于,还包括记录模块,用于记录所述POST请求的源地址的验证情况,若单位时间内,与某个源地址对应的返回第一响应的次数与/或验证信息不正确的次数超过设定阈值,则切断该源地址的HTTP流量。
8. 根据权利要求6所述的防火墙,其特征在于所述第一处理模块代替服务器与客户端建立HTTP连接,是通过与客户端进行三次握手,建立传输控制协议TCP连接。
9. 根据权利要求6所述的防火墙,其特征在于,还包括控制模块,用于在检测到发生HTTP POST泛洪攻击后,触发第一处理模块的判断操作。
10. 根据权利要求6至9任意一项所述的防火墙,其特征在于所述第一响应包括临时重定向响应,所述验证信息包括携带在临时重定向响应报头中的小型文字档案cookie,或所述第一响应为成功响应,所述成功响应的消息部分携带有用作所述验证信息的验证码和提交按钮,所述提交按钮用于使客户端重新发起携带所述验证码的POST请求;所述第二响应包括请求超时响应。
全文摘要
本发明实施例公开了一种防范HTTP POST泛洪攻击的方法及防火墙。本发明实施例对客户端的首次超文本传输协议HTTP POST请求响应验证信息,客户端再次请求时携带该验证信息,通过检测验证信息的正确性即可有效防范HTTP POST泛洪攻击,有效保护网络服务器的安全。
文档编号H04L29/08GK101789947SQ201010110948
公开日2010年7月28日 申请日期2010年2月21日 优先权日2010年2月21日
发明者吴波, 毛世峰, 肖洪亮 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1