基于开源内核的无状态的泛洪请求攻击过滤方法

文档序号:7684336阅读:166来源:国知局

专利名称::基于开源内核的无状态的泛洪请求攻击过滤方法
技术领域
:本发明是一种在linux下过滤syn一flood攻击数据,用于在检测到发生攻击时,启动synFlood过滤器,阻隔所有syn连接请求,对其身份进行鉴定,将所有攻击的syn连接过滤,并最大限度的保证正常的网络连接,属于网络安全
技术领域

背景技术
:网络安全一直是伴随网络高速发展越来越来越受广大用户和技术工作者关注并寻求解决放案,TCP/IP协议现在网络的通信协议,其开放性以及协议诞生之初并未料到的网络的许多变化使得协议本身具有一些缺点。网络黑客根据网络协议本身漏洞设计了一些网络攻击工具,其中DDos是一种危害极大的网络攻击,它通过tcp协议三次握手的建立过程中,发起放发送请求,得到建立申请的主机向发起方发出回应,并需要分配资源等待回复,网络攻击者根据此原理发送大量的链接申请,通过主机不断需要相应申请分配资源,直到资源耗尽。往往在几分钟的时间即可使服务器瘫痪。目前防范此类恶性攻击的方法,主要是通过将主机分配资源后的等待时间縮短,这是一种被动的防守型方式,而且发现攻击时,往往已是攻击中期,网络服务不能保证。所以防范网络攻击特别是DDoS攻击,需要提供灵敏的检测方法和强大的过滤机制。目前在检测方法上有了各种的发现,包括对数据流特征分析,以及建立网络模型等几种主要方式。而对于数据包过滤主要还是基于某个数据特征的过滤,如跟踪可疑端口,通过聚集发现恶意地址后,封闭某端口或者禁止某地址数据包通过。但这些方式均比较被动,缺乏智能性,高效准确智能的过滤方法对于主动防范是非常必要和急需的。
发明内容技术问题本发明主要是提供对于在Syn一Flood攻击发生后,通过智能探测方法识别合法和攻击地址信息,并有针对性的予以通过和丢弃的一种智能的过滤机制。机制借鉴了linux的Iptables机制,将部分功能借助iptables对列实现,将其与一种优化后的cookie维护识别结合在一起,提供了一种基于开源内核的无状态的泛洪请求攻击过滤方法,通过本机制可以识别出攻击地址和合法地址,并对攻击地址发送的数据包进行阻挡,对合法地址的请求予以放行,在防范攻击的情况下,尽可能保证网络服务。技术方案本发明的方法是一种算法型的方法,通过结合linux中iptables框架和提出的优化后的cookie算法,提供无状态的基于synflood的智能防范过滤方法,利用改进后的cookie方法利用较小的资源消耗,实现对恶意攻击的过滤。Iptables:Iptables框架是Linux2.4以后内核版本采用的防火墙框架,可以通过设定规则,对协议栈的数据流进行控制。iptables是由链和表组成的,基本的链包括input链,output链,forward链。在每一条链中,根据功能需求可以定义一些操作,这些操作是通过几个表来实现的mangle表,nat表还有filter表。最终可以实现对数据的过滤,nat操作以及其他的防火墙过滤控制功能。SYNCookie:SYNCookie这个概念最早由D.J.Bernstain和EricSchenk发明,并在linux内核中实现,它通过一个加密算法(在linux2.4内核中使用的MD5加密算法),在下一次返回时判断其有效性,这是一种被动的方法,在攻击强度较高的时候,频繁的计算cookie值将使系统也陷入瘫痪。无状态无状态的方式在检测请求联接方是否非法攻击的时候,并不保存其所有参数,而是生成了一个cookie值,利用我们提出的算法来维护这一个cookie库。一.体系结构基于Linux内核的无状态的SYN—Flood过滤器可以分为三部分总体框架;cookie库管理维护;iptables操作模块。下面是个部分的功能介绍总体框架总体框架实现了对整个过滤流程的数据流向的控制和决策首先取出所有ip_queue队列中的syn包和rst包,若是syn包则生成一个cookie值,并想发起端发送一个ack报文;若是rst包将取出包头中的ack_seq域值,到cookie库中寻找,若找到则将向iptables模块发送消息,将rst包的源ip地址加入可通过队列。cookie库管理维护cookie库首先是提供了一些cookie相关的操作生成cookie,査询cookie,删除cookie。其次还有一个定时维护的功能,因为在攻击发生时,syn包的数量非常庞大,相对应产生cookie的数量也是非常庞大的,而且攻击主机不会回应过滤器发送的ack探测报文。所以规定了一个时间间隔,在间隔后将会删除cookie库中过期的cookie值,并且将对应的发送方的ip地址传递给iptables操作模块,设置为不可通过队列。iptables操作模块过滤器将部分数据流控制借助了iptables实现,定义了两个自定义队列,一个可通过队列,一个不可通过队列,还有一个是缺省的传入到用户空间的队列,这样协议栈的数据流将首先通过不可通过队列的检查,然后是可通过队列的检查,最后传入空间的将是未定的syn包和rst包。同时在队列数量变得庞大的时候利用聚集方式优化,将不可通过列表以网段为单位定义。二.工作流程在DDoS的防范中有很多方案,但是均有缺点,最主要的是缺乏主动性和资源消耗大。一种基于Linux内核的无状态的SYNFlood过滤器,是一种主动探测的防范方法,在设计过滤器的过程中,利用了cookie和iptables队列的优化方案,是过滤器保持较高的效率。使用c,0++作为开发语言,过滤器的工作流程如下-步骤l:初始化开源防火墙过滤的规则列表,生成白名单和黑名单,将所有请求报文和复位报文传入用户空间;步骤2:主控模块将区别请求报文和复位报文分别处理;步骤3:对请求报文计算出Cookie值,添加到文本文件库中,并向报文发送源回发一个确认报文,其中,将刚计算出的信息值作为确认报文的序号值;步骤4:对复位报文,取出其确认号值,减一后到文本文件库中查找,如果査找成功,则通知防火墙操作模块将发送者地址添加到白名单中,否则,将添加到黑名单中,步骤5:文本文件库维护模块每隔时间间隔t删除过期的信息记录,并通知防火墙操作模块将发送源的地址添加到黑名单中,步骤5:防火墙操作模块在黑名单或者白名单中表项达到很大的时候,对表项进行聚集,对防火墙过滤表进行优化,以提高过滤的性能,步骤6:在发出停止过滤命令后,防火墙模块需要对所有的列表进行清空,并停止内核过滤模块功能,过滤方法结束。对文本文件库维护和防火墙过滤表的优化的方法为文本文件库的维护1)初始化特征库,这是一个段间有序,段内无序的数据结构,通过取时间戳的八位以秒为单位,作为段序号,这样段与段之间讲是以秒为单位时间递增的顺序,2)文本文件库的更新,设置刷新线程,刷新线程指向文本文件库段首,根据设定的生存值t秒,文本文件库开始工作开始,在t秒后从段首更新,将段内的文本文件库的地址和端口号向防火墙操作模块发送消息,将其设为不可通过地址,并清空表项,这样刷新线程在t秒后,将每隔一秒向指针移向下一段,实现更新;对防火墙过滤表的优化通过对实际基于泛洪请求的攻击工具了解,发现大多数有效的攻击数据报文都是采用伪数据包地址,且都基于10至80之间的目的端口号。在防火墙操作模块对规则的生成上,将数据包地址和端口号结合,这样首先在过滤开始设置好规则链表项,将大大有利于规则过滤效率的提高,规则链中的一个规则包含协议类型、源端口号、目的端口号等域值,策略的思想就是基于协议类型和端口号来实现规则的快速搜索匹配,在增加规则预处理时间的条件下,达到防火墙工作效率的最优化。下面讲对cookie库定时维护和iptables优化的方法流程做重点说明1.cookie库维护整体CookieLib库的设计需要满足以下条件(1)满足大容量的数据存储要求;(2)需要给Cookie计时,当Cookie超时时,会发给过滤规则生成器一个信号,将禁止通过的IP地址放入到内核的链表中(3)査找、删除、添加工作需要快捷和灵活的措施。库的设计分为两个主要任务(1)Cookie的排序;(2)定时刷新。为了更好地完成定时刷新的任务,我们提出了将整个Cookie库按时间片分段,段间有序,段内无序;在定时刷新时,只需要对指定的时间段刷新就可以了,不需要对整个Cookie库进行刷新,例如SetTimer(l)设置定时刷新的时间间隔为l秒钟,sem_wait(thread—arg.pSemshare)利用信号量将线程执行时间停顿1秒钟。暂且将Cookie库分为256个小段,每一个小段存储该1秒钟时间内处理计算的信息,在超过了256/60分钟以后,就将该小段里的内容作为超时的信息处理。因此,这需要在对Cookie库的添加、删除操作方面引入信号的同步机制,每过l秒钟,就将要处理的Cookie库段序号指针加1。我们提出了一种基于信号量的处理方式,按照秒为时间单位,将时间因素与空间因素紧密结合起来,达到两者的统一。我们约定延迟N秒表示系统设定的信息超时时间。刷新线程在添加线程N秒后执行当前链表内容,这也就完成了定时刷新的工作,同时大大减少了信息的处理量。(当然,N的取值也有一定的限制,就是不能大于链表的最大数,即256)。2.iptables优化方案通过对实际的SYN-Flood攻击工具的了解,发现大多数有效的攻击数据报文都是采用伪IP地址,数据包数量大,且都基于10至80之间的目的端口号。因此,在本项目基于Linux实验平台的操作系统中,首先在过滤开始设置好规则链表项,将大大有利于规则过滤效率的提高。规则链中的一个规则包含协议类型、源端口号、目的端口号等域值。策略的思想就是基于协议类型和端口号来实现规则的快速搜索匹配,在增加规则预处理时间的条件下,达到防火墙工作效率的最优化。有益效果本发明方法提出了一种基于Lhmx内核的无状态的SYN—Flood过滤器设计方案,应用于防范基于synflood的DDoS攻击防火墙技术。通过本发明提出的方法可以将过去的被动防范变为主动探测,并实时设定过滤方案,能有效地过滤攻击,保证网络服务,具有较高的智能性和有效性,并且无状态的特点具有较小的资源消耗。下面我们给出具体的说明1.智能性在该方案中,我们设计了cookie算法,并且生成了一个具有自动更新能力的智能Cookie库,借助tcp协议通信规则对发送方进行探测,确定其身份的合法性后建立连接,这样使过滤器具有智能识别的功能,不仅仅是过滤。2.主动性在以往的设计中,对于DDoS的攻击都是被动的防御,而在我们的过滤器中,根据我们制定的规则将动态的将认定为非法的地址和认定为合法的地址加入过滤列表中,这样避免了重复处理,使攻击的相同的syn包,不必进行内容进一步分析,而是直接丢弃,这样可以抵御高强度的攻击。具有主动性。3.有效性经过试验,在模拟的DDoS攻击环境中,在检测到攻击启动过滤器后,能够有效地防御DDoS攻击,并且使系统消耗保持在一个较低的开销上,具有较好的防御效果。4.低消耗性过滤器在认定发送方身份非法后不会再建立cookie,而是放入非法列表中,这样减少了下一次的处理开销,可以使过滤器能够抵御高强度的攻击。同样低消耗,也可以保证使网络服务响应合法的请求。5尽可能保证网络服务要保证网络服务首先要能告诉的处理攻击的数据包,过滤器的有效性能在探测到非法后对以后的攻击,这样以较小的开销处理非法的数据报,尽可能的保证到网络的连接。图1是基于Linux内核的无状态的SYN_Flood过滤器数据流逻辑结构,图2是基于Linux内核的无状态的SYN—Flood过滤器模块设计,图3是Cookie库结构设计,图4是用户空间处理流程,图5是结合端口的iptables过滤表结构。具体实施方式典型的DDoS利用的是三层结构进行攻击。中心控制台是攻击者所在主机,攻击者首先将侵入网络中若干主机作为攻击的代理控制台,一个代理控制台再直接攻击主机,这些主机都分布在网络中,地理位置各不相同。以下我们模拟一个网络基于synflood的DDoS攻击情况。主机A是服务器,主机B是网关,通过九台电脑三层结构的一个典型的DDoS攻击网络,对主机A提供的网络服务(网站访问)进行攻击,网关上的B在检测到DDoS攻击后启动过滤模块,识别攻击和正常的网络数据包,并进行过滤处理。攻击端开始攻击步骤如下1攻击者所用的计算机是主控台S,主控台操纵整个攻击过程。主控台在因特网中搜寻可供侵入的主机,在部署后将使用命令控制整个攻击过程。2主控台非法侵入控制网络上不同地点的三台主机sl,s2,s3,作为攻击的主控端,并在主控端上安排相应的通信程序,完成主控台和主控端之间的服务通信以及主控端和下一级攻击代理的指令通信。3主控台侵入网络中的一批主机cl-c6,这一批主机是攻击的直接执行者,攻击者在侵入主机后,将安装特定通信程序,以及攻击程序。4主控台S向主控端发出攻击命令,主控端向攻击执行主机cl-c6发出攻击命令,向B发起syn—flood攻击。网关B部署动作如下1.B在开启过滤器之前,对于网络服务来说是透明的,并不对数据包内容进行检査,而是对网络流量进行探测,当检测器认定发生了DDoS攻击后,将启动过滤器。2.过滤器开始工作,首先启动iptables服务,并初始化iptables,将所有的syn包和rst包从协议栈截获,将其传入主控模块3主控模块将iptables传入的数据包首先进行简单的判断是SYN包还是RST包,SYN包则取出相关域,通过加密算法生成一个24位值,并将到达时间作为低八位,生成一个32位的cookie值,添加到Cookie库中,并生成一个ACK报文,将Cookie值填入报文的seq字段向发送方发送。而如果是RST包,则取出其ack一seq值减一后,到cookie库中寻找匹配,如有匹配值则将cookie项删除,并且将发送端ip地址添加到白名单中。4cookie库通过专门的模块进行维护,设定了时间间隔t,对超时的cookie项删除,并且将ip地址加入黑名单,这样再次收到同样发送地址的攻击包时,就在iptables处过滤,不会再进行处理。5在iptables的不可通过列表很大的时候,对其进行优化聚集。6发现攻击停止后,清空规则表,根据命令可以停止过滤器的工作。7关闭过滤器。cookie库维护规则1在每次调用cookie生成函数后,产生一个32位的cookie值,其中24位通过加密算法得到,8位是该数据包到达的时间戳值,我们以八位时间戳值作为cookie库段序关键字。即,具有相同时间戳(精确到秒)的数据包生成的cookie值在同一个段内,段内无序,段间有序。3刷新线程指向cookie库段首,根据设定的生存值t秒,从cookie库开始工作开始,在t秒后从段首更新,将段内的cookie库的IP地址和端口号向iptables操作模块发送消息,将其设为不可通过IP地址,并清空表项。这样刷新线程在t秒后,将每隔一秒向指针移向下一段,实现更新。4对于收到的RST报文,取出其seq值减一后,取低八位査找cookie库分段,找到对应分段后,再在段内利用剩余24位值查找,找到对应的cookie项后,将删除该项,并向iptables操作模块发送消息,将其设为可通过IP地址。其中,3中的线程在cookie库工作以后就回自行启动,而其他的规则需要通过主控模块调用实现。权利要求1.一种基于开源内核的无状态的泛洪请求攻击过滤方法,其特征在于该过滤方法分为以下步骤步骤1初始化开源防火墙过滤的规则列表,生成白名单和黑名单,将所有请求报文和复位报文传入用户空间;步骤2主控模块将区别请求报文和复位报文分别处理;步骤3对请求报文计算出Cookie值,添加到文本文件库中,并向报文发送源回发一个确认报文,其中,将刚计算出的信息值作为确认报文的序号值;步骤4对复位报文,取出其确认号值,减一后到文本文件库中查找,如果查找成功,则通知防火墙操作模块将发送者地址添加到白名单中,否则,将添加到黑名单中,步骤5文本文件库维护模块每隔时间间隔t删除过期的信息记录,并通知防火墙操作模块将发送源的地址添加到黑名单中,步骤5防火墙操作模块在黑名单或者白名单中表项达到很大的时候,对表项进行聚集,对防火墙过滤表进行优化,以提高过滤的性能,步骤6在发出停止过滤命令后,防火墙模块需要对所有的列表进行清空,并停止内核过滤模块功能,过滤方法结束。2.根据权利要求1所述的基于开源内核的无状态的泛洪请求攻击过滤方法,其特征在于对文本文件库维护和防火墙过滤表的优化的方法为文本文件库的维护1)初始化特征库,这是一个段间有序,段内无序的数据结构,通过取时间戳的八位以秒为单位,作为段序号,这样段与段之间讲是以秒为单位时间递增的顺序,2)文本文件库的更新,设置刷新线程,刷新线程指向文本文件库段首,根据设定的生存值t秒,文本文件库开始工作开始,在t秒后从段首更新,将段内的文本文件库的地址和端口号向防火墙操作模块发送消息,将其设为不可通过地址,并清空表项,这样刷新线程在t秒后,将每隔一秒向指针移向下一段,实现更新;对防火墙过滤表的优化通过对实际基于泛洪请求的攻击工具了解,发现大多数有效的攻击数据报文都是采用伪数据包地址,且都基于10至80之间的目的端口号。在防火墙操作模块对规则的生成上,将数据包地址和端口号结合,这样首先在过滤开始设置好规则链表项,将大大有利于规则过滤效率的提高,规则链中的一个规则包含协议类型、源端口号、目的端口号等域值,策略的思想就是基于协议类型和端口号来实现规则的快速搜索匹配,在增加规则预处理时间的条件下,达到防火墙工作效率的最优化。全文摘要基于开源内核的无状态的泛洪请求攻击过滤方法分为以下步骤初始化开源防火墙过滤的规则列表,生成白名单和黑名单;主控模块将区别请求报文和复位报文分别处理;对请求报文计算出Cookie值,添加到文本文件库中,并向报文发送源回发一个确认报文;对复位报文,取出其确认号值,减一后到文本文件库中查找;文本文件库维护模块每隔时间间隔t删除过期的信息记录,并通知防火墙操作模块将发送源的地址添加到黑名单中;防火墙操作模块在黑名单或者白名单中表项达到很大的时候,对表项进行聚集;在发出停止过滤命令后,防火墙模块需要对所有的列表进行清空,并停止内核过滤模块功能,过滤方法结束。通过使用本发明方法可以达到防御DDoS攻击的目标。文档编号H04L29/06GK101217547SQ200810019280公开日2008年7月9日申请日期2008年1月18日优先权日2008年1月18日发明者任勋益,张登银,李惠娟,王汝传,祝世雄申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1