一种传输控制协议选项的处理方法及装置与流程

文档序号:11930393阅读:151来源:国知局
一种传输控制协议选项的处理方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种传输控制协议选项的处理方法及装置。



背景技术:

TCP(Transmission Control Protocol,传输控制协议)选项作为TCP通信中一种可选的功能,一般出现在TCP连接建立阶段。在客户端和服务器建立TCP连接时,若客户端向服务器发送的SYN(Synchronize,同步)包中携带TCP选项信息,则还要与服务器协商是否支持该TCP选项。常见的TCP选项包括SACK(Selective Acknowledgment,选择性确认)选项、窗口扩大选项、时间戳选项等,这些TCP选项使得TCP连接能够适应复杂的网络环境,改善网络传输的效率和质量。

TCP协议作为一种常用的网络协议,有自身的弱点。现有技术中,为了防护TCP连接建立过程中的SYN Flood(SYN洪水)攻击,可以在客户端和服务器中间增加一个流量管理设备来进行安全防护。流量管理设备通常采用SYN Cookie(一种专门防范SYN Flood攻击的手段)方法来有效地防护SYN Flood攻击,通过将接收到的客户端发送的SYN报文进行统一处理然后丢弃,可以以一种统一的方式来防护代理流量、转发流量和本地流量三种流量类型下的SYN Flood攻击,有效地提高了防护性能。

然而,在此过程中,流量管理设备并未对SYN报文携带的TCP选项进行处理,因而不能获知服务器所支持的TCP选项信息,导致在防护SYN Flood攻击时,客户端和目标服务器经由流量管理设备所建立的连接遗漏或不支持某些TCP优化选项,从而影响了网络传输的效率和质量,降低了用户体验。



技术实现要素:

本发明的主要目的在于提出一种传输控制协议选项的处理方法及装置,旨在实现流量管理设备在防护SYN Flood攻击过程中对TCP选项进行合理处理,从而提升网络传输的效率和质量,提升用户体验。

为实现上述目的,本发明提供一种传输控制协议选项的处理方法,所述方法包括如下步骤:

接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;

根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;

若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文;

若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。

可选地,所述根据所述握手报文判断流入流量管理设备的流量类型的步骤之前,还包括:

检测预设时长内接收到的所述客户端发送的握手报文的数量是否超过预设阈值;

若是,则基于cookie校验机制,校验所述客户端是否合法;若所述客户端不合法,则丢弃所述客户端发送的握手报文;若所述客户端合法,则执行根据所述握手报文判断流入流量管理设备的流量类型的步骤。

可选地,所述向所述客户端反馈协商结果的步骤包括:

在后续接收到所述客户端发送的非代理流量类型的握手报文时,向所述客户端回送不支持所述TCP选项的握手报文。

可选地,若所述目标服务器支持所述TCP选项,则在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号,并完成所述数据包的转发。

可选地,所述在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号的步骤包括:

计算所述目标服务器与所述客户端序列号的差值;

当接收到所述客户端向所述目标服务器转发的第一数据包时,将所述第一数据包中TCP选项的序列号加上所述差值;

当接收到所述目标服务器向所述客户端转发的第二数据包时,将所述第二数据包中TCP选项的序列号减去所述差值。

可选地,所述TCP选项包括SACK选项和时间戳选项,所述向所述客户端回送支持所述TCP选项的握手报文的步骤包括:

将支持所述SACK选项的信息编码进所述时间戳选项的时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送。

此外,为实现上述目的,本发明还提供一种传输控制协议选项的处理装置,所述装置包括:

接收模块,用于接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;

判断模块,用于根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;

第一处理模块,用于若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文;

第二处理模块,用于若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。

可选地,所述装置还包括:

检测模块,用于检测预设时长内接收到的所述客户端发送的握手报文的数量是否超过预设阈值;

校验模块,用于若预设时长内接收到的所述客户端发送的握手报文的数量超过预设阈值,则基于cookie校验机制,校验所述客户端是否合法;若所述客户端不合法,则丢弃所述客户端发送的握手报文;若所述客户端合法,则判断模块根据所述握手报文判断流入流量管理设备的流量类型。

可选地,所述第二处理模块还用于:

在后续接收到所述客户端发送的非代理流量类型的握手报文时,向所述客户端回送不支持所述TCP选项的握手报文。

可选地,所述第二处理模块还用于:

若所述目标服务器支持所述TCP选项,则在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号,并完成所述数据包的转发。

可选地,所述第二处理模块还包括:

计算单元,用于计算所述目标服务器与所述客户端序列号的差值;

第一处理单元,用于当接收到所述客户端向所述目标服务器转发的第一数据包时,将所述第一数据包中TCP选项的序列号加上所述差值;

第二处理单元,用于当接收到所述目标服务器向所述客户端转发的第二数据包时,将所述第二数据包中TCP选项的序列号减去所述差值。

可选地,所述TCP选项包括SACK选项和时间戳选项,所述第一处理模块和所述第二处理模块还用于:

将支持所述SACK选项的信息编码进所述时间戳选项的时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送。

本发明流量管理设备接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文;若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。通过上述方式,在防护SYN Flood攻击过程中,流量管理设备在接收到客户端发送的TCP选项请求信息时,首先统一回复支持TCP选项,若流入流量管理设备的流量为非代理流量,则流量管理设备还要以探测的方式与目标服务器协商TCP选项,并向客户端进行相应反馈,以使得客户端调整其后续发送的握手报文。本发明能够实现流量管理设备在防护SYN Flood攻击过程中对TCP选项进行合理处理,从而能够提升网络传输的效率和质量,提升用户体验。

附图说明

图1为本发明传输控制协议选项的处理方法第一实施例的流程示意图;

图2为本发明代理流量支持TCP选项的系统交互示意图;

图3为本发明非代理流量不支持TCP选项的系统交互示意图;

图4为本发明非代理流量支持TCP选项的系统交互示意图;

图5为本发明第二实施例中流量管理设备调整TCP选项序列号的细化步骤示意图;

图6为本发明传输控制协议选项的处理装置第一实施例的功能模块示意图;

图7为图6中第二处理模块的细化功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明的传输控制协议TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,是Internet最基本的协议。一般地,客户端与服务器建立TCP连接过程中需要进行三次握手,正常的握手过程是:客户端发送一个包含同步标志的SYN包给服务器;服务器分配相应的控制块,比如连接跟踪,并给客户端回送SYN+ACK包,其中ACK(Acknowledgement)为确认字符,表示发来的数据确认接收无误;客户端收到服务器的回应后,再向服务器发送ACK包,连接建立成功。

TCP协议作为最常用的网络通信协议,有自身的弱点,网络攻击者经常利用这些弱点来进行DDOS(Distributed Denial of Service,分布式拒绝服务)攻击。SYN Flood(SYN洪水)攻击是一种广为人知的DDOS方式,现有技术中,可以在客户端和服务器中间增加一个流量管理设备来进行安全防护。

流量管理设备除了具有维护网络安全的功能外,还具有代理和数据转发功能。一般流入流量管理设备的流量有三种:代理流量、转发流量和本地流量,其中,代理流量是流量管理设备作为客户端与服务器中间的代理的流量,转发流量是流量管理设备转发出去的流量,本地流量是访问流量管理设备本身的流量。流量管理设备一般使用SYN Cookie(一种专门防范SYN Flood攻击的手段)方法来有效地防护SYN Flood攻击,通过将接收到的客户端发送的SYN报文进行统一处理然后丢弃,可以以一种统一的方式来防护三种流量类型下的SYN Flood攻击,有效地提高了防护性能。

TCP选项作为TCP通信中一种可选的功能,一般出现在TCP连接建立阶段,也就是TCP的三次握手的数据包中。常见的TCP选项包括SACK(Selective Acknowledgment,选择性确认)选项、窗口扩大选项、时间戳选项等,这些TCP选项使得TCP连接能够适应复杂的网络环境,改善网络传输的效率和质量。

基于上述的流量管理设备及TCP协议,提出本发明的各个实施例。

本发明提供一种传输控制协议选项的处理方法。

参照图1,图1为本发明传输控制协议选项的处理方法第一实施例的流程示意图。所述方法包括如下步骤:

步骤S10,接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息。

在本实施例中,流量管理设备接收客户端发送的握手报文,即SYN包,该SYN包中包含了TCP选项请求信息,用于向接收方请求支持携带的TCP选项。

步骤S20,根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量。

流量管理设备在接收到客户端发送的SYN包后,对该SYN包进行解析,从而区分流入流量管理设备的流量类型,本实施例将流入流量管理设备的流量类型划分为代理流量和非代理流量,其中非代理流量包括转发流量和本地流量。

步骤S30,若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文。

对于代理的流量,有两条TCP连接需要建立:一条是客户端与流量管理设备之间的TCP连接,一条是流量管理设备与服务器之间的TCP连接。

在本实施例中,流量管理设备具有TCP选项支持功能。参照图2,图2为本发明代理流量支持TCP选项的系统交互示意图。若流量管理设备判断流量类型为代理流量,则向客户端回送支持所述TCP选项的握手报文,即SYN+ACK包(带TCP选项),客户端再向流量管理设备返回ACK包(带TCP选项),从而建立了客户端与流量管理设备之间的TCP连接,且该TCP连接支持SYN包中携带的TCP选项。对于第二条TCP连接,由于服务器和客户端之间没有直接通信,因而无需考虑服务器否支持TCP选项,流量管理设备和服务器可以根据一般情况来进行三次握手,与正常通信没有区别。

步骤S40,若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。

对于非代理流量,以转发流量为例,服务器与流量管理设备三次握手完成后,流量管理设备只保留一条TCP连接,即客户端与服务器之间的连接,流量管理设备只起到数据转发的作用。本地流量和转发流量类似,也是只保留一条TCP连接,与转发流量不同的是,客户端访问的是流量管理设备本地,此时根据内核协议栈进行相应处理即可。

若流量管理设备判断流量类型为非代理流量,则向客户端回送支持所述TCP选项的握手报文,此外,还要向目标服务器协商是否支持客户端请求的TCP选项,若服务器不支持,则向所述客户端反馈不支持的信息;若服务器支持,则可以不做其他处理,在客户端与服务器建立TCP连接之后,完成相应的数据转发功能即可,该TCP连接支持TCP选项。

需要说明的是,上述处理TCP选项的方法可应用于正常的TCP连接过程,也可应用于流量管理设备在防护SYN FLOOD攻击的过程中,对于后者,具体地,所述步骤S20之前,还可以包括:

步骤S201,检测预设时长内接收到的所述客户端发送的握手报文的数量是否超过预设阈值;

步骤S202,若预设时长内接收到的所述客户端发送的握手报文的数量超过预设阈值,则基于cookie校验机制,校验所述客户端是否合法;若所述客户端不合法,则丢弃所述客户端发送的握手报文;若所述客户端合法,则执行根据所述握手报文判断流入流量管理设备的流量类型的步骤。

当流量管理设备在较短时间内检测到大量客户端发送的SYN包时,即判定受到了SYN洪水攻击,随即自动开启SYN FLOOD防护功能,此时,流量管理设备可以基于cookie校验机制,校验所述客户端是否合法。

cookie校验机制,其原理在于,流量管理设备在接收到SYN包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值,并将该cookie值添加到回送给客户端的SYN+ACK包中。

其中,cookie值即初始TCP序列号。流量管理设备可以按照预设的加密算法计算cookie值,比如,根据TCP SYN报文的TCP首部信息(尤指源IP地址、源端口号或本地时间),利用加密算法(如md5算法)计算出cookie值,使用该算法得到的cookie值是动态值,能够使得攻击者无法仿制出相同的cookie值,从而能够保证TCP连接过程的可靠性。

之后,如果一个ACK包从客户端返回,流量管理设备将根据该ACK包中的cookie值校验客户端的合法性,若校验成功,则将所述ACK报文的源IP地址标记为合法用户,再执行以下处理TCP选项的过程,否则将所述ACK报文的源IP地址标记为攻击方,并丢弃接收到的该IP地址的握手报文。由于不必保持等候ACK包的半连接状态,从而避免了服务器资源的大量占用,即防护了SYN FLOOD攻击。

进一步地,参照图3,图3为本发明非代理流量不支持TCP选项的系统交互示意图。基于上述图1所示的实施例,所述向所述客户端反馈协商结果的步骤可以包括:

步骤S41,在后续接收到所述客户端发送的非代理流量类型的握手报文时,向所述客户端回送不支持所述TCP选项的握手报文。

流量管理设备与服务器协商TCP选项时,首先构造并向服务器发送SYN包(带TCP选项),若服务器不支持TCP选项,则向流量管理设备回送SYN+ACK包(不带TCP选项),流量管理设备回应ACK包。至此,流量管理设备获知服务器不支持TCP选项,并关闭非代理流量类型下的TCP选项支持功能。在后续接收到所述客户端发送的非代理流量类型的握手报文时,即SYN包(带TCP选项),向所述客户端回送不支持所述TCP选项的握手报文,即SYN+ACK包(不带TCP选项),客户端回应ACK包,之后,流量管理设备和服务器的握手也不会协商是否支持TCP选项,这样客户端与目标服务器建立的连接也就不支持TCP选项。

在本实施例中,流量管理设备接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文;若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。通过上述方式,在防护SYN Flood攻击过程中,流量管理设备在接收到客户端发送的TCP选项请求信息时,首先统一回复支持TCP选项,若流入流量管理设备的流量为非代理流量,则流量管理设备还要以探测的方式与目标服务器协商TCP选项,并向客户端进行相应反馈,以使得客户端调整其后续发送的握手报文。本发明能够实现流量管理设备在防护SYN Flood攻击过程中对TCP选项进行合理处理,从而能够提升网络传输的效率和质量,提升用户体验。

进一步地,基于上述图1所示的实施例,提出本发明传输控制协议选项的处理方法的第二实施例。本实施例中,所述向目标服务器协商是否支持所述TCP选项的步骤之后,还包括:

步骤S50,若所述目标服务器支持所述TCP选项,则在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号,并完成所述数据包的转发。

参照图4,图4为本发明非代理流量支持TCP选项的系统交互示意图。

流量管理设备与服务器协商TCP选项时,首先构造并向服务器发送SYN包(带TCP选项),若服务器支持TCP选项,则向流量管理设备回送SYN+ACK包(带TCP选项),流量管理设备回应ACK包。至此,流量管理设备获知服务器支持TCP选项,此时只需保留客户端与服务器之间的一条TCP连接,且该TCP连接支持TCP选项。

在本实施例中,流量管理设备获知到目标服务器支持TCP选项的信息后,保留客户端与服务器之间的一条连接。由于之前流量代理设备是代替客户端完成和服务器的握手,因此客户端和目标服务器此时的序列号和时间戳值会存在一个差值,从而客户端与服务器的TCP选项的序列号并不一致,如果不做调整,将导致通信无法正常进行,此时流量管理设备在进行后续的数据包转发时,需要对应调整数据包中TCP选项的序列号,再完成所述数据包的转发。

具体地,参照图5,图5为本发明第二实施例中流量管理设备调整TCP选项序列号的细化步骤示意图。所述在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号的步骤可以包括:

步骤S51,计算所述目标服务器与所述客户端序列号的差值;

流量管理设备使用SYN Cookie方式进行SYN Flood防护时,在建立客户端与服务器之间的连接后,客户端与服务器序列号存在差值K,该差值K可以由流量管理设备计算并保存。流量管理设备可以记录在之前握手过程中发送给客户端的序列号C,及服务器发送给客户端的序列号S,通过S减去C就可以得到差值K,即存在等式:K=S-C。

步骤S52,当接收到所述客户端向所述目标服务器转发的第一数据包时,将所述第一数据包中TCP选项的序列号加上所述差值;

步骤S53,当接收到所述目标服务器向所述客户端转发的第二数据包时,将所述第二数据包中TCP选项的序列号减去所述差值。

后续通信过程中,当流量管理设备接收到所述客户端向所述目标服务器转发的第一数据包时,将所述第一数据包中TCP选项的序列号加上所述差值,比如接收到的客户端发送给服务器的TCP选项的序列号C1,将调整为C1+K;

当流量管理设备接收到所述目标服务器向所述客户端转发的第二数据包时,将所述第二数据包中TCP选项的序列号减去所述差值。比如接收到的服务器发送给客户端的TCP选项的序列号S1,将调整为S1-K。

依次区分出是客户端方向的序列号还是服务器方向的序列号,进行调整,就能使得客户端与服务器正常通信。

需要说明的是,若所述TCP选项中存在时间戳选项,则还要对相应的时间戳回显值进行调整,调整的具体方法与上述序列号的调整方法类似,在此不做赘述。进一步需要说明的是,只有转发流量和本地流量需要调整TCP选项序列号和时间戳选项值,代理流量不需要,并且转发流量和本地流量的调整方式是一致的。

在本实施例中,为保证网络连接的安全,尤其是在防护SYN Flood攻击时,流量管理设备代替客户端和服务器完成握手,然而握手完成后服务器和客户端看到的序列号并不一致,流量管理设备通过调整TCP选项序列号和时间戳值,能够保证客户端与服务器之间正常通信,且该通信支持TCP选项,从而能够在防护SYN Flood攻击的同时支持TCP选项,进一步提升了网络传输的效率和质量。

进一步地,基于上述的实施例,所述TCP选项包括SACK选项和时间戳选项,所述向所述客户端回送支持所述TCP选项的握手报文的步骤可以包括:

将支持所述SACK选项的信息编码进所述时间戳选项的时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送。

SACK即选择性确认,是一种TCP优化选项,通过SACK选项可以使TCP发送方只发送丢失的数据而不用发送后续全部数据,提高了数据的传输效率;时间戳记录了数据传输的当前时间,能够用来计算数据传输往返的时间。

以客户端和流量管理设备之间的握手进行说明:当客户端请求的TCP选项中包含SACK选项时,客户端向流量管理设备发送SYN包(带SACK选项),作为一种实施方式,若客户端同时也支持时间戳选项,则流量管理设备可以将支持所述SACK选项的信息编码进时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送,即回送SYN+ACK包(带SACK选项和时间戳选项),客户端再返回ACK包。这样,客户端与流量管理设备建立的连接也就支持SACK选项和时间戳选项,提升了TCP数据传输的效率。

本发明还提供一种传输控制协议选项的处理装置。

参照图6,图6为本发明传输控制协议选项的处理装置第一实施例的功能模块示意图。所述装置包括:

接收模块10,用于接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;

在本实施例中,接收模块10接收客户端发送的握手报文,即SYN包,该SYN包中包含了TCP选项请求信息,用于向接收方请求支持携带的TCP选项。

判断模块20,用于根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;

接收模块10在接收到客户端发送的SYN包后,判断模块20对该SYN包进行解析,从而区分流入流量管理设备的流量类型,本实施例将流入流量管理设备的流量类型划分为代理流量和非代理流量,其中非代理流量包括转发流量和本地流量。

第一处理模块30,用于若所述流量类型为代理流量,则向所述客户端回送支持所述TCP选项的握手报文;

对于代理的流量,有两条TCP连接需要建立:一条是客户端与流量管理设备之间的TCP连接,一条是流量管理设备与服务器之间的TCP连接。

在本实施例中,流量管理设备具有TCP选项支持功能。参照图2,图2为本发明代理流量支持TCP选项的系统交互示意图。若判断模块20判断流量类型为代理流量,则第一处理模块30向客户端回送支持所述TCP选项的握手报文,即SYN+ACK包(带TCP选项),客户端再向流量管理设备返回ACK包(带TCP选项),从而建立了客户端与流量管理设备之间的TCP连接,且该TCP连接支持SYN包中携带的TCP选项。对于第二条TCP连接,由于服务器和客户端之间没有直接通信,因而无需考虑服务器否支持TCP选项,流量管理设备和服务器可以根据一般情况来进行三次握手,与正常通信没有区别。

第二处理模块40,用于若所述流量类型为非代理流量,则向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。

对于非代理流量,以转发流量为例,服务器与流量管理设备三次握手完成后,流量管理设备只保留一条TCP连接,即客户端与服务器之间的连接,流量管理设备只起到数据转发的作用。本地流量和转发流量类似,也是只保留一条TCP连接,与转发流量不同的是,客户端访问的是流量管理设备本地,此时根据内核协议栈进行相应处理即可。

若判断模块20判断流量类型为非代理流量,则第二处理模块40向客户端回送支持所述TCP选项的握手报文,此外,第二处理模块40还要向目标服务器协商是否支持客户端请求的TCP选项,若服务器不支持,则向所述客户端反馈不支持的信息;若服务器支持,则可以不做其他处理,在客户端与服务器建立TCP连接之后,完成相应的数据转发功能即可,该TCP连接支持TCP选项。

需要说明的是,上述处理TCP选项的方法可应用于正常的TCP连接过程,也可应用于流量管理设备在防护SYN FLOOD攻击的过程中,对于后者,当流量管理设备在较短时间内检测到大量客户端发送的SYN包时,即判定受到了SYN洪水攻击,随即自动开启SYN FLOOD防护功能,此时,流量管理设备需要对接收到的SYN包统一处理然后丢弃。具体地,所述装置还包括:

检测模块201,用于检测预设时长内接收到的所述客户端发送的握手报文的数量是否超过预设阈值;

校验模块202,用于若预设时长内接收到的所述客户端发送的握手报文的数量超过预设阈值,则基于cookie校验机制,校验所述客户端是否合法;若所述客户端不合法,则丢弃所述客户端发送的握手报文;若所述客户端合法,则判断模块根据所述握手报文判断流入流量管理设备的流量类型。

当检测模块201在较短时间内检测到大量客户端发送的SYN包时,即判定受到了SYN洪水攻击,随即流量管理设备自动开启SYN FLOOD防护功能,此时,校验模块202可以基于cookie校验机制,校验所述客户端是否合法。

cookie校验机制,其原理在于,流量管理设备在接收到SYN包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值,并将该cookie值添加到回送给客户端的SYN+ACK包中。

其中,cookie值即初始TCP序列号。流量管理设备可以按照预设的加密算法计算cookie值,比如,根据TCP SYN报文的TCP首部信息(尤指源IP地址、源端口号或本地时间),利用加密算法(如md5算法)计算出cookie值,使用该算法得到的cookie值是动态值,能够使得攻击者无法仿制出相同的cookie值,从而能够保证TCP连接过程的可靠性。

之后,如果一个ACK包从客户端返回,校验模块202将根据该ACK包中的cookie值校验客户端的合法性,若校验成功,则将所述ACK报文的源IP地址标记为合法用户,判断模块20再根据所述握手报文判断流入流量管理设备的流量类型;否则,将所述ACK报文的源IP地址标记为攻击方,并丢弃接收到的该IP地址的握手报文。由于不必保持等候ACK包的半连接状态,从而避免了服务器资源的大量占用,即防护了SYN FLOOD攻击。

进一步地,参照图3,图3为本发明非代理流量不支持TCP选项的系统交互示意图。基于上述的实施例,所述第二处理模块40还用于:

在后续接收到所述客户端发送的非代理流量类型的握手报文时,向所述客户端回送不支持所述TCP选项的握手报文。

流量管理设备与服务器协商TCP选项时,首先第二处理模块40构造并向服务器发送SYN包(带TCP选项),若服务器不支持TCP选项,则向流量管理设备回送SYN+ACK包(不带TCP选项),流量管理设备回应ACK包。至此,流量管理设备获知服务器不支持TCP选项,并关闭非代理流量类型下的TCP选项支持功能。在后续接收到所述客户端发送的非代理流量类型的握手报文时,即SYN包(带TCP选项),向所述客户端回送不支持所述TCP选项的握手报文,即SYN+ACK包(不带TCP选项),客户端回应ACK包,之后,流量管理设备和服务器的握手也不会协商是否支持TCP选项,这样客户端与目标服务器建立的连接也就不支持TCP选项。

在本实施例中,接收模块10接收客户端发送的握手报文,所述握手报文携带TCP选项请求信息;判断模块20根据所述握手报文判断流入流量管理设备的流量类型,所述流量类型包括代理流量和非代理流量;若所述流量类型为代理流量,则第一处理模块30向所述客户端回送支持所述TCP选项的握手报文;若所述流量类型为非代理流量,则第二处理模块40向所述客户端回送支持所述TCP选项的握手报文,并向目标服务器协商是否支持所述TCP选项,若所述目标服务器不支持所述TCP选项,则向所述客户端反馈协商结果。通过上述方式,在防护SYN Flood攻击过程中,流量管理设备在接收到客户端发送的TCP选项请求信息时,首先统一回复支持TCP选项,若流入流量管理设备的流量为非代理流量,则流量管理设备还要以探测的方式与目标服务器协商TCP选项,并向客户端进行相应反馈,以使得客户端调整其后续发送的握手报文。本发明能够实现流量管理设备在防护SYN Flood攻击过程中对TCP选项进行合理处理,从而能够提升网络传输的效率和质量,提升用户体验。

进一步地,继续参照图6,所述第二处理模块40还用于:

若所述目标服务器支持所述TCP选项,则在所述客户端与所述目标服务器经由所述流量管理设备进行通信时,对应调整通信数据包中所述TCP选项的序列号,并完成所述数据包的转发。

参照图4,图4为本发明非代理流量支持TCP选项的系统交互示意图。

流量管理设备与服务器协商TCP选项时,首先构造并向服务器发送SYN包(带TCP选项),若服务器支持TCP选项,则向流量管理设备回送SYN+ACK包(带TCP选项),流量管理设备回应ACK包。至此,流量管理设备获知服务器支持TCP选项,此时只需保留客户端与服务器之间的一条TCP连接,且该TCP连接支持TCP选项。

在本实施例中,流量管理设备获知到目标服务器支持TCP选项的信息后,保留客户端与服务器之间的一条连接。由于之前流量代理设备是代替客户端完成和服务器的握手,因此客户端和目标服务器此时的序列号和时间戳值会存在一个差值,从而客户端与服务器的TCP选项的序列号并不一致,如果不做调整,将导致通信无法正常进行,此时流量管理设备在进行后续的数据包转发时,第二处理模块40需要对应调整数据包中TCP选项的序列号,再完成所述数据包的转发。

具体地,参照图7,图7为图6中第二处理模块的细化功能模块示意图。所述第二处理模块40还可以包括:

计算单元41,用于计算所述目标服务器与所述客户端序列号的差值;

流量管理设备使用SYN Cookie方式进行SYN Flood防护时,在建立客户端与服务器之间的连接后,客户端与服务器序列号存在差值K,该差值K可以由计算单元41计算并保存。计算单元41可以记录在之前握手过程中发送给客户端的序列号C,及服务器发送给客户端的序列号S,通过S减去C就可以得到差值K,即存在等式:K=S-C。

第一处理单元42,用于当接收到所述客户端向所述目标服务器转发的第一数据包时,将所述第一数据包中TCP选项的序列号加上所述差值;

第二处理单元43,用于当接收到所述目标服务器向所述客户端转发的第二数据包时,将所述第二数据包中TCP选项的序列号减去所述差值。

后续通信过程中,当流量管理设备接收到所述客户端向所述目标服务器转发的第一数据包时,第一处理单元42将所述第一数据包中TCP选项的序列号加上所述差值,比如接收到的客户端发送给服务器的TCP选项的序列号C1,将调整为C1+K;

当流量管理设备接收到所述目标服务器向所述客户端转发的第二数据包时,第二处理单元43将所述第二数据包中TCP选项的序列号减去所述差值。比如接收到的服务器发送给客户端的TCP选项的序列号S1,将调整为S1-K。

依次区分出是客户端方向的序列号还是服务器方向的序列号,进行调整,就能使得客户端与服务器正常通信。

需要说明的是,若所述TCP选项中存在时间戳选项,则第二处理模块40还要对相应的时间戳回显值进行调整,调整的具体方法与上述序列号的调整方法类似,在此不做赘述。进一步需要说明的是,只有转发流量和本地流量需要调整TCP选项序列号和时间戳选项值,代理流量不需要,并且转发流量和本地流量的调整方式是一致的。

在本实施例中,为保证网络连接的安全,尤其是在防护SYN Flood攻击时,流量管理设备代替客户端和服务器完成握手,然而握手完成后服务器和客户端看到的序列号并不一致,第二处理模块40通过调整TCP选项序列号和时间戳值,能够保证客户端与服务器之间正常通信,且该通信支持TCP选项,从而能够在防护SYN Flood攻击的同时支持TCP选项,进一步提升了网络传输的效率和质量。

进一步地,基于上述的实施例,所述TCP选项包括SACK选项和时间戳选项,所述所述第一处理模块30和所述第二处理模块40还用于:

将支持所述SACK选项的信息编码进所述时间戳选项的时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送。

SACK即选择性确认,是一种TCP优化选项,通过SACK选项可以使TCP发送方只发送丢失的数据而不用发送后续全部数据,提高了数据的传输效率;时间戳记录了数据传输的当前时间,能够用来计算数据传输往返的时间。

以客户端和流量管理设备之间的握手进行说明:当客户端请求的TCP选项中包含SACK选项时,客户端向流量管理设备发送SYN包(带SACK选项),作为一种实施方式,若客户端同时也支持时间戳选项,则第一处理模块30或者第二处理模块40可以将支持所述SACK选项的信息编码进时间戳值中,并将所述时间戳值添加到回送给所述客户端的握手报文中进行回送,即回送SYN+ACK包(带SACK选项和时间戳选项),客户端再返回ACK包。这样,客户端与流量管理设备建立的连接也就支持SACK选项和时间戳选项,提升了TCP数据传输的效率。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1