一种识别SYN攻击行为中统计SYN包数量的方法及装置与流程

文档序号:19321012发布日期:2019-12-04 00:32阅读:348来源:国知局
一种识别SYN攻击行为中统计SYN包数量的方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种识别syn攻击行为中统计syn包数量的方法及装置。



背景技术:

当今通信领域中,客户端与服务端间通常使用tcp协议(面向连接的、可靠的、基于字节流的传输层通信协议)进行数据交互。客户端与服务端建立tcp连接时会进行三次握手,首先,客户端发送syn包至服务端,完成客户端与服务端的第一次握手;服务端响应于上述syn包,向上述客户端返回syn包和ack包,完成客户端与服务端的第二次握手;上述服务端在完成向上述客户端返回syn包和ack包后将一直处于等待状态,直至接收到上述客户端发送的ack包,完成客户端与服务端的第三次握手。当客户端与服务端完成上述三次握手后,可以相互传输数据。

现实中,许多黑客在短时期内伪造大量不存在的ip,并将上述ip封装至客户端向服务端发送的syn包中。当服务端接收到客户端发送的上述syn包后,将向客户端返回syn包和ack包(第二次握手),并等待客户端之后发送的ack包,但是,由于上述syn包中的源ip是不存在的,因此,服务端发出syn包和ack包后将不会得到任何客户端响应,从而导致服务端一种处于等待状态,不能正常工作,引起网络堵塞和服务端系统瘫痪(以下简称syn攻击)。

目前,为了防止服务端遭受syn攻击,服务端通常将连接能够识别syn攻击的网络设备。如果上述网络设备确定自身当前正在遭受到syn攻击时,则停止向与自身连接的服务端转发客户端发送的syn包,以使服务端避免遭受syn攻击。

实际应用中,为了识别syn攻击行为,上述网络设备通常判断在一段间隔时长(例如,周期性启动老化机制的时间间隔)内经过该网络设备的syn包的数量是否达到预设阈值,并当上述网络设备确定在一段间隔时长内经过该网络设备的syn包的数量突破预设阈值时,确定自身正在遭受syn攻击。

由上可见,在上述网络设备中,需要一种记录syn包数量的方法,以使网络设备能够识别服务端是否遭受syn攻击。



技术实现要素:

有鉴于此,本申请提供一种识别syn攻击行为中统计syn包数量的方法,应用于网络设备,上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量;上述方法包括:

周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并获取第一syn包数量,以及,第二syn包数量;其中,上述第一syn包数量,为遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和;上述第二syn包数量,为在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和;

根据上述第一syn包数量与上述第二syn包数量相加的结果更新上述fpga统计的接收到的syn包的总数量。

在示出的一实施例中,上述获取第一syn包数量,包括:

确定当前时间与遍历的计数表项的创建时间之间的时间差是否达到预设老化时长;

如果当前时间与遍历的任一计数表项的创建时间未达到预设老化时长,则记录该计数表项中的上述累计数量;以及,对记录的各计数表项的上述累计数量进行累加,得到上述第一syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第一纠错计数器;上述获取第二syn包数量包括:

确定在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于等于当前正在遍历的计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第一纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历周期结束后,读取上述第一纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第二纠错计数器;上述获取第二syn包数量包括:

确定与在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于当前正在遍历的计数表项的下一计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第二纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历结束后,读取上述第二纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述网络设备中还预设了第三纠错计数器;上述方法还包括:

在本轮遍历周期内遍历最后一个存储地址单元的过程中,每当上述高速硬件存储器被写入一个syn包时,将预设的第三纠错计数器的计数结果加一;上述在本轮遍历周期内遍历最后一个存储地址单元的过程中,为从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

将上述第二纠错计数器与上述第三纠错计数器的计数结果相加,得到上述第二syn包数量。

在示出的一实施例中,上述在本轮遍历周期内遍历最后一个存储地址单元的过程包括:

从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

本申请还提供一种识别syn攻击行为中统计syn包数量的装置,应用于网络设备,上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量;上述装置包括:

周期性遍历模块,周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并获取第一syn包数量,以及,第二syn包数量;其中,上述第一syn包数量,为遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和;上述第二syn包数量,为在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和;

更新syn包总数量模块,根据上述第一syn包数量与上述第二syn包数量相加的结果更新上述fpga统计的接收到的syn包的总数量。

在示出的一实施例中,上述周期性遍历模块,还包括:

获取第一syn包数量模块,确定当前时间与遍历的计数表项的创建时间之间的时间差是否达到预设老化时长;

如果当前时间与遍历的任一计数表项的创建时间未达到预设老化时长,则记录该计数表项中的上述累计数量;以及,对记录的各计数表项的上述累计数量进行累加,得到上述第一syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第一纠错计数器;上述周期性遍历模块,还包括:

获取第二syn包数量模块,确定在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于等于当前正在遍历的计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第一纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历周期结束后,读取上述第一纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第二纠错计数器;上述周期性遍历模块,还包括:

获取第二syn包数量模块,确定与在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于当前正在遍历的计数表项的下一计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第二纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历结束后,读取上述第二纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述网络设备中还预设了第三纠错计数器;上述周期性遍历模块,还包括:

获取遍历过程漏计的syn包数量模块,在本轮遍历周期内遍历最后一个存储地址单元的过程中,每当上述高速硬件存储器被写入一个syn包时,将预设的第三纠错计数器的计数结果加一;上述在本轮遍历周期内遍历最后一个存储地址单元的过程中,为从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

将上述第二纠错计数器与上述第三纠错计数器的计数结果相加,得到上述第二syn包数量。

在示出的一实施例中,上述在本轮遍历周期内遍历最后一个存储地址单元的过程包括:

从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

由上述记载的技术方案可知,一方面,由于上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量,因此,当上述网络设备监听到在一段间隔时长内上述fpga统计的接收到的syn包的总数量突破预设阈值时,则可以确认自身正在遭受syn攻击,并且,上述网络设备可以在确定自身遭受到syn攻击后,将统计的上述累计数量的增长速率大于预设值的计数表项对应的源ip确定为syn攻击包的源ip。

另一方面,由于网络设备周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并且将遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和,以及,在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和相加的结果更新为上述fpga统计的接收到的syn包的总数量,因此,使得上述fpga统计的接收到的syn包的总数量可以与上述各计数表项的计数结果的和保持同步增减,不会一直累加,从而避免了上述网络设备由于上述fpga统计的接收到的syn包的总数量一直累加直至突破预设阈值而导致的误以为自身正在遭受syn攻击的误判。

附图说明

图1为本说明书示出的一种网络设备的结构图;

图2为本申请提出的一种识别syn攻击行为中统计syn包数量的方法的流程图;

图3为本说明书示出的一种识别syn攻击行为中统计syn包数量的装置的结构图。

具体实施方式

下面将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“上述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。还应当理解,本文中所使用的词语“如果”,取决于语境,可以被解释成为“在……时”或“当……时”或“响应于确定”。

在实际应用中,为了使网络设备可以识别syn攻击行为,网络设备中通常将设置统计接收到的syn包总数量的计数器(以下简称总计数器),并建立周期性清除上述总计数器上的计数的老化机制。在上述情形下,如果该网络设备确定在一段间隔时长(例如,周期性启动老化机制的时间间隔)内该总计数器记录的syn包总数量突破预设阈值,则该网络设备确认自身正在遭受syn攻击。

而为了获取syn攻击包的源ip,网络设备中通常还设置了若干个统计与接收到的syn包的源ip对应的syn包的累计数量的计数表项,上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量。当上述网络设备确定自身正在遭受syn攻击时,可以根据各计数表项的计数结果的变化情况来确定syn攻击包的源ip。例如,网络设备可以将统计的上述累计数量增长速率大于预设值的计数表项对应的源ip确定为syn攻击包的源ip。

在实际应用中,为了保证总计数器中的计数结果不会一直累加,而是与各计数表项上的计数结果的和保持同步增减,且上述网络设备在未遭受syn攻击时,该计数结果不会突破预设阈值的动态平衡状态,上述网络设备中将建立另一种老化机制。上述老化机制可以是,上述网络设备通常周期性遍历各计数表项,并在遍历周期内判断当前时间与各计数表项创建时间之间的时间差是否达到老化时长(该老化时长可以在网络设备中预先设置)。当上述网络设备在上述遍历周期内确定当前时间与各计数表项创建时间之间的时间差达到上述老化时长的计数表项时,则将上述总计数器中的计数结果减去该计数表项上的计数结果,并将该计数表项上的计数结果清零,以此来保证总计数器中的计数结果不会一直累加,而是与各计数表项上的计数结果的和保持同步增减以处于上述动态平衡状态,从而使上述网络设备在未遭受syn攻击时,上述总计数器中的计数不会突破预设阈值。

在此,需要说明的是,上述总计数器设置的位置可以是网络设备的cpu、fpga或其他位置;上述计数表项设置的位置可以是网络设备的cpu、fpga或高速硬件存储器中。

以下,结合具体场景进行说明。

请参见图1,图1为本说明书示出的一种网络设备的结构图。

如图1所示,网络设备采用cpu(centralprocessinguint,中央处理器)与fpga(field-programmablegatearray,现场可编程门阵列)的异构架构,上述fpga与高速硬件存储器通信连接。

上述fpga,可以处理上述网络设备接收到的syn包。当上述网络设备接收到syn包时,上述fpga可以更新自身统计的额该网络设备接收到的syn包的总数量。例如,上述fpga中可以设置总计数器,用于统计接收到的syn包的总数量。上述fpga还可以获取上述接收到的syn包的源ip,并在获取到上述源ip后与上述高速硬件存储器进行通信以使上述高速硬件存储器将上述fpga接收的syn包存储起来。

上述高速硬件存储器,可以存储与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量(以下简称计数结果)。

例如,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元,上述存储地址单元可以存储上述计数表项。在上述情况下,当上述fpga接收到syn包时,上述fpga可以获取该syn包的源ip,并通过该源ip进一步判断该syn包是否为首次进入网络设备的syn包,如果该syn包为首次进入网络设备的syn包,则上述fpga可以向上述高速硬件存储器发送在未存储计数表项的存储地址单元上创建计数表项的命令,并将上述新创建的计数表项上的计数结果更新为一;如果该syn包不是首次进入网络设备的syn包,则上述fpga可以获取与该syn包的源ip对应的计数表项的计数结果,并将该计数加一后重新写入该计数表项。

上述网络设备,可以预先设置预设阈值。如果上述网络设备在一段间隔时长(例如,周期性启动老化机制的时间间隔)内监听到上述fpga统计的该网络设备接收到的syn包的总数量突破上述预设阈值时,则确定自身正在遭受syn攻击。例如,上述网络设备的cpu或fpga可以监听fpga中的总计数器的计数结果在一段间隔时长内是否突破上述预设阈值,并在监听到该总计数器的计数结果在一段间隔时长内突破上述预设阈值时,确定上述网络设备正在遭受syn攻击。

上述网络设备可以存在老化机制。例如,上述网络设备周期性遍历上述高速硬件存储器所有的存储地址单元,并在遍历周期内判断当前时间与各计数表项创建时间之间的时间差是否达到老化时长(该老化时长可以在网络设备中预先设置)。当上述网络设备在上述遍历周期内确定当前时间与各计数表项创建时间之间的时间差达到上述老化时长的计数表项时,则将上述fpga中的总计数器中的计数结果减去该计数表项上的计数结果,并将该计数表项上的计数结果清零,以此来保证总计数器中的计数结果不会一直累加,而是与各计数表项上的计数结果的和保持同步增减以处于上述动态平衡状态,以使上述网络设备在未遭受syn攻击时,上述总计数器中的计数不会突破预设阈值。

由于上述网络设备可以监听该网络设备在一段间隔时长(例如,周期性启动老化机制的时间间隔)内接收的syn包的总数量是否突破上述预设阈值,并在监听到上述总网络设备在一段间隔时长内接收的syn包的总数量突破上述预设阈值后,确定上述网络设备正在遭受syn攻击,并且,上述网络设备可以在确定自身遭受到syn攻击后,可以将上述高速硬件存储器中统计的上述累计数量增长速率大于预设值的计数表项对应的源ip确定为syn攻击包的源ip;因此,上述网络设备可以识别syn攻击行为,并获取上述syn攻击包的源ip。

当然,该网络设备在获取上述syn攻击包的源ip后,可以将该源ip作为加入过滤黑名单,以使网络设备可以过滤掉包含该源ip的syn包,从而有效防止服务端遭受syn攻击。

而实际应用中,当流经上述网络设备的syn包数量过大时,上述fpga仍然可以准确记录流经上述网络设备的syn包的数量;但是,当上述fpga在将接收到的syn包写入上述高速硬件存储器时,将可能由于上述高速硬件存储器处理速度较慢,使上述fpga向上述高速硬件存储器发送的待写入的syn包不能完全存储至上述高速硬件存储器中,而造成的syn包漏计。

在上述情况下,上述fpga统计的网络设备接收到的syn包的总数量与上述高速硬件存储器中各计数表项的计数结果的和之间的差值将越来越大;上述fpga统计的网络设备接收到的syn包的总数量将不会与上述各计数表项的计数结果的和保持同步增减,因此,上述fpga统计的网络设备接收到的syn包的总数量将一直累加;从而导致,在网络设备正常工作时,fpga统计的网络设备接收到的syn包的总数量的计数结果有可能由于不断累加而突破预设阈值,造成网络设备误以为自身正在遭受syn攻击的误判。

基于此,本申请提出一种识别syn攻击行为中统计syn包数量的方法,应用于网络设备。

上述网络设备采用cpu(centralprocessinguint,中央处理器)与fpga(field-programmablegatearray,现场可编程门阵列)的异构架构,上述fpga与高速硬件存储器通信连接。

该方法通过周期性地获取上述高速硬件存储器中存储的syn包数量,并根据获取到的syn包数量,更新上述fpga中统计的接收到的syn包的总数量,以保证上述fpga中统计的接收到的syn包的总数量与上述高速硬件存储器中的存储的syn包数量保持一致。

请参见图2,图2为本申请提出的一种识别syn攻击行为中统计syn包数量的方法的流程图。应用于网络设备,上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量;

s201,周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并获取第一syn包数量,以及,第二syn包数量;其中,上述第一syn包数量,为遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和;上述第二syn包数量,为在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和;

s202,根据上述第一syn包数量与上述第二syn包数量相加的结果更新上述fpga统计的接收到的syn包的总数量。

需要说明的是,上述s201与s202的步骤可以由网络设备的cpu、fpga或者其他控制器件单独完成、也可以由网络设备中的各控制器件(cpu、fpga等控制器件)配合完成,在此不作限定。

由上述记载的技术方案可知,一方面,由于上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量,因此,当上述网络设备监听到在一段间隔时长内上述fpga统计的接收到的syn包的总数量突破预设阈值时,则可以确认自身正在遭受syn攻击,并且,上述网络设备可以在确定自身遭受到syn攻击后,将统计的上述累计数量的增长速率大于预设值的计数表项对应的源ip确定为syn攻击包的源ip。

另一方面,由于网络设备周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并且将遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和,以及,在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和相加的结果更新为上述fpga统计的接收到的syn包的总数量,因此,使得上述fpga统计的接收到的syn包的总数量可以与上述各计数表项的计数结果的和保持同步增减,不会一直累加,从而避免了上述网络设备由于上述fpga统计的接收到的syn包的总数量一直累加直至突破预设阈值而导致的误以为自身正在遭受syn攻击的误判。

以下结合具体的实施例对本申请记载的技术方案进行说明。

在本申请示出的一实施例中,网络设备的结构图如图1所示,上述网络设备采用cpu(centralprocessinguint,中央处理器)与fpga(field-programmablegatearray,现场可编程门阵列)的异构架构,上述fpga与高速硬件存储器通信连接。

上述fpga,可以处理上述网络设备接收到的syn包。当上述网络设备接收到syn包时,上述fpga可以更新自身统计的额该网络设备接收到的syn包的总数量,并与上述高速硬件存储器进行通信以使上述高速硬件存储器将上述fpga接收的syn包存储起来。

例如,上述fpga中可以设置总计数器,用于统计接收到的syn包总数量。上述fpga还可以获取上述接收到的syn包的源ip,并在获取到上述源ip后与上述高速硬件存储器进行通信以使上述高速硬件存储器将上述fpga接收的syn包存储起来。

上述高速硬件存储器,可以存储与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量(以下简称计数表项的计数结果)。

例如,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元,上述存储地址单元可以存储上述计数表项。在上述情况下,当上述fpga接收到syn包时,可以获取该syn包的源ip,并通过该源ip进一步判断该syn包是否为首次进入网络设备的syn包,如果该syn包为首次进入网络设备的syn包,则上述fpga可以向上述高速硬件存储器发送在未存储计数表项的存储地址单元上创建计数表项的命令,并将上述新创建的计数表项上的计数结果更新为一;如果该syn包不是首次进入网络设备的syn包,则上述fpga可以获取与该syn包的源ip对应的计数表项的计数结果,并将该计数加一后重新写入该计数表项。

上述网络设备,可以预先设置预设阈值。如果上述网络设备在一段间隔时长(例如,周期性启动老化机制的时间间隔)内监听到上述fpga统计的该网络设备接收到的syn包的总数量突破上述预设阈值时,则确定自身正在遭受syn攻击。

例如,上述网络设备的cpu或fpga可以监听fpga中的总计数器的计数结果在一段间隔时长内是否突破上述预设阈值,并在监听到该总计数器的计数结果在一段间隔时长内突破上述预设阈值时,确定上述网络设备正在遭受syn攻击。需要说明的是,上述预设阈值可以是管理人员自行设定,也可以是网络设备根据现场运行环境自行生成,在此不作限定。

上述网络设备可以存在老化机制,上述高速硬件存储器中的计数表项可以被老化。

例如,上述cpu或fpga周期性遍历上述高速硬件存储器中的各计数表项时,判断当前时间与各计数表项创建时间之间的时间差是否达到老化时长(该老化时长可以在网络设备中预先设置)。当上述网络设备在上述遍历周期内确定当前时间与各计数表项创建时间之间的时间差达到上述老化时长的计数表项时,则将该计数表项上的计数结果清零。

以下具体说明本申请记载的执行步骤。需要说明的是,以下步骤可以由网络设备的cpu、fpga或者其他控制器件单独完成、也可以由网络设备中的各控制器件(cpu、fpga等控制器件)配合完成,在此不作限定。以下以fpga作为执行主体进行说明,其他执行主体的执行步骤可以参照fpga作为执行主体的执行步骤。

s301,周期性遍历上述高速硬件存储器中的各计数表项;s302,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项;s303,获取第一syn包数量;s304,获取第二syn包数量;s305,根据上述第一syn包数量与上述第二syn包数量相加的结果更新上述fpga统计的接收到的syn包的总数量。其中,需要说明的是,上述第一syn包数量,为遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和;上述第二syn包数量,为在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和。并且,上述s302-s304步骤是嵌套在执行s301的过程中执行的,在此仅是为了方便分别对各步骤进行详细说明。

在s301中,上述fpga可以预先设置周期性启动遍历地址的时间间隔时长。

例如,上述时间间隔时长为5s。上述fpga可以在完成上一次遍历上述高速硬件存储器中的各计数表项后经过5s后再次启动遍历。

在s302中,上述fpga周期性遍历上述高速硬件存储器中的各计数表项时,可以确定当前时间与该计数表项的创建时间之间的时间差是否达到预设老化时长;如果当前时间与该计数表项的创建时间之间的时间差达到预设老化时长,则对该技术表项进行老化处理;

例如,上述预设老化时长为2min。上述fpga中设置了统计第一syn包数量的计数器。在某一轮遍历周期内,上述fpga在遍历到某一计数表项(创建时间为7:58)时,确定当前时间(8:00)与该表项的创建时间(7:58)之间的时间差已达到上述预设老化时长(2min),则对该计数表项进行老化处理,将该计数表项的计数结果清零。

在s303中,上述fpga周期性遍历上述高速硬件存储器中的各计数表项时,可以确定当前时间与该计数表项的创建时间之间的时间差是否达到预设老化时长;如果当前时间与该计数表项的创建时间之间的时间差未达到预设老化时长,则记录该计数表项中的上述累计数量;以及,对记录的各计数表项的上述累计数量进行累加,得到上述第一syn包数量。

例如,上述预设老化时长为2min。上述fpga中设置了统计第一syn包数量的计数器。在某一轮遍历周期内,当上述fpga在遍历到某一计数表项(创建时间为8:59)时,确定当前时间(9:00)与该表项的创建时间(8:59)之间的时间差未达到上述预设老化时长(2min),则将该计数表项中的计数结果与当前上述统计第一syn包数量的计数器中的计数结果累加后记录入该统计第一syn包数量的计数器。当完成本轮遍历后,查询上述统计第一syn包数量的计数器的计数结果,并将该结果作为上述第一syn包数量。

在s304中,上述fpga可以将在上述遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和作为上述第二syn包数量。

在一实施例中,上述高速硬件存储器可以预先被划分为若干个与计数表项一一对应的存储地址单元。上述fpga周期性遍历上述高速硬件存储器中所有的存储地址单元上的计数表项。上述网络设备中预设了第一纠错计数器(例如,在fpga中预设了第一纠错计数器)。

上述fpga确定在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于等于当前正在遍历的计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第一纠错计数器的计数结果加一;在本轮遍历周期结束后,读取上述第一纠错计数器的计数结果,得到上述第二syn包数量。需要说明的是,上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

例如,上述高速硬件存储器中的存储地址的编号为从1至n。当上述fpga正在遍历编号为10的存储地址时(可以是在上述fpga向上述高速硬件存储器发送编号为10的存储地址读命令的时刻与上述fpga接收到上述高速硬件存储器发送编号为10的存储地址回读结果的时刻中间的任一时刻),如果上述高速硬件存储器待写入的syn包的源ip对应的目标计数表项的存储地址的编号为10以下中的任一,上述fpga将上述目标计数表项的存储地址的编号(例如,8)与当前正在遍历的计数表项的存储地址的编号(10)比较,确定上述目标计数表项的存储地址的编号小于当前正在遍历的计数表项的存储地址的编号,则会更新上述目标计数表项的累计数量,并将预设的第一纠错计数器的计数结果加一。在本轮遍历周期结束后,读取上述第一纠错计数器的计数结果,得到上述第二syn包数量。

在另一实施例中,上述高速硬件存储器可以预先被划分为若干个与计数表项一一对应的存储地址单元。上述fpga周期性遍历上述高速硬件存储器中所有的存储地址单元上的计数表项。上述网络设备中预设了第二纠错计数器(例如,在fpga中预设了第二纠错计数器)。

上述fpga确定与在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于当前正在遍历的计数表项的下一计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第二纠错计数器的计数结果加一;在本轮遍历结束后,读取上述第二纠错计数器的计数结果,得到上述第二syn包数量。需要说明的是,上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

例如,上述高速硬件存储器中的存储地址的编号为从1至n。当上述fpga正在遍历编号为10的存储地址时(可以是在上述fpga向上述高速硬件存储器发送编号为10的存储地址读命令的时刻与上述fpga接收到上述高速硬件存储器发送编号为10的存储地址回读结果的时刻中间的任一时刻),如果上述高速硬件存储器待写入的syn包的源ip对应的目标计数表项的存储地址的编号为10以下中的任一,上述fpga将上述目标计数表项的存储地址的编号(例如,10)与正在遍历的计数表项的下一计数表项的存储地址的编号(11)比较,确定上述目标计数表项的存储地址的编号小于正在遍历的计数表项的下一计数表项的存储地址的编号,则会更新上述目标计数表项的累计数量,并将预设的第二纠错计数器的计数结果加一。在本轮遍历周期结束后,读取上述第二纠错计数器的计数结果,得到上述第二syn包数量。

而在实际应用中,假设当前正在遍历最后一个存储地址单元(编号为n)上的计数表项,上述当前正在遍历的计数表项的下一计数表项的存储地址的编号将为1。由于在遍历最后一个存储地址单元时,上述高速硬件待写入的syn包的源ip对应的目标计数表项的存储地址的编号肯定大于等于1,因此,在上述遍历最后一个存储地址单元时,上述高速硬件存储器新增加的syn包的数量将会被漏计。

为了计数准确,在一实施例中,上述网络设备中还预设了第三纠错计数器(例如,在fpga中预设了第三纠错计数器)。

在本轮遍历周期内遍历最后一个存储地址单元的过程中,每当上述高速硬件存储器被写入一个syn包时,将预设的第三纠错计数器的计数结果加一;上述在本轮遍历周期内遍历最后一个存储地址单元的过程中,为从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;将上述第二纠错计数器与上述第三纠错计数器的计数结果相加,得到上述第二syn包数量。

需要说明的是,上述在本轮遍历周期内遍历最后一个存储地址单元的过程包括从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

在s305中,在完成一轮遍历周期后,上述fpga可以将获取的上述第一syn包数量与获取的上述第二syn包数量相加的结果更新为上述fpga统计的接收到的syn包的总数量。

例如,上述fpga中设置了总计数器,用于统计网络设备接收到的syn包的总数量。上述fpga可以将获取的上述第一syn包数量与获取的上述第二syn包数量相加的结果更新为上述总计数器中的计数结果。在本实施例中,由于上述总计数器中的计数结果被更新为上述第一syn包数量与获取的上述第二syn包数量相加的结果,因此,上述总计数器的结果不会一直累计,从而避免了当上述网络设备接收大量syn报文时,总计数器中的计数有可能达到该总计数器能够记录的最大值而造成从零开始重新记录,导致计数结果混乱。

由上述记载的技术方案可知,一方面,由于上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量,因此,当上述网络设备监听到在一段间隔时长内上述fpga统计的接收到的syn包的总数量突破预设阈值时,则可以确认自身正在遭受syn攻击,并且,上述网络设备可以在确定自身遭受到syn攻击后,将统计的上述累计数量的增长速率大于预设值的计数表项对应的源ip确定为syn攻击包的源ip。

另一方面,由于网络设备周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并且将遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和,以及,在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和相加的结果更新为上述fpga统计的接收到的syn包的总数量,因此,使得上述fpga统计的接收到的syn包的总数量可以与上述各计数表项的计数结果的和保持同步增减,不会一直累加,从而避免了上述网络设备由于上述fpga统计的接收到的syn包的总数量一直累加直至突破预设阈值而导致的误以为自身正在遭受syn攻击的误判。

相应于上面的方法实施例,本申请还提供一种识别syn攻击行为中统计syn包数量的装置,应用于网络设备。

上述网络设备包括用于统计接收到的syn包的总数量的fpga;以及,与上述fpga连接的高速硬件存储器;其中,上述高速硬件存储器存储了与接收到的syn包的源ip对应的若干计数表项;上述计数表项包括表项创建时间、源ip和接收到的与上述源ip对应的syn包的累计数量。

请参照图3,图3为本说明书示出的一种识别syn攻击行为中统计syn包数量的装置的结构图。

如图3所示,上述装置300包括:

周期性遍历模块310,周期性遍历上述高速硬件存储器中的各计数表项,老化处理当前时间与遍历的任一计数表项的创建时间之间的时间差达到预设老化时长的计数表项,并获取第一syn包数量,以及,第二syn包数量;其中,上述第一syn包数量,为遍历到的当前时间与上述创建时间之间的时间差未达到预设老化时长的各计数表项的上述累计数量的和;上述第二syn包数量,为在本轮遍历周期内各计数表项在被遍历的过程中以及在被遍历完成之后的上述累计数量的增加值的和;

更新syn包总数量模块320,根据上述第一syn包数量与上述第二syn包数量相加的结果更新上述fpga统计的接收到的syn包的总数量。

在示出的一实施例中,上述周期性遍历模块310,还包括:

获取第一syn包数量模块,确定当前时间与遍历的计数表项的创建时间之间的时间差是否达到预设老化时长;

如果当前时间与遍历的任一计数表项的创建时间未达到预设老化时长,则记录该计数表项中的上述累计数量;以及,对记录的各计数表项的上述累计数量进行累加,得到上述第一syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第一纠错计数器;上述周期性遍历模块310,还包括:

获取第二syn包数量模块,确定在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于等于当前正在遍历的计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第一纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历周期结束后,读取上述第一纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述高速硬件存储器预先被划分为若干个与计数表项一一对应的存储地址单元;上述网络设备中预设了第二纠错计数器;上述周期性遍历模块310,还包括:

获取第二syn包数量模块,确定与在本轮遍历周期内待写入上述高速硬件存储器的syn包的源ip对应的目标计数表项的存储地址,是否小于当前正在遍历的计数表项的下一计数表项的存储地址;如果是,更新上述目标计数表项的累计数量,并将预设的第二纠错计数器的计数结果加一;上述本轮遍历周期,为从上述fpga向上述高速硬件存储器发送第一个存储地址读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

在本轮遍历结束后,读取上述第二纠错计数器的计数结果,得到上述第二syn包数量。

在示出的一实施例中,上述网络设备中还预设了第三纠错计数器;上述周期性遍历模块310,还包括:

获取遍历过程漏计的syn包数量模块,在本轮遍历周期内遍历最后一个存储地址单元的过程中,每当上述高速硬件存储器被写入一个syn包时,将预设的第三纠错计数器的计数结果加一;上述在本轮遍历周期内遍历最后一个存储地址单元的过程中,为从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束;

将上述第二纠错计数器与上述第三纠错计数器的计数结果相加,得到上述第二syn包数量。

在示出的一实施例中,上述在本轮遍历周期内遍历最后一个存储地址单元的过程包括:

从上述fpga向上述高速硬件存储器发送最后一个存储地址的读命令的时刻开始至上述fpga接收到上述高速硬件存储器发送的最后一个存储地址回读结果的时刻结束。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。上述处理及逻辑流程还可以由专用逻辑电路—例如fpga(现场可编程门阵列)或asic(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏操纵台、全球定位系统(gps)接收机、或例如通用串行总线(usb)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如eprom、eeprom和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及cdrom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上上述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上上述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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