防攻击的SYN报文处理方法、装置、防火墙及存储介质与流程

文档序号:15466158发布日期:2018-09-18 19:22阅读:466来源:国知局

本公开涉及计算机技术领域,具体地,涉及一种防攻击的SYN报文处理方法、装置、防火墙及存储介质。



背景技术:

SYN Flood(SYN洪水攻击)是最广为人知的一种DoS(Denial of Service,拒绝服务攻击)和DDoS(Distributed Denial of Serivce,分布式拒绝服务攻击)的攻击方式之一。它的原理是利用TCP(传输控制协议)的设计缺陷,伪造假的IP或者IP地址范围发送海量的TCP连接的SYN(Synchronous,TCP/IP建立连接时使用的握手信号)三次握手的首包(SYN报文),使得被攻击方需要消耗内存保持连接的状态为半连接直至超时,从而导致正常的其他服务无法处理,达到攻击的目的。

目前,防御SYN Flood攻击的方法主要有以下方式:第一种,无效连接的监视释放,该方法需要监测处于未完成状态的连接,当达到一定阈值后拆除这些连接,从而释放资源。然而这种方式对于所有的连接一视同仁,由于SYN Flood攻击造成的半连接的数量很大,正常连接请求可能被淹没在攻击当中被释放掉。第二种,延缓TCB(Thread Control Block,线程控制块)分配方法,由于消耗服务器资源主要是因为当SYN数据报文一到达,服务器便立即分配TCB,从而占用了资源,由于SYN Flood很难建立起正常连接,因此,当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。然而这种方式只是相对减少了服务器的负担,但是依然可能导致防火墙自身资源耗尽。

可见,目前尚无较好的防SYN Flood攻击的方法。



技术实现要素:

本公开的目的是提供一种设备防攻击的SYN报文处理方法、装置、防火墙及存储介质,提升了防火墙防御SYN Flood攻击的性能。

根据本发明实施例的第一方面,提供一种防攻击的SYN报文处理方法,应用于防火墙,包括:

接收SYN报文;

在确定所述防火墙受到攻击时,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式;

其中,所述白名单用于存储三次握手成功的源IP地址;所述其他名单包括用于存储攻击IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单中的至少一者,所述连接信息包括源IP地址、目的IP地址、及端口号。

可选的,所述防火墙包括指定处理器和其他处理器,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式,包括:

在所述指定处理器接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,验证所述SYN报文的IP地址是否在所述黑名单中;

若所述指定处理器确定该SYN报文的IP地址在所述黑名单中,丢弃该SYN报文;或,若所述指定处理器确定该SYN报文的IP地址不在所述黑名单中,根据所述红名单确定对该SYN报文的处理方式;

在所述其他处理器接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,根据所述红名单确定对该SYN报文的处理方式。

可选的,根据所述红名单确定对该SYN报文的处理方式,包括:

若该SYN报文的源IP地址不在接收到该SYN报文的当前处理器的红名单中,将该源IP地址添加到所述当前处理器的红名单中,丢弃该SYN报文;

若该SYN报文为该源IP地址发送的第2至N个SYN报文,则回复错误的SYN确认报文;其中,在回复错误的SYN确认报文之后,如果接收到该源IP地址发送的连接释放报文,则将该源IP地址从所述当前处理器的红名单中剪切到所述白名单中;

若该SYN报文为该源IP地址发送的第N+1个SYN报文,则丢弃该报文,将该源IP地址从所述当前处理器的红名单中剪切到所述黑名单中。

可选的,所述黑名单包括源IP地址黑名单和目的IP地址黑名单,所述方法还包括:

将处于未完成状态的连接的个数超过预设阈值的源IP地址添加到所述源IP地址黑名单中,并进行硬件配置,以使得添加到所述源IP地址黑名单中的源IP地址发送的SYN报文均由所述指定处理器接收;

将处于未完成状态的连接的个数超过预设阈值的目的IP地址,及对应的源IP地址添加到所述目的IP地址黑名单中,并进行硬件配置,以使得请求与所述目的IP地址黑名单中的目的IP地址建立连接的SYN报文均由所述指定处理器接收;

验证所述SYN报文的IP地址是否在所述黑名单中,包括:

所述指定处理器验证该SYN报文的源IP地址是否在所述源IP地址黑名单中,以及验证该SYN报文的目的IP地址及源IP地址是否在所述目的IP地址黑名单中。

可选的,所述方法还包括:

将所述白名单中,超时未完成连接的源IP地址的状态置为待确定;

根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式,包括:

若该SYN报文的源IP地址在所述白名单中的状态为待确定,且该SYN报文为该源IP地址被置为待确定后发送的第一个SYN报文,则丢弃该SYN报文;

若该SYN报文的源IP地址在所述白名单中的状态为待确定,且该SYN报文为不是该源IP地址被置为待确定后发送的第一个SYN报文,则回复正确的SYN确认报文;

若超时时间内接收到该源IP地址发送的确认报文,则回复连接释放报文,将所述白名单中的该源IP地址的状态置为正常,等待该源IP地址重新发送SYN报文。

可选的,所述方法还包括:

在超时时间内接收到该源IP地址发送的确认报文并回复连接释放报文后,针对该源IP地址的异常次数计数加一;

在该源IP地址的异常次数达到次数阈值时,将回复了连接释放报文后接收到的SYN报文的连接信息添加到所述黄名单中,并将所述白名单中的该源IP地址标记为黄名单状态;

根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式,包括:

若接收到的SYN报文的源IP地址在所述白名单中,且携带有黄名单状态的标记,则根据接收到的SYN报文的连接信息,查询是否在所述黄名单中;

若在所述黄名单中,则回复正确的SYN确认报文,其中,若超时时间内接收到确认报文,则回复连接释放报文,等待该源IP地址重新发送SYN报文,以建立连接;或,若超时时间内未接收到确认报文,且回复了预设次数的SYN确认报文后均未收到确认报文,则将该连接信息标记为攻击。

根据本发明实施例的第二方面,提供一种防攻击的SYN报文处理装置,应用于防火墙,包括:

报文接收模块,用于接收SYN报文;

处理模块,用于在确定所述防火墙受到攻击时,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式;

其中,所述白名单用于存储三次握手成功的源IP地址;所述其他名单包括用于存储攻击IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单中的至少一者,所述连接信息包括源IP地址、目的IP地址、及端口号。

根据本发明实施例的第三方面,提供一种防火墙,包括:

非临时性计算机可读存储介质;

多个处理器,用于接收SYN报文;及,在确定所述防火墙受到攻击时,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式;

其中,所述白名单用于存储三次握手成功的源IP地址;所述其他名单包括用于存储攻击IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单中的至少一者,所述连接信息包括源IP地址、目的IP地址、及端口号。

可选的,所述多个处理器包括指定处理器和其他处理器,所述指定处理器用于:

在接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,验证所述SYN报文的IP地址是否在所述黑名单中;

若确定该SYN报文的IP地址在所述黑名单中,丢弃该SYN报文;或,若确定该SYN报文的IP地址不在所述黑名单中,根据接收到该SYN报文的当前处理器的红名单确定对该SYN报文的处理方式;

所述其他处理器用于:

在接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,根据接收到该SYN报文的当前处理器的红名单确定对该SYN报文的处理方式。

根据本发明实施例的第四方面,提供一种计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行第一方面中任一项所述的方法。

本公开实施例中,可以构建多个名单:用于存储三次握手成功的源IP地址的白名单、用于存储攻击IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单。作为终端与服务器之间的中转设备,防火墙在接收到SYN报文时,如果确定防火墙正受到攻击,可以根据SYN报文的源IP地址及构建的白名单和其他名单,来确定如何处理SYN报文。通过这样的方式,可以利用多种功能的多个名单来综合、全面地判定出接收到的SYN报文是否为攻击报文,有利于较好地防御SYN Flood攻击,提升了防火墙防御SYN Flood攻击的性能。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据一示例性实施例示出的一种防攻击的SYN报文处理方法的流程图;

图2是根据一示例性实施例示出的指定处理器进行的SYN报文处理方法的流程图;

图3是根据一示例性实施例示出的非指定处理器进行的SYN报文处理方法的流程图;

图4是根据一示例性实施例示出的一种防火墙的框图;

图5是根据一示例性实施例示出的一种防攻击的SYN报文处理装置的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

首先将对本公开的实施背景进行介绍。防火墙是设置在终端与服务器之间的中转设备,可以是集成在服务器端的防火墙装置,也可以是独立于服务器与终端的防火墙设备。终端与服务器之间要建立连接,需要由防火墙验证可靠性后,再建立连接。以建立TCP(Transmission Control Protocol,传输控制协议)连接为例,终端要与服务器建立连接,需要先与防火墙进行三次握手,三次握手成功后,才能通过防火墙与服务器建立连接。正常情况下,终端与防火墙进行三次握手的过程如下:终端向防火墙发送SYN包,防火墙基于接收到的SYN报文回复SYN确认包(即SYN+ACK包),终端接收到SYN+ACK包后,再次发送确认包(即ACK包),三次握手完成。

对于防火墙而言,每次进行三次握手的会话时,会建立会话控制表(即session表),并存储session表,使得后续的数据包利用建立的session表进行数据的传递。防火墙还会给每个session表配置过期时间,过期时间到了以后,会删除session表。

基于以上实施背景,图1是根据一示例性实施例示出的一种防攻击的SYN报文处理方法的流程图,如图1所示,该防攻击的SYN报文处理方法可以应用于防火墙中,包括以下步骤。

步骤S11:接收SYN报文。

步骤S12:根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式。

本公开实施例中,为了能够验证接收到的用来建立TCP连接的SYN报文是否为可能的攻击报文,可以构建多个名单:用于存储三次握手成功的源IP地址的白名单、用于存储攻击IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单。

在步骤S11中,防火墙接收到的SYN报文可以是终端发送的用来请求与服务器建立连接的SYN报文,或者也可以是服务器发送的用来请求与终端建立连接的SYN报文,本公开实施例对此不作限定。SYN报文携带有连接信息,连接信息可以包括源IP地址、目的IP地址、端口号等信息。

防火墙在接收到SYN报文后,如果防火墙当前处于遭受到攻击的状态,便根据接收到的SYN报文的源IP地址,综合白名单及其他名单来确定要如何处理该SYN报文。本公开实施例可以利用多种功能的多个名单来综合、全面地判定出接收到的SYN报文是否为攻击报文,从而确定如何较好地处理SYN报文,有利于对SYN Flood攻击进行防御,提升了防火墙防御SYN Flood攻击的性能。

对于如何确定防火墙是否遭受到攻击,本公开实施例不作限定,以下对可能的方式进行说明。

在一个实施例中,可以设定告警模式,那么可以每隔预设时长,检测防火墙当前处于未完成状态的连接的个数是否达到预设数量阈值,在检测到个数达到预设数量阈值时,确定进入告警模式,此时便确认防火墙遭受到攻击。当然,在进入告警模式后,若检测到个数未达到预设数量阈值,可以退出告警模式。

未完成状态的连接也就是三次握手未完成的连接,比如转发了SYN报文后等待接收SYN+ACK报文的Syn状态、针对接收到的SYN报文回复了SYN+ACK报文后等待接收ACK报文的SYN+RECV状态。当这种未完成状态的连接的个数过多时,可以认为是不正常的(比如受到了SYN Flood攻击),因此可以设定阈值来周期性地判断防火墙是否受到了攻击,在确定受到攻击时,可以进入告警模式。

例如,设定预设数量阈值为1万,每隔1分钟(即预设时长)判定防火墙当前处于未完成状态的连接数量是否达到1万,如果达到,则说明防火墙可能受到了攻击,进入告警模式,之后每接收到一个SYN,便通过构建的多个名单来确定要如何处理接收到的报文。在进入告警模式后,如果检测到防火墙处于未完成状态的连接数量不到1万,可以退出告警模式。

或者例如,还可以通过比例阈值的方式来判断是否要进入告警模式。比如,每个1分钟判断防火墙当前处于未完成状态的连接数量与所有的会话连接的比值是否达到了比例阈值,达到则进入告警模式,否则不进入告警模式或退出告警模式。

本公开实施例中,在没有进入告警模式时,可以认为防火墙当前并没有受到攻击,那么可以不对接收到的SYN连接进行多名单的判断,而是正常进行三次握手,在进入告警模式后再通过多名单的判断来防御攻击。通过这样的方式,既能提升正常情况下防火墙的数据处理速度,也能在受到攻击的情况下进行较好的防御。

当然,无论是否在告警模式下,防火墙均可以将三次握手成功的源IP地址放入白名单中,将确定为攻击的IP地址放入黑名单中,以便在告警模式下能够较为准确地根据各名单进行攻击防御,具体处理方式如下:

1、白名单的构建:每次基于SYN报文新建session表后,如果三次握手成功,便查询白名单是否有该SYN报文的源IP地址,如果没有便将该SYN报文的源IP地址添加到白名单中,如果有则不作处理。本公开实施例中的白名单为全局表格,在防火墙具有多个处理器的情况下,每个处理器均可以无锁地查询及修改白名单,处理速度较快。

2、黑名单的构建:由于SYN攻击一般有两种情况:主机无目的地主动攻击多台服务器,或者多台主机有目的攻击同一目标服务器。因此黑名单可以包括确认为攻击的源IP地址黑名单以及确认为被攻击的目的IP地址黑名单。

针对同一源IP地址,如果处于未完成状态的连接的个数达到预设阈值,可以认为是同一源IP地址在进行SYN扫描,那么可以将这一源IP地址添加到源IP地址黑名单中。为了更为准确地确定攻击源,这里的预设阈值可以设定为较高的数值,例如1万,等等。在防火墙具有多个处理器的情况下,每个处理器可以对处于未完成状态且超时的连接的源IP地址按照次数进行排序,从而找出次数超过预设阈值的源IP地址,确定为攻击源IP地址,添加到源IP地址黑名单中。

针对同一目的IP地址,如果处于未完成状态的连接的个数达到预设阈值,可以认为是同一目标服务器受到大量主机的攻击,那么可以将这一目的IP地址及对应的源IP地址添加到目的IP地址黑名单中(应当理解,在目的IP地址黑名单中,目的IP地址与源IP地址是成对存放的,那么如果某个SYN报文的目的IP地址与源IP地址与黑名单中同一对目的IP地址与源IP地址相匹配,便可确认为攻击)。为了更为准确地确定攻击源,这里的预设阈值可以设定为较高的数值,例如1万,等等。在防火墙具有多个处理器的情况下,每个处理器可以对处于未完成状态且超时的连接的目的IP地址按照次数进行排序,从而找出次数超过预设阈值的目的IP地址,添加到目的IP地址黑名单中。

由于黑名单中存储的都是攻击IP地址,为了达到将攻击分流的目的,在本公开实施例中,可以通过设定的指定处理器来查询黑名单,即,防火墙可以包括指定处理器和其他处理器,那么在指定处理器接收到该SYN报文,并验证该SYN报文的源IP地址不在白名单时,会验证SYN报文的IP地址是否在黑名单中,若指定处理器确定该SYN报文的IP地址在黑名单中,便丢弃该SYN报文;若指定处理器确定该SYN报文的IP地址不在黑名单中,再进一步根据红名单确定对该SYN报文的处理方式。在其他处理器接收到该SYN报文,并验证该SYN报文的源IP地址不在白名单时,根据红名单确定对该SYN报文的处理方式。

也即是说,只有指定处理器会验证黑名单,其他处理器无需验证黑名单,从而达到将大部分攻击分流到指定处理器的目的,避免攻击流量对正常流量的影响。以下将对指定处理器验证黑名单的方式进行说明。

在一个实施例中,可以将处于未完成状态的连接的个数超过预设阈值的源IP地址添加到源IP地址黑名单中,并进行硬件配置,以使得添加到源IP地址黑名单中的源IP地址发送的SYN报文均由防火墙的指定处理器接收;以及将处于未完成状态的连接的个数超过预设阈值的目的IP地址,及对应的源IP地址添加到目的IP地址黑名单中,并进行硬件配置,以使得请求与目的IP地址黑名单中的目的IP地址建立连接的SYN报文均由指定处理器接收。那么验证SYN报文的IP地址是否在黑名单中,可以是指定处理器验证该SYN报文的源IP地址是否在源IP地址黑名单中,以及验证该SYN报文的目的IP地址及源IP地址是否在目的IP地址黑名单中。

防火墙可以是多核防火墙,也就是具有多个处理器,那么任一处理器在将源IP地址添加到源IP地址黑名单时,可以配置硬件的过滤器,使得添加到源IP地址黑名单的源IP地址发送的报文均会由多个处理器中的指定处理器接收,那么在进行攻击防御时,只有这个指定处理器会接收到源IP地址黑名单中的源IP地址发送的报文,那么自然也只有这个指定处理器需要查询源IP地址黑名单。指定处理器在接收到SYN报文时,可以先判断该SYN报文的源IP地址是否在白名单中,如果不在,则继续判断是否在源IP地址黑名单中,如果在的话则直接丢弃该SYN报文,不在的话再进一步判断红名单。

同样的,目的IP地址黑名单存储有确认为被攻击对象的目的IP地址及对应的源IP地址,在将IP地址添加到目的IP地址黑名单时,同样可以配置硬件的过滤器,使得针对添加到目的IP地址黑名单的目的IP地址的报文均会由防火墙多个处理器中的指定处理器接收,那么在进行攻击防御时,只有这个指定处理器会接收到针对目的IP地址黑名单中的目的IP地址发送的报文,那么自然也只有这个指定处理器需要查询目的IP地址黑名单。指定处理器在接收到SYN报文时,可以先判断该SYN报文的源IP地址是否在白名单中,如果不在,则继续判断目的IP地址与源IP地址是否成对出现在目的IP地址黑名单中,如果在的话则直接丢弃该SYN报文,不在的话再进一步判断红名单。

对于其他处理器而言,由于黑名单是进行了硬件配置的,其他处理器并不会接收到黑名单中IP地址的SYN报文,因此便无需查询黑名单,在确定接收到的SYN报文的源IP地址不在白名单后,直接进行进一步的红名单判定即可。

通过这样的方式,可以使得在遭受到攻击时,将大量的攻击SYN报文分流到指定处理器进行处理,不影响其他处理器的正常运行,提升了防火墙防御攻击的能力。

以下将对红名单的验证方式进行说明。

在一个实施例中,根据红名单确定对该SYN报文的处理方式,包括:若该源IP地址不在接收到该SYN报文的当前处理器的红名单中,将该源IP地址添加到当前处理器的红名单中,丢弃该SYN报文,若该SYN报文为该源IP地址发送的第2至N个SYN报文,则回复错误的SYN确认报文;其中,在回复错误的SYN确认报文之后,如果接收到该源IP地址发送的连接释放报文,则将该源IP地址从当前处理器的红名单中剪切到白名单中,N为大于2的预设数值,如果没接收到该源IP地址发送的连接释放报文,则不作处理;若该SYN报文为该源IP地址发送的第N+1个SYN报文,则丢弃该报文,将该源IP地址从当前处理器的红名单中剪切到黑名单中;若该源IP地址在当前处理器的红名单中,且该源IP地址的状态为攻击,则丢弃该报文。

红名单为每核资源,即每个处理器都有各自的红名单,用来验证当前处理器接收到SYN报文是否为攻击,具体的基于红名单处理SYN报文的方式如下:

1、根据SYN报文的源IP地址查询当前处理器的红名单,如果不在红名单中,则新建一项加入到红名单中,首个SYN报文直接丢弃。

2、对于查到红名单的情况,且为一源IP地址发送的第2至N(比如设定N=10)个报文,丢弃该报文并回复错误的SYN+ACK报文,等待接收该源IP地址回复的连接释放报文(即reset报文)。如果接收到reset报文,则将该源IP地址剪切到白名单中,后续该源IP地址发送的报文便可作为正常流量处理。如果未收到reset报文,不作处理,继续等待该源IP地址发送的下一个报文到来。

3、对于查到红名单的情况,且为一源IP地址发送的第N+1个SYN报文(即经N次验证后,该源IP地址均未回复reset报文,可以认为该源IP地址为攻击),则直接丢弃该SYN报文,并将红名单中的该源IP地址剪切到黑名单中。

通过以上方式,可以利用红名单验证源IP地址不在白名单和黑名单中的SYN报文是否为攻击,从而做到全面有效地防御攻击。同时,红名单为每核的局部表,性能上可以做到随处理器数量而线性增长。

在一个实施例中,对于接收到的SYN报文的源IP地址在白名单中的情况,通常会正常进行三次握手会话,然而还是可能出现三次握手超时的情况。因此,可以将白名单中,超时未完成连接的源IP地址的状态置为待确定。那么步骤S12可以包括:若该SYN报文的源IP地址在白名单中的状态为待确定,且该SYN报文为该源IP地址被置为待确定后发送的第一个SYN报文,则丢弃该SYN报文;若该SYN报文的源IP地址在白名单中的状态为待确定,且该SYN报文为不是该源IP地址被置为待确定后发送的第一个SYN报文,则回复正确的SYN确认报文;若超时时间内接收到该源IP地址发送的确认报文,则回复连接释放报文,将白名单中的该源IP地址的状态置为正常,等待该源IP地址重新发送SYN报文。

也就是说,对于白名单中的源IP地址,出现三次握手在超时时间内未完成而删除session表的情况,可能是由于有效的源IP地址在发送无意义的SYN扫描攻击,因此可以进一步地对这种情况的源IP地址进行验证,具体如下:

1、将白名单中有连接超时的情况的源IP地址置为待定状态。

2、当状态为待确定的源IP地址再次发来SYN报文时,第一个SYN报文直接丢弃。

3、对于后续发送的SYN报文,回复正确的SYN+ACK报文。

4、如果超时时间内接收到该源IP地址回复的ACK报文,则再次回复reset报文,等待该源IP地址重新发送SYN报文,并将该源IP地址状态置为正常。

5、如果超时时间内未收到该源IP地址回复的ACK报文,则不做任何处理。对于该源IP地址发送的前预设个数(比如设定为10个)的报文都做如上处理(即回复正确的SYN+ACK报文后,等待ACK报文),当10次以上报文依旧没有接收到该源IP地址回复的ACK报文,可以将该源IP地址剪切到黑名单中,后续报文一律丢弃。

通过以上方式,可以验证出白名单中是否存在可能是攻击的源IP地址,可以更好地处理接收到的SYN报文来达到全面防御攻击的目的。

在一个实施例中,还可以在超时时间内接收到该源IP地址发送的确认报文并回复连接释放报文后,针对该源IP地址的异常次数计数加一,那么在该源IP地址的异常次数达到次数阈值时,将回复了连接释放报文后接收到的SYN报文的连接信息添加到黄名单中,并将白名单中的该源IP地址标记为黄名单状态。步骤是12可以包括:若接收到的SYN报文的源IP地址在白名单中,且携带有黄名单状态的标记,则根据接收到的SYN报文的连接信息,查询是否在黄名单中;若在黄名单中,则回复正确的SYN确认报文,其中,若超时时间内接收到确认报文,则回复连接释放报文,等待该源IP地址重新发送SYN报文,以建立连接;若超时时间内未接收到确认报文,且回复了预设次数的SYN确认报文后均未收到确认报文,则将该连接信息标记为攻击。

针对白名单中被标记为待确定的源IP地址,在验证过程中发送了SYN+ACK报文后,虽然接收到了该源IP地址回复的ACK报文,但这种情况过多仍然是不正常的,可能是有效的源IP地址有时发送攻击报文,有时发送正常报文,因此,每出现一次这种情况可以进行异常次数加1,当异常次数达到次数阈值时(比如设定为100次)可以构建黄名单:对于reset报文成功的情况,将接收到的SYN报文的连接信息(即源IP地址、目的IP地址、即端口号)成对添加到黄名单中,并将白名单中的该源IP地址标记为黄名单状态。那么接收到的SYN报文的源IP地址如果在白名单中且状态为黄名单,那么需要进一步查询该SYN报文的连接信息是否在黄名单中,如果不在则正常进行三次握手会话;如果在便回复SYN+ACK报文,若接收到该源IP地址进一步回复的ACK报文,便发送reset报文,等待下次SYN报文便可正常建立连接,若尝试回复预设次数(比如设定为3次)的SYN+ACK报文均超时未收到该源IP地址进一步回复的ACK报文,便丢弃该SYN报文,同时将黄名单中的连接信息标记为攻击,后续报文一律丢弃。通过以上方式,可以做到更为全面的防御SYN攻击。

本公开实施例中,由于对于分布式SYN攻击而言,大多数情况都是攻击源控制大量的傀儡机器进行SYN攻击,这种情况下傀儡机在进行攻击时,常常除了傀儡机本身的IP以外,再就是伪装成相近的源IP地址段来进行攻击。对于此种情况,本公开可以通过统计的方法,将攻击方的源IP地址段统计出来。例如,根据红名单中发起SYN报文的次数大于1万次的源IP地址,或者未成功完成三次握手的会话次数大于1万次的源IP地址,分析是否可能出现网段,缩小范围的统计,这样可以做到对可能的攻击IP地址网段进行了解、分析。关于确认IP地址段,可以是处理器的单独的一个线程在执行,定时每隔一段时间,对新加入的IP地址进行网段分析,以保证不因为确认网段而影响正常的SYN报文处理逻辑。

为了更好地阐述本公开的技术方案,请参见图2及图3,图2以指定处理器接收到SYN报文后的处理流程为例,图3以除指定处理器外的其他处理器接收到SYN报文后的处理流程为例,对可能的通过白名单、黑名单、红名单及黄名单确定处理SYN报文的方式进行了详细的说明。可见,本公开实施例至少具有以下技术效果:

1、基于黑名单、白名单、红名单、黄名单的攻击防御方法,可以做到在遇到攻击时既能防御源IP地址无效的攻击,也能防御源IP地址有效的SYN攻击,功能性上可以做到防御各种类型的攻击防御。

2、基于软硬件结合的方法,将黑名单情况的报文通过硬件网卡直接发送到指定处理器,使得遭遇大流量攻击时,绝大多数的攻击流量可以被分流,只有指定处理器需要查询黑名单,提升攻击防御的能力和整体流量的高性能。

3、对于源IP地址可能有效的SYN攻击类型,设计每核黄名单,保证这个IP地址的正常流量能畅通,也能防御SYN攻击。

4、整个设计方案充分考虑多核架构下每个表格的设计,在大流量攻击下查询红名单是局部表格,查询的黄名单也是局部表格,这样能做到攻击流量添加到红黄名单时是无锁的。而多数情况需要使用的白名单是全局无锁的查询,黑名单是只有指定处理器查询,整个过程能保证多核性能并发随着处理器的增加性能可以线性增长。

请参见图4,基于同一发明构思,本公开实施例提供一种防火墙300,该防火墙300可以包括:

非临时性计算机可读存储介质301;

多个处理器302,用于接收SYN报文;及,在确定所述防火墙受到攻击时,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式;

其中,所述白名单用于存储三次握手成功的SYN报文的源IP地址;所述其他名单包括用于存储攻击SYN报文的IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单中的至少一者,所述连接信息包括源IP地址、目的IP地址、及端口号。

可选的,所述多个处理器302包括指定处理器及除指定处理器外的其他处理器,所述指定处理器用于:

在接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,验证所述SYN报文的IP地址是否在所述黑名单中;

若确定该SYN报文的IP地址在所述黑名单中,丢弃该SYN报文;或,若确定该SYN报文的IP地址不在所述黑名单中,根据接收到该SYN报文的当前处理器的红名单确定对该SYN报文的处理方式;

所述其他处理器用于:

在接收到该SYN报文,并验证该SYN报文的源IP地址不在所述白名单时,根据接收到该SYN报文的当前处理器的红名单确定对该SYN报文的处理方式。

可选的,所述多个处理器302用于:

若该SYN报文的源IP地址不在接收到该SYN报文的当前处理器的红名单中,将该源IP地址添加到所述当前处理器的红名单中,丢弃该SYN报文;

若该SYN报文为该源IP地址发送的第2至N个SYN报文,则回复错误的SYN确认报文;其中,在回复错误的SYN确认报文之后,如果接收到该源IP地址发送的连接释放报文,则将该源IP地址从所述当前处理器的红名单中剪切到所述白名单中;

若该SYN报文为该源IP地址发送的第N+1个SYN报文,则丢弃该报文,将该源IP地址从所述当前处理器的红名单中剪切到所述黑名单中。

可选的,所述黑名单包括源IP地址黑名单和目的IP地址黑名单,所述多个处理器302还用于:

将处于未完成状态的连接的个数超过预设阈值的源IP地址添加到所述源IP地址黑名单中,并进行硬件配置,以使得添加到所述源IP地址黑名单中的源IP地址发送的SYN报文均由所述指定处理器接收;

将处于未完成状态的连接的个数超过预设阈值的目的IP地址,及对应的源IP地址添加到所述目的IP地址黑名单中,并进行硬件配置,以使得请求与所述目的IP地址黑名单中的目的IP地址建立连接的SYN报文均由所述指定处理器接收;

所述指定处理器用于:

验证该SYN报文的源IP地址是否在所述源IP地址黑名单中,以及验证该SYN报文的目的IP地址及源IP地址是否在所述目的IP地址黑名单中。

可选的,所述多个处理器302还用于:

将所述白名单中,超时未完成连接的源IP地址的状态置为待确定;

若该SYN报文的源IP地址在所述白名单中的状态为待确定,且该SYN报文为该源IP地址被置为待确定后发送的第一个SYN报文,则丢弃该SYN报文;

若该SYN报文的源IP地址在所述白名单中的状态为待确定,且该SYN报文为不是该源IP地址被置为待确定后发送的第一个SYN报文,则回复正确的SYN确认报文;

若超时时间内接收到该源IP地址发送的确认报文,则回复连接释放报文,将所述白名单中的该源IP地址的状态置为正常,等待该源IP地址重新发送SYN报文。

可选的,所述多个处理器302还用于:

在超时时间内接收到该源IP地址发送的确认报文并回复连接释放报文后,针对该源IP地址的异常次数计数加一;

在该源IP地址的异常次数达到次数阈值时,将回复了连接释放报文后接收到的SYN报文的连接信息添加到所述黄名单中,并将所述白名单中的该源IP地址标记为黄名单状态;

若接收到的SYN报文的源IP地址在所述白名单中,且携带有黄名单状态的标记,则根据接收到的SYN报文的连接信息,查询是否在所述黄名单中;

若在所述黄名单中,则回复正确的SYN确认报文,其中,若超时时间内接收到确认报文,则回复连接释放报文,等待该源IP地址重新发送SYN报文,以建立连接;或,若超时时间内未接收到确认报文,且回复了预设次数的SYN确认报文后均未收到确认报文,则将该连接信息标记为攻击。

请参见图5,基于同一发明构思,本公开实施例提供一种防攻击的SYN报文处理装置400,应用于防火墙,该装置400可以包括:

报文接收模块401,用于接收SYN报文;

处理模块402,用于在确定所述防火墙受到攻击时,根据该SYN报文的源IP地址及构建的白名单和其他名单,确定对该SYN报文的处理方式;

其中,所述白名单用于存储三次握手成功的SYN报文的源IP地址;所述其他名单包括用于存储攻击SYN报文的IP地址的黑名单、用于验证SYN报文是否为攻击报文的红名单、及用于存储待确定是否为攻击的连接信息的黄名单中的至少一者,所述连接信息包括源IP地址、目的IP地址、及端口号。

在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以对本公开的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本公开的方法及其核心思想,不应理解为对本公开的限制。本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。

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