一种ACKFlood攻击的防护方法及中间防护装置与流程

文档序号:12376920阅读:878来源:国知局
一种ACK Flood攻击的防护方法及中间防护装置与流程

本发明涉及攻击防御技术领域,尤其涉及一种ACK Flood攻击的防护方法及中间防护装置。



背景技术:

在传输数据之前,客户端和目标服务器之间需要先建立一个连接,也就是所谓的三次握手,在完成三次握手之后,客户端和目标服务器就可以通过确认(Acknowledgement,ACK)报文进行数据传输。在数据传输过程中,目标服务器接收到客户端发送的ACK报文后,会判断该ACK报文中携带的源网协(Internet Protocol,IP)地址和源端口是否保存在本地会话表中,确定未保存在本地会话表中时,判定该ACK报文是非法ACK报文,并直接丢弃该非法ACK报文。

通常情况下,攻击者会通过向目标服务器发送大量的携带有虚假源IP地址和虚假源端口的ACK报文,向该目标服务器发起攻击(即通过ACK Flood攻击方法向目标服务器发起攻击),目标服务器接收到这些携带有虚假源IP地址和虚假源端口的ACK报文时,虽然会采用上述识别方法,确定这些ACK报文是非法ACK报文后,直接丢弃,但是,由于这些携带有虚假源IP地址和虚假源端口的ACK报文的流量过大,所以,会使得目标服务器的带宽被堵满,而且,目标服务器接收并丢弃这些携带有虚假源IP地址和虚假源端口的ACK报文也需要消耗大量的处理资源,不仅延误了合法ACK报文的处理时间,还会造成目标服务器瘫痪。

现有技术中,针对上述问题,通常会通过中间防护装置对非法客户端进行识别,并对非法客户端发送的ACK报文进行检查防御,具体地,中间防护装置会采用以下三种识别方法识别非法客户端:

第一种防护方法:中间防护装置接收到ACK报文后,无论该ACK报文是否是合法ACK报文,均会丢弃该ACK报文,这样,丢弃ACK报文的次数大于预设的重传次数后,会使得各个客户端与相应的目标服务器之间的连接中断,各个客户端需要重新建立连接,进而,就可以通过三次握手的校验过程,识别出非法客户端。

第二种防护方法:利用传输控制协议(Transmission Control Protocol,TCP)的重传机制:直接丢弃ACK报文,合法客户端在固定时间范围内未接收到相应的ACK响应报文时,会针对该ACK报文进行重传,而非法客户端可能无法在固定时间范围内进行重传,从而就可以识别出非法客户端。

第三种防护方法:基于接收到的各个客户端发送的第一个ACK报文携带的序列号、确认号等第一报文信息,推测各个客户端在发送第二个ACK报文时应该携带在该第二个ACK报文中的序列号、确认号等报文信息,并将推测的报文信息分别记录在会话表中,这样,接收到各个客户端发送的第二个ACK报文后,利用会话表,分别判断接收到的各个第二个ACK报文实际携带的第二报文信息与推测的报文信息是否相匹配,若是,则判定该客户端为合法客户端,否则,判定该客户端为非法客户端。

基于上述分析,现有技术中针对ACK Flood攻击提出的防护方法存在以下弊端:

(1)针对上述第一种防护方法,虽然识别出了非法客户端,但是,也中断了合法客户端和目标服务器之间的连接,影响了合法客户端大多数业务(比如:游戏、通话等业务)的正常进行,进而影响了用户体验。

(2)针对上述第二种防护方法,非法客户端很可能会突破TCP重传机制,若在固定时间范围内实现了ACK报文的重传,则中间防护装置就无法识别出该非法客户端,目标服务器依然会受到攻击。

(3)针对上述第三种防护方法,在接收到第二个ACK报文后,需要在会话表中查找与该第二个ACK报文携带的第二报文信息相匹配的推测的报文信 息,这样,由于接收到的ACK报文过多,中间防护装置在处理这些ACK报文时,不仅会占用大量的内存记录这些推测的报文信息,还会耗费大量的处理资源进行匹配,从而导致中间防护装置的性能下降,进而影响防护效果。



技术实现要素:

本发明实施例提供了一种ACK Flood攻击的防护方法及中间防护装置,用以在保证各个合法客户端与相应的目标服务器之间的连接不中断的同时,提高识别非法客户端的精确度,为目标服务器提供有效防护。

本发明实施例提供的具体技术方案如下:

一种ACK Flood攻击的防护方法,应用于中间防护装置,用于识别非法客户端,并对各个非法客户端发送的ACK报文进行防御,包括:

中间防护装置基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文;

中间防护装置分别基于各个待处理ACK报文,生成相应的探测报文;

中间防护装置丢弃各个待处理ACK报文,并分别将生成的各个探测报文返回至相应的客户端;

中间防护装置分别判断各个客户端是否基于接收到的探测报文返回相应的探测响应报文;若是,则判定返回探测响应报文的客户端是合法客户端,并将上述合法客户端重传的待处理ACK报文发送至相应的目标服务器;否则,判定未返回探测响应报文的客户端是非法客户端。

较佳的,中间防护装置基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文,包括:

中间防护装置丢弃接收到的各个客户端发送的ACK报文,并筛选出在预设的重传时间范围内重传ACK报文的所有客户端;

中间防护装置分别将筛选出的各个客户端重传的ACK报文作为符合预设条件的各个待处理ACK报文。

较佳的,中间防护装置分别基于各个待处理ACK报文,生成相应的探测 报文,包括:

中间防护装置分别修改各个待处理ACK报文携带的第一序列号和第一确认号;

中间防护装置分别将各个修改后的第一序列号作为相应的第二确认号,以及分别将各个修改后的第一确认号作为相应的第二序列号;

中间防护装置基于每对第二序列号和第二确认号,分别生成相应的探测报文。

较佳的,中间防护装置分别将生成的各个探测报文返回至相应的客户端,包括:

中间防护装置分别将各个待处理ACK报文携带的源网协IP地址作为目的IP地址,并基于各个目的IP地址,分别将生成的各个探测报文返回至相应的客户端。

较佳的,中间防护装置判定返回探测响应报文的客户端是合法客户端,包括:

中间防护装置确定返回的探测响应报文携带的实际序列号和实际确认号分别与预先确定的相应的理论序列号和理论确认号相匹配时,判定返回上述探测响应报文的客户端是合法客户端;

其中,一个探测响应报文携带的一对实际序列号和实际确认号是:发送上述一个探测响应报文的客户端在接收到探测报文后,确定当前连接状态满足预设的任意一种连接状态时,基于上述探测报文携带的第二序列号和第二确认号确定的。

一种中间防护装置,用于识别非法客户端,并对非法客户端发送的ACK报文进行防御,包括:

初步检测单元,用于基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文;

主动探测单元,用于分别基于各个待处理ACK报文,生成相应的探测报 文,并丢弃各个待处理ACK报文,以及分别将生成的各个探测报文返回至相应的客户端;

识别单元,用于分别判断各个客户端是否基于接收到的探测报文返回相应的探测响应报文;若是,则判定返回探测响应报文的客户端是合法客户端,并将上述合法客户端重传的待处理ACK报文发送至相应的目标服务器;否则,判定未返回探测响应报文的客户端是非法客户端。

较佳的,基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文时,上述初步检测单元具体用于:

丢弃接收到的各个客户端发送的ACK报文,并筛选出在预设的重传时间范围内重传ACK报文的所有客户端;

分别将筛选出的各个客户端重传的ACK报文作为符合预设条件的各个待处理ACK报文。

较佳的,分别基于各个待处理ACK报文,生成相应的探测报文时,上述主动探测单元具体用于:

分别修改各个待处理ACK报文携带的第一序列号和第一确认号;

分别将各个修改后的第一序列号作为相应的第二确认号,以及分别将各个修改后的第一确认号作为相应的第二序列号;

基于每对第二序列号和第二确认号,分别生成相应的探测报文。

较佳的,分别将生成的各个探测报文返回至相应的客户端时,上述主动探测单元具体用于:

分别将各个待处理ACK报文携带的源网协IP地址作为目的IP地址,并基于各个目的IP地址,分别将生成的各个探测报文返回至相应的客户端。

较佳的,判定返回探测响应报文的客户端是合法客户端时,上述识别单元具体用于:

确定返回的探测响应报文携带的实际序列号和实际确认号分别与预先确定的相应的理论序列号和理论确认号相匹配时,判定返回上述探测响应报文的 客户端是合法客户端,其中,一个探测响应报文携带的一对实际序列号和实际确认号是:发送上述一个探测响应报文的客户端在接收到探测报文后,确定当前连接状态满足预设的任意一种连接状态时,基于上述探测报文携带的第二序列号和第二确认号确定的。

本发明实施例的有益效果如下:

本发明实施例中,由于只有合法客户端会响应接收到的探测报文,而非法客户端不会响应探测报文,所以,中间防护装置就可以精确地识别出各个非法客户端,避免了由于无法识别突破重传机制的非法客户端,导致目标服务器依然受到攻击的问题。而且,中间防护装置只有在确定返回探测响应报文的客户端是合法客户端后,才会将该合法客户端重传的ACK报文转发至相应的目标服务器,有效地防御了各个非法客户端发送的ACK报文,为目标服务器提供了有效防护。除此之外,在防护过程中,没有中断各个合法客户端与相应的目标服务器之间的连接,保证了合法客户端各种业务的正常进行,提高了用户体验。

附图说明

图1为本发明实施例中ACK Flood攻击防护方法的概况示意图;

图2为本发明实施例中ACK Flood攻击防护方法的具体流程示意图;

图3为本发明实施例中中间防护装置的功能结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了在保证各个合法客户端与相应的目标服务器之间的连接不中断的同时,提高识别非法客户端的精确度,为目标服务器提供有效防护,本发明实施 例中,中间防护装置接收到各个客户端发送的ACK报文后,会利用TCP重传机制,针对发送ACK报文的各个客户端进行初步检测,检测出未在预设的重传时间范围内重传ACK报文的非法客户端后,针对在预设的重传时间范围内重传ACK报文的所有客户端(可能包括:突破重传机制重传ACK报文的非法客户端),采用主动探测方式,分别向各个客户端发送探测报文,由于只有合法客户端才会响应接收到的探测报文,所以,中间防护装置就可以判定未返回探测响应报文的客户端是非法客户端,进而实现对各个非法客户端的精确识别,为目标服务器提供有效防护。

下面通过具体实施例对本发明方案进行详细描述,当然,本发明并不限于以下实施例。

参阅图1所示,本发明实施例提供的ACK Flood攻击的防护方法,可以应用于中间防护装置,用于识别非法客户端,并对非法客户端发送的ACK报文进行防御,具体地,ACK Flood攻击的防护方法的流程如下:

步骤100:中间防护装置基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文。

在实际应用中,为了提高ACK Flood攻击的防护效果,中间防护装置在接收到各个客户端发送的ACK报文之后,可以先利用TCP重传机制,对发送ACK报文的各个客户端进行初步检测,以检测出未突破重传机制的非法客户端,从而实现对ACK Flood攻击的初步防御。具体地,中间防护装置利用TCP重传机制,对ACK Flood攻击进行初步防御时,可以采用但不限于以下方式:

步骤A:中间防护装置基于接收到的各个客户端发送的ACK报文,生成重传会话表后,直接丢弃各个ACK报文。

其中,上述重传会话表中可以记录有但不限于:各个ACK报文携带的四源组(即源IP地址、目的IP地址、源端口、目的端口)和TCP标志位,以及各个ACK报文的接收时间,等等。

步骤B:中间防护装置接收客户端重传的ACK报文,并判断重传的ACK 报文携带的四源组和TCP标志位是否与上述重传会话表中针对相应ACK报文记录的四源组和TCP标志位相匹配;若是,则执行步骤C;否则,执行步骤E。

步骤C:中间防护装置判断重传的ACK报文的接收时间与上述重传会话表中记录的相应ACK报文的接收时间之间的重传时间间隔,是否在预设的重传时间范围内,若是,则执行步骤D;否则,执行步骤E。

步骤D:中间防护装置保留该重传的ACK报文。

步骤E:中间防护装置判定该重传的ACK报文是非法客户端突破了重传机制后返回的,并丢弃该非法客户端重传的ACK报文,以及在上述重传会话表中删除该非法客户端发送的ACK报文。

值得说的是,中间防护装置还可以判定未在预设的重传时间范围内重传ACK报文的客户端是非法客户端,并在重传会话表中删除该非法客户端发送的ACK报文。

至此,完成了对发送ACK报文的各个客户端的初步检测,针对部分非法客户端发送的ACK报文进行了有效防御。

较佳的,为了节省中间防护装置的处理资源,中间防护装置会定期清除上述重传会话表记录的已经过初步检测的所有客户端发送的ACK报文,以释放中间防护装置的处理资源,保证中间防护装置的良好性能。

例如:下面以中间防护装置接收到的一个ACK报文为例进行说明,假设该一个ACK报文(下面称该一个ACK报文为ACK报文1)至少携带有:TCP标志位,源IP地址119.856.1.163,源端口1,目的IP地址120.537.1.162,以及目的端口2,等等。

步骤1:中间防护装置接收到ACK报文1后,提取出ACK报文1携带的四源组和TCP标志位等信息,并将提取出的ACK报文1携带的四源组和TCP标志位等信息,以及ACK报文1的接收时间均记录在重传会话表中,记录完成后,直接丢弃ACK报文1,具体地,记录在重传会话表中的ACK报文1的相关信息可以入表1所示:

表1

步骤2:中间防护设备判断是否接收到重传的ACK报文1,若是,则继续执行步骤4;否则,执行步骤3。

步骤3:中间防护设备判定发送ACK报文1的客户端是非法客户端,即判定源IP地址为119.856.1.163的客户端是非法客户端。

步骤4:中间防护设备判断重传的ACK报文1携带的四源组和TCP标志位是否与重传会话表中针对ACK报文1记录的四源组和TCP标志位相匹配;若是,则继续执行步骤5;否则,执行步骤7。

步骤5:中间防护装置判断重传的ACK报文1的接收时间与重传会话表中记录的ACK报文1的接收时间之间的重传时间间隔,是否在2秒内(即预设的重传时间范围内),若是,则继续执行步骤6;否则,执行步骤7。

步骤6:中间防护装置保留该重传的ACK报文1。

步骤7:中间防护装置判定该重传的ACK报文1是非法客户端突破重传机制后返回的,并丢弃该非法客户端重传的ACK报文1,以及在重传会话表中删除该非法客户端发送的ACK报文1的相关记录。

进一步地,中间防护装置利用重传机制,对发送ACK报文的各个客户端进行初步检测后,在除检测出的非法客户端之外的其它所有客户端中,可能还会存在非法客户端,所以,为了提高ACK Flood攻击的防护效果,中间防护装置会进一步针对除检测出的非法客户端之外的其它所有客户端分别进行主动探测,即分别将除在上述初步检测过程中检测出的非法客户端之外的其它所有客户端重传的ACK报文作为待处理ACK报文(即将在上述步骤D中保留的所有重传的ACK报文作为待处理ACK报文),并继续执行步骤101。

步骤101:中间防护装置分别基于各个待处理ACK报文,生成相应的探测报文。

较佳的,中间防护装置针对除在上述初步检测过程中检测出的非法客户端之外的其它所有客户端进行主动探测时,为了方便中间防护装置对客户端进行认证,还可以基于各个待处理ACK报文携带的第一序列号、第一确认号和数据长度,分别确定相应的理论序列号和理论确认号,其中,一个待处理ACK报文对应的理论序列号即为:该一个待处理ACK报文携带的第一序列号和数据长度之和;一个待处理ACK报文对应的理论确认号即为:该一个待处理ACK报文携带的第一确认号。比如:假设待处理ACK报文1携带的第一序列号是100,第一确认号是450,数据长度是200,则待处理ACK报文1对应的理论序列号是:100+200=300,理论确认号是450。

可选的,为了方便中间防护装置获取相应的理论序列号和理论确认号等信息,还可以基于各个待处理ACK报文携带的四源组,以及各个待处理ACK报文对应的理论序列号和理论确认号等,生成探测状态表,具体地,生成的探测状态表可以如表2所示:

表2

具体地,中间防护装置生成探测状态表后,分别基于各个待处理ACK报文,生成相应的探测报文时,可以采用但不限于以下方式:

首先,中间防护装置分别修改各个待处理ACK报文携带的第一序列号和第一确认号。

然后,中间防护装置分别将各个修改后的第一序列号作为相应的第二确认号,以及分别将各个修改后的第一确认号作为相应的第二序列号。

最后,中间防护装置基于每对第二序列号和第二确认号,分别生成相应的探测报文。

值得说的是,一个待处理ACK报文对应的探测报文至少携带有:源IP地址(即该一个待处理ACK报文携带的目的IP地址)、目的IP地址(即该一个待处理ACK报文携带的源IP地址)、源端口(即该一个待处理ACK报文携带的目的端口)、目的端口(即该一个待处理ACK报文携带的源端口)、第二序列号和第二确认号,等等。

例如:继续沿用上例,假设中间防护装置接收到重传的ACK报文1。

中间防护装置会将该重传的ACK报文1作为待处理ACK报文1,其中,该待处理ACK报文1至少携带有:第一序列号100,第一确认号450,数据长度200,源IP地址119.856.1.163,源端口1,目的IP地址120.537.1.162,以及目的端口2,等等。

中间防护装置根据待处理ACK报文1携带的第一序列号100、第一确认号450和数据长度200,确定待处理ACK报文1对应的理论序列号为:第一序列号100+数据长度200=300,理论确认号为:第一确认号450,并将待处理ACK报文1携带的四源组(即源IP地址119.856.1.163和源端口1,目的IP地址120.537.1.162和目的端口2),以及待处理ACK报文1对应的理论序列号300和理论确认号450,记录在探测状态表中,具体地,可以如表3所示:

表3

中间防护装置对待处理ACK报文1携带的第一序列号100和第一确认号 450进行修改(具体的修改幅度可以根据不同的应用场景进行灵活配置,比如:修改后的第一序列号为99,修改后的第一确认号为449)。

中间防护装置将修改后的第一序列号99作为第二确认号,将修改后的第一确认号449作为第二序列号,并基于第二确认号99和第二序列号449,生成探测报文1。

其中,探测报文1至少携带有:源IP地址120.537.1.162(即待处理ACK报文1携带的目的IP地址)、源端口2(即待处理ACK报文1携带的目的端口)、目的IP地址119.856.1.163(即待处理ACK报文1携带的源IP地址)、目的端口1(即待处理ACK报文1携带的源端口)、以及第二确认号99和第二序列号449。

步骤102:中间防护装置丢弃各个待处理ACK报文,并分别将生成的各个探测报文返回至相应的客户端。

较佳的,中间防护装置基于各个待处理ACK报文,生成相应的探测报文后,会丢弃各个待处理ACK报文,并分别将各个待处理ACK报文携带的源IP地址和源端口分别作为目的IP地址和目的端口,以及基于各个目的IP地址和目的端口,分别将生成的各个探测报文返回至相应的客户端。

例如:继续沿用上例,中间防护装置丢弃待处理ACK报文1,并将待处理ACK报文1携带的源IP地址119.856.1.163和源端口分别作为目的IP地址和目的端口,以及基于目的IP地址119.856.1.163和目的端口1,将探测报文1发送至相应的客户端。

值得说的是,若合法客户端接收到中间防护装置发送的探测报文,则该合法客户端会认为自身发送的待处理ACK报文出现错误,并在检测自身的当前连接状态后,确定自身的当前连接状态满足预设的任意一种连接状态时,返回一个携带有实际序列号和实际确认号的探测响应报文,以对接收到的探测报文进行校正,以及在返回探测响应报文后,重传待处理ACK报文。其中,预设的连接状态可以是但不限于:建立连接(ESTABLISHED),等待远程TCP的 连接中断请求(FIN-WAIT-1),从远程TCP等待连接中断请求(FIN-WAIT-2),等待本地用户的连接中断请求(CLOSE-WAIT),等待远程TCP确认连接中断(CLOSING),等等。

而针对于非法客户端,由于非法客户端向中间防护装置发送的待处理ACK报文携带的源IP地址和源端口是伪造源IP地址和伪造源端口,即非法客户端发送的待处理ACK报文携带的源IP地址和源端口并不存在,或者,非法客户端发送的待处理ACK报文携带的源IP地址和源端口并不是该非法客户端自身的IP地址和端口,所以,若待处理ACK报文携带的源IP地址和源端口并不存在,则中间防护装置根据不存在的源IP地址和源端口,向相应的客户端发送探测报文后,不会接收到相应的探测响应报文,若待处理ACK报文携带的源IP地址和源端口并不是发送该待处理ACK报文的客户端自身的IP地址和端口,则中间防护装置根据该待处理ACK报文携带的源IP地址和源端口,向相应的客户端发送探测报文后,该源IP地址和源端口实际对应的客户端接收到该探测报文时,会检测自身的当前连接状态,确定连接不存在后,也不会针对该探测报文作出任何响应,也就是说,中间防护装置同样不会接收到相应的探测响应报文。进而,中间防护装置就可以判定未返回探测响应报文的客户端是非法客户端。

具体地,中间防护装置将生成的各个探测报文,分别返回至相应的客户端后,可以采用以下方式确定出非法客户端:

步骤103:中间防护装置分别判断各个客户端是否基于接收到的探测报文返回相应的探测响应报文,若是,则执行步骤104;否则,执行步骤105。

步骤104:中间防护装置判定返回探测响应报文的客户端是合法客户端,并将上述合法客户端重传的待处理ACK报文发送至相应的目标服务器。

较佳的,中间防护装置判定返回探测响应报文的一个客户端是合法客户端时,可以采用但不限于以下方式:

中间防护装置接收到该一个客户端返回的探测响应报文后,基于探测状态 表记录的四源组,与理论序列号和理论确认号之间的映射关系,按照该探测响应报文携带的四源组,在探测状态表中,查找相应的理论序列号和理论确认号,并在确定该探测响应报文携带的实际序列号和实际确认号分别与查找到的理论序列号和理论确认号相匹配时,判定返回该探测响应报文的客户端是合法客户端,并将该合法客户端重传的待处理ACK报文发送至相应的目标服务器,以及将该合法客户端加入白名单。

步骤105:中间防护装置判定未返回探测响应报文的客户端是非法客户端。

至此,完成了对除在上述初步检测过程中检测出的非法客户端之外的其它所有客户端的主动探测,实现了对各个非法客户端发送的攻击报文的有效防御,而且,在对发送ACK报文的各个客户端进行初步检测的过程中,以及在对除在上述初步检测过程中检测出的非法客户端之外的其它所有客户端进行主动探测的过程中,没有中断各个合法客户端与相应的目标服务器之间的连接,在保证合法客户端的各种业务正常进行的同时,也实现了对ACK Flood攻击的有效防御。

进一步地,为了中间防护装置可以快速准确地确定各个待处理ACK报文的当前探测状态,中间防护装置在完成对各个待处理ACK报文的主动探测后,会将各个待处理ACK报文的探测状态标识分别记录在探测状态表中,其中,一个待处理ACK报文的探测状态标识表征该一个待处理ACK报文是处于已探测状态,还是处于未探测状态。

例如:继续沿用上例,若待处理ACK报文1携带的源IP地址119.856.1.163和源端口1不存在,则中间防护装置就不会接收到相应的探测响应报文,即可判定待处理ACK报文1是攻击报文,并丢弃该攻击报文。

若待处理ACK报文1携带的源IP地址119.856.1.163和源端口1存在但不是发送待处理ACK报文1的客户端对应的IP地址和端口,则源IP地址119.856.1.163和源端口1实际对应的客户端接收到探测报文1后,会主动检测自身的当前连接状态,确定连接不存在后,针对探测报文1不会作出任何响应, 所以,中间防护装置也不会接收到相应的探测响应报文,即可判定待处理ACK报文1是攻击报文,并丢弃该攻击报文。

若待处理ACK报文1携带的源IP地址119.856.1.163和源端口1就是发送待处理ACK报文1的客户端对应的IP地址和端口,即若待处理ACK报文1携带的源IP地址119.856.1.163和源端口1就是客户端1的IP地址和端口,则客户端1接收到探测报文1后,会认为自身发送的待处理ACK报文1出现错误,并在检测自身的当前连接状态后,确定自身的当前连接状态满足预设的任意一种连接状态时,即确定连接存在时,会返回一个携带有实际序列号300和实际确认号450的探测响应报文1,以对探测报文1进行校正,并在发送探测响应报文1后,重传待处理ACK报文1。其中,探测响应报文1至少携带有:实际序列号300和实际确认号450,源IP地址119.856.1.163和源端口1,目的IP地址120.537.1.162和目的端口2。

具体地,中间防护装置基于目的IP地址119.856.1.163和目的端口1,将探测报文1发送至客户端1后,会判断客户端1是否基于探测报文1返回相应的探测响应报文。

若是,则中间防护装置接收到探测报文1对应的探测响应报文1后,会基于探测响应报文1携带的源IP地址119.856.1.163和源端口1,以及目的IP地址120.537.1.162和目的端口2,在探测状态表中,查找相应的理论序列号300和理论确认号450,并在确定探测响应报文1携带的实际序列号300和实际确认号450分别与查找到的理论序列号300和理论确认号450相匹配时,判定返回探测响应报文1的客户端1是合法客户端,并将客户端1重传的待处理ACK报文1发送至相应的目标服务器,以及在探测状态表中,将待处理ACK报文1的探测状态标识标记为:已探测,并将客户端1加入白名单。

否则,中间防护装置判定未返回探测响应报文的客户端1是非法客户端,并在探测状态表中,将待处理ACK报文1的探测状态标识标记为:已探测。

进一步地,由于合法客户端接收到探测报文并检测到自身的当前连接状态 满足预设的任意一种连接状态时,会立即响应该探测报文,即中间防护装置会在发送探测报文后的0-2S的时间范围内立即接收到探测响应报文,从而就可以判定未在0-2S的时间范围内返回探测响应报文的客户端为非法客户端,进而,就可以过滤掉这些非法客户端发送的攻击报文,所以,为了减轻中间防护装置的负荷,提高防护速率,中间防护装置还会在探测状态表中,定期(可以是但不限于是:2S)清空对应的探测状态标识为已探测的所有待处理ACK报文,以释放中间防护装置的处理资源,保证中间防护装置的良好性能。这样,不仅可以保证合法的待处理ACK报文不会因为清空探测状态表而出现异常,还可以释放非法客户端占用的处理资源,有效地避免了由于记录的待处理ACK报文过多,导致中间防护装置性能下降的问题。

下面仅以中间防护装置针对接收到的一个ACK报文进行检测防护为例对上述实施例作进一步详细说明,参阅图2所示,本发明实施例中,应用于中间防护装置的ACK Flood攻击的防护方法的具体流程如下:

步骤200:中间防护装置接收到ACK报文1后,将ACK报文1携带的四源组(即源IP地址119.856.1.163和源端口1,目的IP地址120.537.1.162和目的端口2)和TCP标记位等信息记录在重传会话表中,并丢弃ACK报文1。

步骤201:中间防护装置判断是否接收到重传的ACK报文1,若是,则执行步骤203;否则,执行步骤202。

步骤202:中间防护装置判定发送ACK报文1的客户端是非法客户端,即判定源IP地址为119.856.1.163的客户端是非法客户端,并在重传会话表中,删除ACK报文1的相关信息。

步骤203:中间防护装置判断重传的ACK报文1携带的四源组和TCP标志位是否分别与重传会话表记录的四源组(即源IP地址119.856.1.163和源端口1,目的IP地址120.537.1.162和目的端口2)和TCP标志位相匹配,若是,则执行步骤204;否则,执行步骤206。

步骤204:中间防护装置判断重传ACK报文1的接收时间与ACK报文1 的接收时间之间的重传时间间隔是否在2S内,若是,则执行步骤205;否则,执行步骤206。

步骤205:中间防护装置保存该重传的ACK报文1,并继续执行步骤207。

步骤206:中间防护装置判定重传的ACK报文1是非法客户端突破了重传机制后发送的,并丢弃重传的ACK报文1,以及在重传会话表中,删除ACK报文1的相关信息。

步骤207:中间防护装置将该重传的ACK报文1作为待处理ACK报文1,并基于待处理ACK报文1携带的第一序列号100、第一确认号450和数据长度200,确定待处理ACK报文1对应的理论序列号为:100+200=300,理论确认号为450。

步骤208:中间防护装置将待处理ACK报文1携带的四源组(即源IP地址119.856.1.163和源端口1、目的IP地址120.537.1.162和目的端口2),以及待处理ACK报文1对应的理论序列号300和理论确认号450,记录在探测状态表中。

步骤209:中间防护装置对待处理ACK报文1携带的第一序列号100和第一确认号450进行修改(比如:修改后的第一序列号为99,修改后的第一确认号为449),并将修改后的第一序列号99作为第二确认号,将修改后的第一确认号449作为第二序列号,以及基于第二确认号99和第二序列号449,生成探测报文1。

其中,探测报文1至少携带有:源IP地址120.537.1.162(即待处理ACK报文1携带的目的IP地址)、源端口2(即待处理ACK报文1携带的目的端口)、目的IP地址119.856.1.163(即待处理ACK报文1携带的源IP地址)、目的端口1(即待处理ACK报文1携带的源端口)、以及第二确认号99和第二序列号449。

步骤210:中间防护装置丢弃待处理ACK报文1,并将待处理ACK报文1携带的源IP地址119.856.1.163和源端口分别作为目的IP地址和目的端口, 以及基于目的IP地址119.856.1.163和目的端口1,将探测报文1发送至相应的客户端(假设IP地址119.856.1.163存在,且对应的客户端是客户端1)。

值得说的是,客户端1接收探测报文1后,会认为自身发送的待处理ACK报文1出现错误,并在检测自身的当前连接状态后,确定自身的当前连接状态满足预设的任意一种连接状态时,即在确定连接存在时,会返回一个至少携带有实际序列号300和实际确认号450的探测响应报文1,以对探测报文1进行校正,以及在返回探测响应报文1后,重传待处理ACK报文1,其中,探测响应报文1还携带有:源IP地址119.856.1.163和源端口1,目的IP地址120.537.1.162和目的端口2,等等。

其中,若客户端1检测到连接不存在,则针对接收到的探测报文1,不会作出任何响应,即中间防护装置不会接收到相应的探测响应报文;若IP地址119.856.1.163不存在,则中间防护装置也不会接收到相应的探测响应报文。

步骤211:中间防护装置判断客户端1是否基于探测报文1返回相应的探测响应报文,若是,则执行步骤213;否则,执行步骤212。

步骤212:中间防护装置判定未返回探测响应报文的客户端1是非法客户端,即判定源IP地址为119.856.1.163的客户端1是非法客户端,并在探测状态表中,将待处理ACK报文1的探测状态标识标记为:已探测。

步骤213:中间防护装置基于探测响应报文1携带的四源组(即源IP地址119.856.1.163和源端口1,以及目的IP地址120.537.1.162和目的端口2),在探测状态表中查询相应的理论序列号300和理论确认号450。

步骤214:中间防护装置确定探测响应报文1携带的实际序列号300和实际确认号450分别与查找到的理论序列号300和理论确认号450相匹配时,判定返回探测响应报文1的客户端1是合法客户端,并将客户端1重传的待处理ACK报文1发送至相应的目标服务器。

步骤215:中间防护装置基于客户端1重传的待处理ACK报文1携带的目的IP地址120.537.1.162和目的端口2,将客户端1重传的待处理ACK报文 1发送至相应的目标服务器,并在探测状态表中,将待处理ACK报文1的探测状态标识标记为:已探测,以及将客户端1加入白名单。

步骤216:中间防护装置确定到达2S时,在探测状态表中,清空对应的探测状态标识为已探测的所有待处理ACK报文,以释放处理资源。

基于上述实施例,参阅图3所示,本发明实施例中,用于对非法客户端发送的ACK报文进行防御的中间防护装置,至少包括:

初步检测单元300,用于基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文;

主动探测单元301,用于分别基于各个待处理ACK报文,生成相应的探测报文,并丢弃各个待处理ACK报文,以及分别将生成的各个探测报文返回至相应的客户端;

识别单元302,用于分别判断各个客户端是否基于接收到的探测报文返回相应的探测响应报文;若是,则判定返回探测响应报文的客户端是合法客户端,并将上述合法客户端重传的待处理ACK报文发送至相应的目标服务器;否则,判定未返回探测响应报文的客户端是非法客户端。

较佳的,基于接收到的各个客户端发送的ACK报文,筛选出符合预设条件的各个待处理ACK报文时,上述初步检测单元300具体用于:

丢弃接收到的各个客户端发送的ACK报文,并筛选出在预设的重传时间范围内重传ACK报文的所有客户端;

分别将筛选出的各个客户端重传的ACK报文作为符合预设条件的各个待处理ACK报文。

较佳的,分别基于各个待处理ACK报文,生成相应的探测报文时,上述主动探测单元301具体用于:

分别修改各个待处理ACK报文携带的第一序列号和第一确认号;

分别将各个修改后的第一序列号作为相应的第二确认号,以及分别将各个修改后的第一确认号作为相应的第二序列号;

基于每对第二序列号和第二确认号,分别生成相应的探测报文。

较佳的,分别将生成的各个探测报文返回至相应的客户端时,上述主动探测单元301具体用于:

分别将各个待处理ACK报文携带的源网协IP地址作为目的IP地址,并基于各个目的IP地址,分别将生成的各个探测报文返回至相应的客户端。

较佳的,判定返回探测响应报文的客户端是合法客户端时,上述识别单元302具体用于:

确定返回的探测响应报文携带的实际序列号和实际确认号分别与预先确定的相应的理论序列号和理论确认号相匹配时,判定返回上述探测响应报文的客户端是合法客户端,其中,一个探测响应报文携带的一对实际序列号和实际确认号是:发送上述一个探测响应报文的客户端在接收到探测报文后,确定当前连接状态满足预设的任意一种连接状态时,基于上述探测报文携带的第二序列号和第二确认号确定的。

综上所述,本发明实施例中,中间防护装置对接收到的各个客户端发送的ACK报文进行筛选,获得各个待处理ACK报文后,分别基于各个待处理ACK报文,生成相应的探测报文时,丢弃各个待处理ACK报文,并分别将各个探测报文返回至相应的客户端,以及判定返回相应的探测响应报文的客户端是合法客户端,并将该合法客户端重传的ACK报文转发至目标服务器;判定未返回探测响应报文的客户端是非法客户端。这样,由于只有合法客户端会响应接收到的探测报文,而非法客户端不会响应探测报文,所以,中间防护装置就可以精确地识别出各个非法客户端,避免了由于无法识别突破重传机制的非法客户端,导致目标服务器依然受到攻击的问题。而且,中间防护装置只有在确定返回探测响应报文的客户端是合法客户端后,才会将该合法客户端重传的ACK报文转发至相应的目标服务器,有效地防御了各个非法客户端发送的ACK报文,为目标服务器提供了有效防护。除此之外,在防护过程中,没有中断各个合法客户端与相应的目标服务器之间的连接,保证了合法客户端各种业务的正 常进行,提高了用户体验。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属 于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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