在传输控制协议TCP下防止攻击的方法和装置转让专利

申请号 : CN201210126276.5

文献号 : CN102780688B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任广涛

申请人 : 华为技术有限公司

摘要 :

公开一种在代理端实现的传输控制协议TCP下的防止攻击的方法和装置。所述方法包括:接收客户端发来的请求与服务器建立对话的请求同步报文;向客户端发送第一确认报文;接收客户端发来的第二确认报文;基于第二确认报文来判断所述请求同步报文是否属于攻击报文;如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表。采用本发明实施例的方法和装置,在大量SYN Flood攻击的情况下,也能有效的防止攻击,保证正常用户与服务器的连接,以提升业务体验。

权利要求 :

1.一种在代理端实现的传输控制协议TCP下的防止攻击的方法,其特征在于,包括:接收客户端发来的请求与服务器建立对话的请求同步报文;

向客户端发送第一确认报文;

接收客户端发来的第二确认报文;

基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;

如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;

如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表;

其中,向客户端发送第一确认报文的处理还包括:根据所述请求同步报文来设置所述第一确认报文的序列号;

根据所述请求同步报文来设置所述第一确认报文的序列号的处理包括:根据所述请求同步报文的序列号和代理端的时间信息来生成所述第一确认报文的序列号;

基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文的处理包括:根据所述第二确认报文来计算与所述第二确认报文对应的时间信息;

将计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息进行比较;

如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差超过阈值,则判定为攻击报文;

如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差没有超过阈值,则判定为合法报文。

2.根据权利要求1所述的在代理端实现的传输控制协议TCP下的防止攻击的方法,其特征在于,根据所述第二确认报文来计算与所述第二确认报文对应的时间信息的处理包括:根据所述第二确认报文的序列号、所述第二确认报文的目的地址、所述第二确认报文的源地址、所述第二确认报文的目的端口、所述第二确认报文的源端口以及与所述第二确认报文对应的干扰因子来计算与所述第二确认报文对应的时间信息。

3.一种在代理端实现的传输控制协议TCP下的防止攻击的方法,其特征在于,包括:接收客户端发来的请求与服务器建立对话的请求同步报文;

向客户端发送第一确认报文;

接收客户端发来的第二确认报文;

基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;

如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;

如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表;

其中,向客户端发送第一确认报文的处理还包括:根据所述请求同步报文来设置所述第一确认报文的序列号;

根据所述请求同步报文来设置所述第一确认报文的序列号的处理包括:根据所述请求同步报文的序列号、所述请求同步报文的目的地址、所述请求同步报文的源地址、所述请求同步报文的目的端口、所述请求同步报文的源端口、代理端的时间信息以及与所述请求同步报文对应的干扰因子来设置所述第一确认报文的序列号;

基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文的处理包括:根据所述第二确认报文来计算与所述第二确认报文对应的时间信息;

将计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息进行比较;

如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差超过阈值,则判定为攻击报文;

如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差没有超过阈值,则判定为合法报文。

4.根据权利要求3所述的在代理端实现的传输控制协议TCP下的防止攻击的方法,其特征在于,根据所述第二确认报文来计算与所述第二确认报文对应的时间信息的处理包括:根据所述第二确认报文的序列号、所述第二确认报文的目的地址、所述第二确认报文的源地址、所述第二确认报文的目的端口、所述第二确认报文的源端口以及与所述第二确认报文对应的干扰因子来计算与所述第二确认报文对应的时间信息。

5.一种在代理端实现的传输控制协议TCP下的防止攻击的装置,其特征在于,所述装置包括:接收发送单元,被配置成接收客户端发来的请求与服务器建立对话的请求同步报文;

向客户端发送第一确认报文;接收客户端发来的第二确认报文;

判断单元,被配置成基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表;

所述接收发送单元还被配置成根据所述请求同步报文来设置所述第一确认报文的序列号;

所述接收发送单元被进一步配置成:根据所述请求同步报文的序列号和代理端的时间信息来生成所述第一确认报文的序列号;

所述判断单元还被配置成根据所述第二确认报文来计算与所述第二确认报文对应的时间信息;将计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息进行比较;如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差超过阈值,则判定为攻击报文;如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差没有超过阈值,则判定为合法报文。

6.根据权利要求5所述的在代理端实现的传输控制协议TCP下的防止攻击的装置,其特征在于,所述判断单元还被配置成根据所述第二确认报文的序列号、所述第二确认报文的目的地址、所述第二确认报文的源地址、所述第二确认报文的目的端口、所述第二确认报文的源端口以及与所述第二确认报文对应的干扰因子来计算与所述第二确认报文对应的时间信息。

7.一种在代理端实现的传输控制协议TCP下的防止攻击的装置,其特征在于,所述装置包括:接收发送单元,被配置成接收客户端发来的请求与服务器建立对话的请求同步报文;

向客户端发送第一确认报文;接收客户端发来的第二确认报文;

判断单元,被配置成基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表;

所述接收发送单元还被配置成根据所述请求同步报文来设置所述第一确认报文的序列号;

所述接收发送单元还进一步被配置成:根据所述请求同步报文的序列号、所述请求同步报文的目的地址、所述请求同步报文的源地址、所述请求同步报文的目的端口、所述请求同步报文的源端口、代理端的时间信息以及与所述请求同步报文对应的干扰因子来设置所述第一确认报文的序列号;

所述判断单元还被配置成根据所述第二确认报文来计算与所述第二确认报文对应的时间信息;将计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息进行比较;如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差超过阈值,则判定为攻击报文;如果计算出的与所述第二确认报文对应的时间信息与用于生成所述第一确认报文的序列号的时间信息之间的差没有超过阈值,则判定为合法报文。

8.根据权利要求7所述的在代理端实现的传输控制协议TCP下的防止攻击的装置,其特征在于,所述判断单元还被配置成根据所述第二确认报文的序列号、所述第二确认报文的目的地址、所述第二确认报文的源地址、所述第二确认报文的目的端口、所述第二确认报文的源端口以及与所述第二确认报文对应的干扰因子来计算与所述第二确认报文对应的时间信息。

说明书 :

在传输控制协议TCP下防止攻击的方法和装置

技术领域

[0001] 本发明涉及通信技术领域,更具体来说,涉及一种在传输控制协议TCP下防止攻击的方法和装置。

背景技术

[0002] 随着通信技术领域的发展,电信数据业务量也随之激增。毋庸置疑,网络同时也会面临各种各样的安全上的挑战,SYN Flood流量的攻击便是其中典型的一种。这种攻击通过使用大量的数据包来攻击目标系统,消耗目标系统资源来使合法用户无法正常使用网络服务。
[0003] 为了保护网络设备后面的服务器,一般会采用TCP Proxy方案,也就是说,在网络设备上面采用先与代理服务器建立连接,在真正的数据报文到来时,才和真正的服务器建立连接。
[0004] 目前,现有的TCP Proxy方案主要是首先客户端向代理服务器发送请求对话的报文;其次,代理服务器在收到请求报文后,便建立用于表征客户端与服务器的对应关系的会话表,并向客户端回复确认报文;紧接着,客户端向代理服务器发送确认报文和数据报文;接下来,代理服务器收到确认报文后,便和真正的服务器建立三次交互,将数据发送到真正的服务器。
[0005] 但是,采用上述现有技术,在大量SYN Flood攻击的情况下,由于在接收到攻击方发出的每个SYN报文时,代理服务器均需要建立会话表,所以会消耗掉代理服务器的会话表资源,导致正常用户无法与服务器连接。

发明内容

[0006] 本发明旨在提供一种在传输控制协议TCP下防止攻击的方法和装置。
[0007] 在本发明的一个实施例中,提供了一种在传输控制协议TCP下的防止攻击的方法,该方法包括以下步骤:接收客户端发来的请求与服务器建立对话的请求同步报文;向客户端发送第一确认报文;接收客户端发来的第二确认报文;基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表。
[0008] 在本发明的另一个实施例中,提供了一种在传输控制协议TCP下的防止攻击的装置。该装置包括:接收发送单元,被配置成接收客户端发来的请求与服务器建立对话的请求同步报文;向客户端发送第一确认报文;接收客户端发来的第二确认报文;判断单元,被配置成基于所述第二确认报文来判断所述请求同步报文是否属于攻击报文;如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;如果判定所述请求同步报文属于合法报文,则建立客户端与服务器之间的会话表。
[0009] 可以看出,采用本发明实施例的方法和装置,在大量SYN Flood攻击的情况下,也能有效的防止攻击,保证正常用户与服务器的连接,以提升业务体验。

附图说明

[0010] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0011] 图1是本发明实施例中在传输控制协议TCP下防止攻击的方法的流程框图;
[0012] 图2是本发明实施例中在传输控制协议TCP下防止攻击的方法的信息交互的示意图;
[0013] 图3是本发明实施例中在传输控制协议TCP下防止攻击的装置的结构框图。

具体实施方式

[0014] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0015] 本发明实施例中提供了一种在传输控制协议TCP协议下的防止攻击的方法,如图1所示,该方法包括:
[0016] S110:从客户端接收请求发起对话的请求同步报文;
[0017] S120:向客户端发送确认报文;
[0018] S130:从客户端接收客户端确认报文;
[0019] S140:基于所述客户端确认报文来判断所述请求同步报文是否属于攻击报文;
[0020] S150:如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文;
[0021] S160:如果判定所述请求同步报文属于合法报文,则建立会话表并实现客户端与服务器之间的交互。
[0022] 通过以上这种方式,不必针对每个请求同步报文来建立会话表,而仅在判定请求同步报文不属于攻击报文的情况下才建立会话表。由此,可以有效地防止来自网络的攻击避免不必要的会话表资源的消耗。
[0023] 具体的,如图2所示的本发明实施例中信息交互的示意图,下文将针对以上方法,对本发明实施例做出详细的描述。
[0024] S110、从客户端接收请求发起对话的请求同步报文。
[0025] 具体来说,代理端可以从客户端接收TCP协议下的请求发起TCP会话的报文,启动会话。例如,代理端可以是一种代理服务器或者是具有代理功能的路由器,而发起TCP会话的报文例如可以是同步(synchronize,SYN)报文,其中,SYN报文中包含的序列号可以用C#来表示,如图2中所示。
[0026] S120、向客户端发送确认报文。
[0027] 具体来说,当代理端收到客户端发送的请求同步报文SYN后,代理端可以向客户端返回确认报文SYN ACK,其中,该确认报文SYN ACK的报文序列号中可以根据代理端接收到的请求同步报文SYN以及代理端的时间信息来设置。在本文中,确认报文SYN ACK的序列号可以用P#来代表,如图2中所示。此外,在根据本发明的实施例中,在向客户端发送确认报文时,代理端可以不对确认报文SYN ACK的序列号P#进行存储,也就是说,此时代理端并不建立会话表。由此可以减少不必要的会话表资源的消耗。
[0028] 在本发明的一个实施例中,如上所述,可以根据接收到的请求同步报文SYN以及代理端的时间信息来设置确认报文SYN ACK的序列号。
[0029] 作为一个具体的示例,上述确认报文SYN ACK的序列号P#的设置可以基于以下公式来实现:P#=A+B+C,其中:
[0030] A可以通过从请求同步报文SYN中获取。例如,可以通过hash表来计算A。可以利用请求同步包括SYN的四元组信息来计算出A,所述四元组信息可以包括请求同步报文的源地址、请求同步报文的目的地址、请求同步报文的源端口号、请求同步报文的目的端口号。
[0031] 在一个具体示例中,可以通过以下方式来计算A:
[0032] A=Hash(srcaddr,dstaddr,srcport,dstport,num),其中,Hash()表示hash函数,srcaddr、dstaddr、srcport、dstport分别是请求同步报文的源地址、请求同步报文的目的地址、请求同步报文的源端口号、请求同步报文的目的端口号,而num是可以随机设定的协议号。
[0033] B可以是代理端的时间信息,单位例如可以是分钟。
[0034] 在一个具体示例中,B可以是代理端当前时间信息。例如,可以通过以下公式来计算出B:
[0035] B=Current_cycle/(HZ*60),其中Current_cycle为提供时钟的主机的当前周期数,HZ为提供时钟的主机的主频大小,由此B可以表示代理端当前时间(在此示例中以分钟为单位)。
[0036] C是请求同步报文SYN中携带的序列号C#。
[0037] S130、从客户端接收客户端确认报文。
[0038] 具体来说,当客户端收到代理端返回的确认报文SYN ACK后,客户端将向代理端返回确认报文ACK。该确认报文ACK中包括了请求同步报文SYN的序列号和确认序列号,其中,由于在请求同步报文的传输过程中会消耗掉一个序列号,因此在客户端向代理端返回确认报文ACK时,请求同步报文SYN的序列号和确认序列号均要加1,例如,可以用C#+1来表示此时的请求同步报文的序列号,P#+1来表示客户端确认报文的序列号。
[0039] S140、基于所述客户端确认报文来判断所述请求同步报文是否属于攻击报文。
[0040] 具体来说,当代理端收到客户端返回确认报文ACK后,可以根据客户端确认报文ACK来获得与客户端确认报文ACK对应的时间信息,再通过判断该时间信息是否正常来判定报文是否是合法报文。显然,在SYN Flood攻击的情况下,攻击端反馈的客户端确认报文为随机设置,其所对应的时间信息也不会与用于生成确认报文SYN ACK的序列号的时间信息存在对应关系。因而,可以根据客户端确认报文ACK来获得与客户端确认报文ACK对应的时间信息,并基于该时间信息与用于生成确认报文SYN ACK的序列号的时间信息的比较来确定是否存在攻击。
[0041] 例如,代理端可以将计算出的与客户端确认报文ACK对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息进行比较。如果计算出的与客户端确认报文ACK对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息之间的差超过阈值,则代理端可以将相应的请求同步报文SYN判定为攻击报文;如果计算出的与客户端确认报文ACK对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息之间的差没有超过阈值,则代理端可以判定为合法报文。其中,上述阈值可以根据经验值来设定,例如可以设置为2分钟。
[0042] 同样的,对于与客户端确认报文ACK对应的时间信息的获得,本实施例也可以通过如下公式来表示,例如,P#+1=A+B+C。其中,P#+1是在步骤S120中求得的P#上加1;A的代表意义与求法已在步骤S120中描述,便不在此赘述。C为请求同步报文SYN的序列号加1,可表示为C#+1。通过上述公式,本实施例便可获得与客户端确认报文ACK对应的时间信息B。
[0043] S150、如果判定所述请求同步报文属于攻击报文,则舍弃所述请求同步报文。
[0044] S160、如果判定所述请求同步报文属于合法报文,则建立会话表并实现客户端与服务器之间的交互。
[0045] 具体来说,代理端判定请求同步报文属于合法报文后,代理端将建立会话表,同时与服务器进行三次交互,并根据建立的会话表,转发客户端与服务器间交互的数据报文。
[0046] 其中,上述所建立的会话表例如可以以hash表的形式进行存储。
[0047] 与上述的消除同频干扰的方法类似,本发明实施例还提供了相应的装置。
[0048] 图3示出了本发明实施例中的在传输控制协议TCP下防止攻击的装置200。
[0049] 如图3所示,上述的防止攻击的装置可以包括接收发送单元210和判断单元220。
[0050] 具体来说,当客户端发出请求会话的同步报文SYN,启动会话时,接收发送单元210可以从客户端接收请求发起对话的请求同步报文SYN,并可以在收到请求同步报文后,向客户端发送确认报文SYN ACK,当客户端再次回复时,接收发送单元210便可以从客户端接收客户端确认报文ACK。
[0051] 其中,在本发明的一个实施例中,接收发送单元210还可以根据请求同步报文SYN的序列号和代理端的时间信息来设置确认报文SYN ACK的序列号。在本发明的一个具体实施例中,接收发送单元210可以根据请求同步报文SYN的序列号、请求同步报文SYN的目的地址、请求同步报文SYN的源地址、请求同步报文SYN的目的端口、请求同步报文SYN的源端口、代理端的当前时间以及与请求同步报文SYN对应的干扰因子来设置确认报文SYN ACK的序列号。
[0052] 相应的,当接收发送单元210接收到从客户端接收的客户端确认报文ACK后,判断单元220可以根据客户端确认报文ACK来判断请求同步报文SYN是否属于攻击报文,例如,如果判断单元220判定请求同步报文SYN属于攻击报文,则判断单元220可以舍弃请求同步报文SYN,反之,如果判断单元220判定请求同步报文SYN属于合法报文,则判断单元220可以建立会话表并实现客户端与服务器之间的交互。
[0053] 在本发明的一个实施例中,判断单元220还可以根据客户端确认报文ACK来计算与客户端确认报文ACK对应的时间信息,然后,判断单元220将计算出的与客户端确认报文对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息进行比较。例如,如果计算出的与客户端确认报文ACK对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息之间的差超过阈值,则判断单元220可以将请求同步报文SYN判定为攻击报文,反之,如果计算出的与客户端确认报文ACK对应的时间信息与用于生成确认报文SYN ACK的序列号的时间信息之间的差没有超过阈值,则判断单元220可以将请求同步报文SYN判定为合法报文。
[0054] 进一步的,在本发明的一个实施例中,对于根据上述客户端确认报文ACK来计算与客户端确认报文ACK对应的时间信息的处理,判断单元220可以根据客户端确认报文ACK的序列号、客户端确认报文ACK的目的地址、客户端确认报文ACK的源地址、客户端确认报文ACK的目的端口、客户端确认报文ACK的源端口以及与客户端确认报文ACK对应的干扰因子来计算与客户端确认报文ACK对应的时间信息。
[0055] 根据本发明实施例的上述装置在技术上与方法是对应的,关于装置的技术细节可以参见方法的详细描述,在此不再进行赘述以使得说明书保持简洁。
[0056] 本领域技术人员应该理解,本发明实施例中装置模块的划分为功能划分,实际具体结构可以为上述功能模块的拆分或合并。
[0057] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0058] 权利要求的内容记载的方案也是本发明实施例的保护范围。
[0059] 本领域普通技术人员可以理解上述实施例方法中的全部或部分处理是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中。
[0060] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。