基于计数型布隆过滤器的SYNFlood攻击检测方法技术

技术编号:31015256 阅读:13 留言:0更新日期:2021-11-30 02:55
本发明专利技术公开了基于计数型布隆过滤器的SYN Flood攻击检测方法,包括检测某段时间内单个源IP的TCP连接请求包个数,并取其最大值作为阈值,或者手动设置一个阈值;构建一个计数表、一个白名单和黑名单,并初始化;在当前时间周期内检测的TCP报文的接收;获取接收的TCP报文的源目IP,并用k个独立的哈希函数对源目IP进行运算,得到k个哈希值,并寻找k个哈希值在计数表中的对应位置;判断接收的TCP报文是否在黑名单或白名单或阈值范围内,并对相应判断结果做出TCP报文丢弃或通过的选择。本发明专利技术占用内存小且匹配速度快,能够实现对SYN Flood攻击的防御;通过选取合适的哈希函数个数和数组长度,以及定时重置数组中的数据,减少误报率。减少误报率。减少误报率。

【技术实现步骤摘要】
基于计数型布隆过滤器的SYN Flood攻击检测方法


[0001]本专利技术涉及网络安全领域,具体涉及一种基于计数型布隆过滤器的SYN Flood攻击检测方法。

技术介绍

[0002]SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,利用TCP协议漏洞,发送大量伪造的TCP连接请求,造成被攻击方资源耗尽。从而影响正常的服务请求。由于它利用了TCP/IP协议存在的固有的缺陷,所以现有的协议体系对SYN Flood攻击毫无免疫力。
[0003]TCP连接的建立在TCP协议中被称为三次握手(Three

way Handshake),而SYN Flood攻击就是针对三次握手的漏洞实现的。
[0004]三次握手的步骤为:
[0005](1)客户端向服务器发送一个包含SYN标志的TCP报文,报文会指明客户端使用的端口以及TCP连接的初始序号。这时同服务器建立了第一次握手。
[0006](2)服务器在收到SYN报文后,将返回一个SYN+ACK的报文,表示客户端的请求被接受,同时,TCP序号被加一,这样就同服务器建立了第二次握手。
[0007](3)客户端也返回一个确认报文ACK给服务器,同样TCP序列号被加一,到此一个TCP连接完成,三次握手完成。
[0008]SYN flood攻击的原理是:
[0009]TCP连接的三次握手中,TCP连接建立时,服务器收到客户端发送的SYN数据包后,服务器返回SYN+ACK给客户端,并等待客户端回复ACK报文,因为伪造的源地址不会回复ACK报文(这个特性非常适合识别目前SYN Flood的攻击),这种情况下由于TCP重传机制一般会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级,当大量攻击发生,那么服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。从而使正常用户无法访问,或者服务器宕机。

技术实现思路

[0010]针对现有技术中的上述不足,本专利技术提供的一种基于计数型布隆过滤器的SYN Flood攻击检测方法解决了收到攻击后正常用户无法访问和服务器宕机的问题。
[0011]为了达到上述专利技术目的,本专利技术采用的技术方案为:
[0012]提供一种基于计数型布隆过滤器的SYN Flood攻击检测方法,其包括以下步骤:
[0013]S1、检测某段时间内单个源IP的TCP连接请求包个数,并取其最大值作为阈值;
[0014]S2、构建一个计数表、一个白名单和黑名单,并初始化;
[0015]S3、判断是否完成当前时间周期的TCP报文的接收,若是则结束此次检测;否则进入步骤S4;
[0016]S4、获取接收到的TCP报文的源目IP,并用k个独立的哈希函数对源目IP进行运算,得到k个哈希值,并寻找k个哈希值在计数表中的对应位置;
[0017]S5、判断计数表中的对应位置对应的白名单中的值是否都非0,若是则通过接收到的TCP报文并回到步骤S3;否则进入步骤S6;
[0018]S6、判断计数表中的对应位置对应的黑名单中的值是否都非0,若是则丢弃接收到的TCP报文并回到步骤S3;否则进入步骤S7;
[0019]S7、判断接收到的TCP报文是否为TCP三次握手中的SYN报文,若是则将接收到的SYN报文在计数表中对应的k个位置的值+1,并进入步骤S8;否则进入步骤S9;
[0020]S8、判断该SYN报文对应计数表的k个位置中是否出现某个值大于阈值,若是则将该值对应的计数表位置的值清0,同时将该值对应的黑名单位置的值置1,丢弃该报文并回到步骤S3;否则通过该报文并回到步骤S3;
[0021]S9、判断接收到的TCP报文的是否为TCP三次握手中的ACK报文,若是则进入步骤S10;否则判定为正常通信报文,通过该报文并回到步骤S3;
[0022]S10、判断该ACK报文对应计数表的k个位置中的值是否都非0;若是则将ACK报文对应计数表的k个位置中的值

1,同时将该值对应的白名单位置的值置1,通过该报文并回到步骤S3;否则丢弃该报文并回到步骤S3。
[0023]进一步地,步骤S2中计数表为一个长度为m的一维数组,且一维数组为short类型,白名单和黑名单储存在一个长度为m的二维数组中,二维数组为两列,第一列用于保存白名单第二列用于保存黑名单,且二维数组的两列均为bit类型;初始化即将计数表、白名单和黑名单中的值清0;且该系统定期进行初始化。
[0024]进一步地,步骤S4中寻找k个哈希值在计数表中的对应位置的具体方法为:将k个哈希值对m取模,即将k个哈希值映射到计数表的k个位置中。
[0025]本专利技术的有益效果为:多次进行哈希运算达到快速存储匹配,占用内存小且匹配速度快;采用两个布隆过滤器的存储结构,统计TCP报文中SYN报文与ACK报文的差值,再对存储的数值进行判断,得出攻击者使用的IP地址,进而实现对SYN Flood攻击的防御;通过选取合适的哈希函数个数和数组长度,以及定时重置数组中的数据即定时初始化数组,减少了误报率;本算法简单,便于移植到FPGA等硬件上,以获取更高性能的处理。
附图说明
[0026]图1为本专利技术的流程图。
具体实施方式
[0027]下面对本专利技术的具体实施方式进行描述,以便于本
的技术人员理解本专利技术,但应该清楚,本专利技术不限于具体实施方式的范围,对本
的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本专利技术的精神和范围内,这些变化是显而易见的,一切利用本专利技术构思的专利技术创造均在保护之列。
[0028]如图1所示,该基于计数型布隆过滤器的SYN Flood攻击检测方法包括以下步骤:
[0029]S1、检测某段时间内单个源IP的TCP连接请求包个数,并取其最大值作为阈值;
[0030]S2、构建一个计数表、一个白名单和黑名单,并初始化;
[0031]S3、判断是否完成当前时间周期的TCP报文的接收,若是则结束此次检测;否则进入步骤S4;
[0032]S4、获取接收到的TCP报文的源目IP,并用k个独立的哈希函数对源目IP进行运算,得到k个哈希值,并寻找k个哈希值在计数表中的对应位置;
[0033]S5、判断计数表中的对应位置对应的白名单中的值是否都非0,若是则通过接收到的TCP报文并回到步骤S3;否则进入步骤S6;
[0034]S6、判断计数表中的对应位置对应的黑名单中的值是否都非0,若是则丢弃接收到的TCP报文并回到步骤S3;否则进入步骤S7;
[0035]S7、判断接收到的TCP报文是否为TCP三次握手中的SYN报文,若是则将接收到的SYN报文在计数表中对应的k个位置的值+1,并进入步骤S8;否则进入步骤S9;
[0036]S8、判断该SYN报本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于计数型布隆过滤器的SYN Flood攻击检测方法,其特征在于,包括以下步骤:S1、检测某段时间内单个源IP的TCP连接请求包个数,并取其最大值作为阈值;S2、构建一个计数表、一个白名单和黑名单,并初始化;S3、判断是否完成当前时间周期的TCP报文的接收,若是则结束此次检测;否则进入步骤S4;S4、获取接收到的TCP报文的源目IP,并用k个独立的哈希函数对源目IP进行运算,得到k个哈希值,并寻找k个哈希值在计数表中的对应位置;S5、判断计数表中的对应位置对应的白名单中的值是否都非0,若是则通过接收到的TCP报文并回到步骤S3;否则进入步骤S6;S6、判断计数表中的对应位置对应的黑名单中的值是否都非0,若是则丢弃接收到的TCP报文并回到步骤S3;否则进入步骤S7;S7、判断接收到的TCP报文是否为TCP三次握手中的SYN报文,若是则将接收到的SYN报文在计数表中对应的k个位置的值+1,并进入步骤S8;否则进入步骤S9;S8、判断该SYN报文对应计数表的k个位置中是否出现某个值大于阈值,若是则将该值对应的计数表位置的值清0,同时将该值对应的黑名单位置的值置1,丢弃该报文并回到...

【专利技术属性】
技术研发人员:詹晋川张帆周志远陆湘
申请(专利权)人:深圳市风云实业有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1