一种用于防止tcp攻击的连接管理方法

文档序号:8459243阅读:535来源:国知局
一种用于防止tcp攻击的连接管理方法
【技术领域】
[0001]本发明涉及网络技术领域,具体地说,涉及一种用于防止TCP攻击的连接管理方法。
【背景技术】
[0002]现有技术中,高性能的报文处理设备需要随时处理海量网络报文,并且需要对每一个到达的TCP连接分配相关的存储资源,用于维持TCP连接、完成TCP统计及应用层报文分析。因此,TCP数据及连接状态的高效存储是决定设备性能的重要方面。
[0003]在实际的网络环境中,除了正常流量报文外,还存在着大量的网络攻击报文。特别是诸如TCP同步洪泛(TCP SYN Flood)攻击的TCP报文攻击,其利用TCP协议的缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽。即采用伪造的海量地址在短时间向同一网络地址和端口请求建立TCP连接。目标是快速耗尽服务端的物理资源,使得正常的TCP连接因服务端缺少资源而无法建立。
[0004]正常的TCP连接过程如图1a所示。首先进行第一次握手,客户端发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文指明客户端使用的端口以及TCP连接的原始序号J。然后进行第二次握手,服务器在收到客户端的SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时TCP序号J被加一,ACK即确认(Acknowledgement)。最后完成第三次握手,客户端返回一个确认报文ACK给服务器端,同样TCP序列号K被加一,到此一个TCP连接完成。以上的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。
[0005]TCP SYN Flood攻击的过程如图1b所示。客户端伪造大量网络地址向服务器发送包含SYN标志的TCP报文(第一次握手报文)。服务器在发出SYN+ACK应答报文后,做为攻击方的客户端并不做出任何应答,客户端并不发送ACK报文,因此第三次握手无法完成。这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。
[0006]在这种情况下,服务器端为了维护一个非常大的半连接列表而消耗非常多的资源,服务器端将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求,此时从正常客户的角度看来,服务器失去响应。
[0007]因此,亟需一种能够防止TCP攻击的连接管理方法。

【发明内容】

[0008]本发明所要解决的技术问题在于防止现有技术中在进行TCP连接时出现的TCP报文攻击。
[0009]本发明提供一种用于防止TCP攻击的连接管理方法,包括:
[0010]获取TCP连接中原始数据包的连接状态和五元组信息,基于原始数据包的五元组信息生成第一层流表的链表,所述第一层流表的链表包括第一 HASH索引节点和第一用户节点,将原始数据包的五元组信息和连接状态记录在第一用户节点中;
[0011]基于第一层流表选择TCP连接中连接状态为第三次握手的原始数据包之后的数据包作为安全数据包;
[0012]根据安全数据包的五元组信息和负载数据生成第二层流表的链表,所述第二层流表的链表包括第二 HASH索引节点、第二用户节点和数据节点,将安全数据包的五元组信息存储在第二用户节点中,将安全数据包的负载数据存储在数据节点中。
[0013]在一个实施例中,当接收到安全数据包的FIN报文时,根据FIN报文中携带的五元组信息删除第一层流表的第一用户节点,并且删除第二层流表的第二用户节点和数据节点。
[0014]在一个实施例中,当TCP连接中原始数据包的连接状态发生改变时,更新第一层流表的第一用户节点中记录的连接状态,其中,所述连接状态为第一次握手、第二次握手或者第三次握手。
[0015]在一个实施例中,还包括:
[0016]为原始数据包创建第一时间戳,在第一层流表的第一 HASH索引节点和第一用户节点中记录第一时间戳;
[0017]当原始数据包的连接状态或者负载数据发生改变时,更新第一时间戳。
[0018]在一个实施例中,在第一层流表的链表全部占用的情况下,根据第一时间戳删除第一层流表中创建时间超过淘汰时间阈值的链表。
[0019]在一个实施例中,还包括:
[0020]为安全数据包创建第二时间戳,在第二层流表的第二 HASH索引节点、第二用户节点和数据节点中记录第二时间戳;
[0021]当安全数据包的负载数据发生改变时,更新第二时间戳。
[0022]在一个实施例中,遍历第一层流表和第二层流表,根据第一时间戳删除第一层流表中创建时间超过超时时间阈值的链表的第一用户节点,以及根据第二时间戳删除第二层流表中创建时间超过超时时间阈值的链表的第二用户节点和数据节点。
[0023]在一个实施例中,第一层流表的链表的首节点为第一 HASH索引节点,第一 HASH索引节点具有指向首个第一用户节点的地址指针,且第一用户节点具有指向下一第一用户节点的地址指针,从而构成第一用户节点链。
[0024]在一个实施例中,第二层流表的链表的首节点为第二 HASH索引节点,第二 HASH索引节点具有指向首个第二用户节点的地址指针,第二用户节点具有指向下一第二用户节点的地址指针,从而构成第二用户节点链;
[0025]第二用户节点具有指向数据节点的地址指针,属于同一第二用户节点的数据节点构成数据节点链。
[0026]在一个实施例中,所述将安全数据包的五元组信息存储在第二用户节点中的步骤包括:
[0027]判断安全数据包的五元组信息是否已保存在第二层流表的第二用户节点中;
[0028]若未保存,则分配第二用户节点用于存储所述五元组信息,使新分配的第二用户节点作为尾节点加入第二用户节点链中;
[0029]若已保存,则修改第二用户节点的第二时间戳。
[0030]在一个实施例中,其特征在于,所述将安全数据包的负载数据存储在数据节点的步骤包括:
[0031]为安全数据包的负载数据分配至少一个数据节点,用于存储负载数据;
[0032]在数据节点为一个的情况下,使数据节点链接至与安全数据包的五元组信息对应的第二用户节点;
[0033]在数据节点为多个的情况下,使数据节点构成数据节点链,并链接至与安全数据包的五元组信息对应的第二用户节点。
[0034]在一个实施例中,第一层流表的第一 HASH索引节点用于存储由原始数据包的五元组信息按照第一哈希算法计算的哈希值;
[0035]第二层流表的第二 HASH索引节点用于存储由安全数据包的五元组信息按照第二哈希算法计算的哈希值。
[0036]本发明实施例通过第一层流表来过滤TCP攻击报文,在第二层流表中缓存安全数据流的负载数据,不仅能防止TCP攻击,还能实时更新服务器的缓存,及时释放僵死连接,高效管理服务器端的缓存资源。
[0037]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0038]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
[0039]图1a是现有技术中正常的TCP连接过程的原理性示意图;
[0040]图1b是现有技术中TCP同步洪泛攻击的原理性示意图;
[0041]图2是根据本发明实施例的两层流表结构的示意图;
[0042]图3是根据本发明实施例的第一层流表的结构示意图;
[0043]图4是根据本发明实施例的第二层流表的结构示意图;
[0044]图5是根据本发明实施例的用于防止TCP攻击的连接管理方法的步骤流程图。
【具体实施方式】
[0045]为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。本发明实施例提供的用于防止TCP攻击的连接管理方法可以是在服务器中安装的软件模块、硬件或者固件,或者三者的任意组合。
[0046]本发明的实施例采用两层流表结构,如图2所示,第一层流表用于记录TCP连接中原始数据包的连接状态,选择已经正常完成第三次握手之后的数据包作为可以信任的安全数据包,第二层流表用于保存安全数据包的报文数据。这样通过第一层流表对不完整的TCP连接完成过滤,只有正常完成第三次握手的TCP连接才能获取物理存储资源。此外,还提供超时管理和淘汰管理机制,对第一层流表和第
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1