一种智能防御DDoS攻击的方法和装置
技术领域
本发明涉及计算机网络安全技术领域,具体地说,本发明涉及一种智能防御DDoS攻击的方法和装置。
背景技术
随着互联网技术的发展,各类网络应用深刻改变着人们的生活。与此同时,各类互联网商业模式逐渐成熟,大量资金投入到互联网领域,在全球范围掀起了互联网热潮。很多网站开始盈利,其中很多非法网站利润巨大,造成同行之间互相攻击,还有一部分人利用网络攻击来敲诈钱财。目前,如何保障网络的安全成为一个非常重要的研究领域。
分布式拒绝服务攻击(Distributed Denial of Service)简称DDoS,是指利用一批受控制的机器向某一服务器或服务器群发起攻击,这种来势凶猛的攻击令人难以防备,具有较大的破坏性。黑客利用网络上已被攻陷的电脑作为“僵尸”,向某一特定的目标电脑发动密集式的“拒绝服务”式攻击,用以把目标电脑的网络资源及系统资源耗尽,使之无法向真正正常请求的用户提供服务。黑客通过将一个个“肉鸡”组成僵尸网络,就可以发动大规模DDoS或SYN洪水网络攻击,或者将“肉鸡”们组到一起进行带有利益的刷网站流量、Email垃圾邮件群发、瘫痪预定目标以及受雇攻击竞争对手等商业活动。DDoS最早可追述到1996年,在中国2002年开始频繁出现,2003年已经初具规模。
DDoS攻击可以具体分成以下两种形式:带宽消耗型以及资源消耗型。它们都是透过大量合法或伪造的请求占用大量网络以及器材资源,以达到瘫痪网络以及系统的目的。
(1)带宽消耗型攻击。这种类型的攻击主要是指通过僵尸程序直接向受害者系统发送大量流量或者利用广播等放大攻击从而恶意占用受害者系统的带宽。这种类型的攻击主要包括UDP floods、ICMP floods、Ping炸弹、泪滴攻击等。
(2)资源消耗型攻击。这种类型的攻击主要是通过僵尸主机向目标服务器发送大量的看似合法的请求,导致服务器为每个请求分配相应的计算资源,但这些资源却得不到释放,从而耗尽服务器资源。这种攻击方式主要包括SYN flood、LAND attack、CC攻击、僵尸网络攻击以及应用级洪水攻击。
目前DDoS的防御方法主要有以下几种:
(1)手工防护。此方式主要包括系统优化和网络追查,从而提高系统本身对DDoS攻击的响应能力并且追溯攻击源头。
(2)退让策略。受害者通过购买硬件的方式来提高系统抗DDoS的能力,但这不能从根本上解决问题,攻击者可以通过提高攻击流量来使这种方法失效。
(3)路由器实行安全措施。通过路由器可以设置某些ACL及uRPF等方式过滤掉一些非法流量,但DDoS攻击可以通过采用地址欺骗技术来突破这些防护措施。
(4)防火墙。虽然防火墙是常用的安全产品,但防火墙缺乏检测DDoS攻击的能力,并且需要高强度的检查开销。在某些情况下,防火墙甚至成为DDoS攻击的目标而导致整个网络的拒绝服务。
(5)入侵检测。传统的入侵检测系统是基于规则的,需要对协议会话进行还原,但大部分DDoS攻击采用基于合法数据包的攻击流量,IDS很难对这些攻击有效检测。同时IDS系统一般只对攻击进行检测,无法阻断DDoS攻击。
总之,当前存在的防御DDoS攻击方法都存在着一定的缺陷,难以应对当今不断出现且日益猖獗的DDoS攻击,迫切需要一种开销小且能够有效全面地防御各类DDoS攻击的解决方案。
发明内容
本发明的目的是提供一种开销小且能够有效全面地防御各类DDoS攻击的解决方案。
为实现上述发明目的,本发明提供了一种智能防御DDoS攻击的方法,包括下列步骤:
1)记录每个源IP所对应的数据流的数据流量特征或者每个源IP与目的IP的IP对所对应的数据流的数据流量特征;所述数据流量特征包括:数据流的日平均流量字节数,日流量标准差,数据包平均字节数;
2)对于每个数据流,根据数据流量特征,计算该数据流的可信度;
所述可信度S=ω1θ1+ω2θ2,ω1+ω2=1,ωi≥0,(i=1,2)
其中,
ω1,ω2为加权系数,所述数据包字节数基线是所有正常数据流的所有数据包的平均字节数;
3)实时捕获数据包,提取其IP信息,并根据该IP信息所对应的数据流的可信度判断是否放行该数据包。
其中,所述步骤1)中,同时记录每个源IP所对应的各数据流的数据流量特征和每个源IP与目的IP的IP对所对应的数据流的数据流量特征。
其中,所述步骤1)中,使用ip-pair结构来记录每个源IP访问服务器群中的某个特定服务器的交互信息的数据流特征,使用ip-record结构来记录每个源IP访问整个服务器群的交互信息的数据流特征;所述步骤2)还包括:分别计算各个源IP对应于整个机群的可信度和各个源IP对于目的IP的可信度,将各个源IP对应于整个机群的可信度存储到ip-record结构中,将各个源IP对于目的IP的可信度存储到ip-pair结构中。
其中,所述步骤1)中,所述ip-pair结构和所述ip-record结构组织成二级hash表形式,并维护在内存中。
其中,所述步骤1)包括下列子步骤:
步骤11)获取数据包;
步骤12)根据数据包的网络层的源IP查找与该源IP所对应的ip-record结构,更新对应的ip-record结构中的数据流量特征,同时进一步根据数据包的网络层目的IP查找相应的ip-pair结构,更新对应的ip-pair结构中的数据流量特征。
其中,所述步骤2)中,加权系数ω1,ω2采用真实网络环境中捕获样本数据后进行样本学习获得。
其中,所述步骤3)还包括:根据步骤2)所计算的可信度建立白名单,根据该白名单对数据包进行拦截或者放行。
其中,所述步骤3)还包括:根据服务器的资源占用情况,自动开启DDoS智能防御功能,在开启DDoS智能防御功能后,根据可信度对数据包进行过滤。
其中,所述步骤3)包括下列子步骤:
301)读取预先配置的资源利用阈值;
302)监测服务器的资源利用率;
303)判断当前服务器的资源利用率是否超出阈值,如果是,进入步骤304),否则,回到步骤302)继续监测服务器的资源利用情况;
304)捕获数据包,提取其中IP地址信息;
305)判断白名单是否填满,如果否,执行步骤306),如果是,执行步骤307);
306)将当前数据包所对应的IP地址信息加入白名单,然后直接执行步骤312);所述IP地址信息包括源IP和目的IP;
307)判断采用何种防御模式,如果是共同模式,执行步骤308),如果是每服务器模式,执行步骤309);
308)提取当前数据包所对应的源IP所对应的ip-record结构中的统计信息,然后执行步骤310);
309)提取当前源IP和目的IP地址对所对应的ip-pair结构中的统计信息,然后执行步骤310);
310)判断所提取的统计信息中的可信度是否大于白名单中的最小可信度,如果是,继续执行步骤311),如果否,执行步骤313;
步骤311)用当前的源IP或者源IP和目的IP地址对替换原白名单中的可信度最小的源IP或者源IP和目的IP地址对;
步骤312)允许当前数据包通过;
步骤313)暂时不允许当前数据包通过。
其中,所述步骤313)还包括下列子步骤:
3131)判断所提取的统计信息中的可信度是否等于白名单中的最小可信度,如果是,执行步骤3132),否则执行步骤3133);
步骤3132)判断当前数据包源IP的总计流量字节数是否大于白名单中可信度最小的源IP的总计流量字节数,如果是,执行步骤311),如果否,执行步骤3133);
步骤3133)丢弃当前数据包。
本发明还提供了一种相应的智能防御DDoS攻击的装置,包括:
数据包统计模块,用于记录每个源IP所对应的数据流的数据流量特征或者每个源IP与目的IP的IP对所对应的数据流的数据流量特征;所述数据流量特征包括:数据流的日平均流量字节数,日流量标准差,数据包平均字节数,以及计算数据流的可信度;所述可信度S=ω1θ1+ω2θ2,ω1+ω2=1,ωi≥0,(i=1,2)
其中,
ω1,ω2为加权系数,所述数据包字节数基线是所有正常数据流的所有数据包的平均字节数;
以及防御模块,用于根据数据流的可信度判断是否放行相应的数据包。
与现有技术相比,本发明具有下列技术效果:
1、本发明开销小,效率高。
2、本发明能够有效全面地防御各类DDoS攻击,适用面广且准确性高。
3、本发明能够在攻击真正生效之前就能进行防御,可以有效保护真实用户的服务请求。
4、本发明配置方式简单,易于操作。
附图说明
图1示出了本发明一个实施例的智能防御DDoS攻击的方法的流程示意图;
图2示出了本发明一个实施例的智能防御DDoS攻击的方法中利用白名单的方法对数据包进行过滤的流程示意图;
图3示出了的本发明一个实施例的智能防御DDoS攻击的装置的方框图。
具体实施方式
为了防御DDoS攻击,发明人对DDoS攻击的流量特征做了深入研究,并将各类DDoS攻击产生的流量分为“协议栈”级攻击流量和应用级攻击流量。其中,“协议栈”级攻击主要包括SYN flood、UDP floods、Ping炸弹、泪滴攻击等。应用级攻击主要包括cc攻击,应用级洪水攻击等。DDoS攻击流量的特点主要表现为突发性,即短时间内会有大量的请求。同时,“协议栈”级攻击流量一般不承载应用层数据,数据包大小相比正常数据包偏小。应用级攻击虽然攻击源IP分布非常广,单个源的交互数据量相对较小,但访问时挑选的资源非常消耗服务器性能。从上述分析可以看出,如果找出一系列能够较好地描述上述DDoS攻击流量的数据流量特征进行建模,并利用样本库训练模型参数,就可以得到能够识别出DDoS攻击的识别模型,进而对DDoS攻击进行有效防御。并且,这种防御方式只需获取数据流量特征即可,不需要检测数据包内容,因此具有开销小的优势。
下面结合附图和实施例对本发明做进一步地说明。
根据本发明的一个实施例,提供了一种智能防御DDoS攻击的方法,如图1所示,该方法包括下列步骤:
步骤1:基于IP信息记录各数据流的数据流量特征。本实施例中,数据流有两类,一类是指用户到服务器机群整体的数据流,此时只需要用户一端的源IP即可标识该类数据流,另一类是用户到服务器机群中特定服务器的数据流,需要用源IP和目的IP组成的IP对(下文中多处简称为IP对)来标识该类数据流。
本实施例中,每个源IP的数据流量特征包括:该源IP所对应的数据流的数据包的日平均流量字节数,日流量标准差,数据包平均字节数。每个IP对的数据流量特征包括:该IP对所对应的数据流的数据包的日平均流量字节数,日流量标准差,数据包平均字节数。在别的优选实施例中,每个源IP的数据流量特征还可以包括该源IP所对应的数据流的数据包的统计日长,总计流量字节数,统计日内总流量,数据包总数等。每个IP对的数据流量特征还可以包括该IP对所对应的数据流的数据包的统计日长,总计流量字节数,统计日内总流量,数据包总数等。
步骤2:根据数据流量特征,基于识别模型,计算各源IP和各IP对的可信度。
根据本发明的一个实施例,识别模型为线性加权模型,
可信度S=ω1θ1+ω2θ2,ω1+ω2=1,ωi≥0,(i=1,2)
其中,
“日流量标准差”可以描述DDoS攻击流量的突发性,即短时间内会有大量的请求,“数据包平均字节数”可以描述“协议栈”级攻击流量数据包大小相比正常数据包偏小的特点,“日平均流量字节数”可以描述应用级攻击单个源的交互数据量相对较小的特点。综上,θ1指标可以刻画DDoS攻击流量的突发性与单源流量较小的特点,θ2指标可以刻画DDoS攻击流量的单数据包较小的特点。θ2指标中,数据包字节数基线是所有源IP(不包括被拦截的源IP)对应的所有数据包的平均字节数,它用于对θ2指标进行归一化。
本步骤中,分别计算各个源IP对应于整个机群的可信度和各个源IP对于目的IP(即特定服务器)的可信度,下文中将各个源IP对于目的IP(即特定服务器)的可信度称为IP对的可信度。
权重ω1,ω2可以从真实网络环境中捕获样本数据,使用多元线性回归算法进行样本学习获得。根据本发明的一个实施例,ω1,ω2的计算步骤如下:第一步,从真实网络环境中捕获(采用固定时间段或采集量固定大小等方式以1:n的采样比)样本数据;第二步,抽取出具有DDoS攻击特征(人工识别或根据字段及会话特征使用程序自动识别)的流量数据;第三步,计算每个IP地址的流量统计值;第四步,将统计数值作为输入,是否为DDoS攻击作为输出,然后使用多元线性回归算法进行样本学习,最终确定权重。多元线性函数为y=b+S,其中b为常数项,S为可信度得分。在y为1时表示为DDoS攻击,在y为0时表示非DDoS攻击。在某移动通信公司实际部署过程中,在统计日长为5的情况下,经过实验确定权重值分别为ω1=0.75,ω2=0.25,b=-0.41,此时能够取得不错的识别准确率。
步骤3:实时捕获数据包,提取其源IP或其IP对,根据该源IP或IP对的可信度对该数据包进行拦截。本实施例中,根据步骤1、2所计算的各源IP的可信度建立白名单,根据该白名单对数据包作出相应处理(拦截或者放行)。本发明中,可以单独基于源IP统计数据流特征,计算和存储其可信度,并根据源IP的可信度进行数据包拦截,从而把机群作为一个整体进行DDoS防御,也可以单独基于IP对统计数据流特征,计算和存储其可信度,并根据IP对的可信度进行数据包拦截,从而对服务器机群中每个特定服务器进行DDoS防御,还可以同时基于源IP和IP对统计数据流特征,计算和存储其可信度,然后根据用户的选择根据源IP或IP对的可信度进行数据包拦截。
在上述实施例的基础上,本发明还提供了另一个优选实施例。该优选实施例中,上述步骤1采用特定的存储结构对来自各源IP的数据流量特征进行存储。其中,对于每个用户访问服务器群中的特定服务器,使用ip-pair结构来记录该用户与每台服务器的交互信息,这种结构用于存储每服务器模式下的白名单信息。类似地,使用ip-record结构来记录用户与整个服务器群的交互信息,这种结构用于存储共同模式下的白名单信息。为了实现快速查找,将上述ip-pair结构和ip-record结构组织成二级hash表形式,并维护在内存中,以定期进行老化扫描。其中,ip-record的hash表根据源IP地址hash,在每一个ip-record的结构中还包含二级hash结构ip-pair。其中ip-pair是根据配置的服务器地址形成的IP键值对,即该结构用于记录用户与服务器群中某一台机器的交互信息。
进一步地,步骤1包括下列子步骤:
步骤11:获取数据包。
具体实现上,可以在防御链路上设置防御点捕获数据包。如果防御点在速度不是很快的链路上,可以使用Libpcap库通过网卡进行抓包,如果防御点所在的链路速度较快,则使用抓包效率更高的板卡实时捕获网络数据包。
步骤12:根据数据包的网络层信息(即源IP、目的IP等),查找与该用户所对应的ip-record结构(若没有则创建新的ip-record结构,同时创建对应的ip-pair结构),更新对应的ip-pair结构中的统计信息(包括统计日长,总计流量字节数,统计日内总流量,日平均流量字节数,日流量标准差,数据包总数,数据包平均字节数),并更新该用户对应的ip-record结构中的统计信息(包括统计日长,总计流量字节数,统计日内总流量,日平均流量字节数,日流量标准差,数据包总数,数据包平均字节数)。同时,该模块根据预先配置的最小数据包数阈值及包统计更新时间间隔定时扫描老化hash表。老化hash表是指根据预设的时间间隔,将hash表中存在时间长于该时间间隔的元素删除。相应地,步骤2中,将各个源IP对应于整个机群的可信度存储到ip-record结构的相应位置。将IP对的可信度存储到ip-pair结构的相应位置。
进一步地,步骤3中,根据服务器的资源占用情况,自动开启DDoS智能防御功能,然后根据可信度对数据包进行过滤。
本优选实施例中,步骤3中采用server-stat结构来记录每台服务器上带宽、内存、CPU三类资源的资源利用情况,采用cluster-stat结构记录服务器群总体带宽、内存、CPU三类资源的利用情况。利用驻留在服务器群里面每台服务器上的统计程序,根据管理员设定的时间间隔来定时向防御进程9091号端口发送server-stat信息;防御进程在9091号端口上监听发送过来的server-stat信息,并定时将各个服务器发来的信息汇总后填充cluster-stat结构。
本优选实施例中,步骤3中还包括在开启DDoS攻击防御功能后,利用白名单的方法对数据包进行过滤,如图2所示,具体包括下列子步骤:
步骤301:读取预先配置的资源利用阈值。
步骤302:监测服务器的资源利用率。
步骤303:判断当前服务器的资源利用率是否超出阈值,如果是,进入步骤303,否则,回到步骤302继续监测服务器的资源利用情况。
步骤304:捕获数据包,提取其中IP地址信息。
步骤305:判断白名单是否填满,如果否,执行步骤306,如果是,执行步骤307。其中,白名单的数目由管理员设定。
步骤306:将当前数据包所对应的IP地址加入白名单,然后直接执行步骤312。
步骤307:判断采用何种防御模式,如果是共同模式,执行步骤308,如果是每服务器模式,执行步骤309。
步骤308:提取当前IP地址所对应的ip-record结构中的统计信息,然后执行步骤310。
步骤309:提取当前IP地址所对应的ip-pair结构中的统计信息,然后执行步骤310。
步骤310:判断所提取的统计信息中的可信度是否大于白名单中的最小可信度。如果是,继续执行步骤311,如果否,执行步骤313。
步骤311:用当前的IP替换原白名单中的可信度最小的IP。
步骤312:允许当前数据包通过。
步骤313:判断所提取的统计信息中的可信度是否等于白名单中的最小可信度,如果是,执行步骤314,否则执行步骤315。
步骤314:判断当前数据包IP的总计流量字节数是否大于白名单中可信度最小的IP的总计流量字节数,如果是,执行步骤311,如果否,执行步骤315。
步骤315:丢弃当前数据包,实现对该数据包的拦截。
上述方案中,首先根据管理员设定的白名单数目,依照数据包到达顺序利用插入排序算法依次填充并直至填满白名单,这样形成的就是排序后的白名单,随后根据防御模式进行相应的处理。该DDoS防御方法不对数据包进行检查,节约了计算资源,所以可以应用于高速网络环境中。并且,使用插入排序算法,首先,可以保证可信度最小的元素总是在第一个位置,这样可以直接进行白名单替换,减少查找时间。其次,在更换白名单后可以保证在最差O(n)时间复杂度下完成排序操作。因此,上述步骤301至315的方法可以避免系统进行大量的排序运算,效率较高,同时可以防止处于非活跃状态的IP地址被加入白名单中,提高白名单的使用率。
进一步地,在上述实施例的步骤1之前,还可以包括读取管理员设置的配置文件的步骤,该步骤获取服务器群IP地址(组)信息,同时获取包统计更新时间间隔、最小数据包数阈值、服务器资源利用统计更新时间间隔、防御模式、资源的占用阈值(触发防御功能开启的带宽、内存、CPU的占用阈值)及白名单数目等参数。
根据本发明的另一个实施例,还提供了一种相应的智能防御DDoS攻击装置,如图3所示,该装置包括配置读取模块、数据包获取模块、数据包统计模块、服务器资源利用情况统计模块和白名单模块。
配置读取模块,用于读取管理员设置的配置文件,获取服务器群IP地址(组)信息,同时获取包统计更新时间间隔、最小数据包数阈值、服务器资源利用统计更新时间间隔、防御模式、三类资源(带宽、内存、CPU)的占用阈值及白名单数目等参数。
数据包获取模块,用于捕获数据包并将其交给数据包统计模块继续处理。如果防御点在速度不是很快的链路上,该部分可以使用Libpcap库通过网卡进行抓包。如果防御点所在的链路速度较快,则该部分应该使用抓包效率更高的板卡实时捕获网络数据包。无论是采用网卡还是板卡,都将捕获的数据包交给数据包统计模块继续处理。
数据包统计模块,用于根据数据包的网络层信息(即源IP、目的IP等),查找与该用户所对应的ip-record结构(若没有则创建新的ip-record结构,同时创建对应的ip-pair结构),更新对应的ip-pair结构中的统计信息(包括统计日长,总计流量字节数,统计日内总流量,日平均流量字节数,日流量标准差,数据包总数,数据包平均字节数,可信度得分),并更新该用户对应的ip-record结构中的统计信息(包括统计日长,总计流量字节数,统计日内总流量,日平均流量字节数,日流量标准差,数据包总数,数据包平均字节数,可信度得分)。同时,该模块根据配置的最小数据包数阈值及包统计更新时间间隔定时扫描老化hash表。
服务器资源利用情况统计模块主要包含两部分,一部分是驻留在服务器群里面每台服务器上的统计程序,该部分根据管理员设定的时间间隔来定时向我们的防御进程9091号端口发送server-stat信息;另一部分是防御进程在9091号端口上监听发送过来的server-stat信息,并定时将各个服务器发来的信息汇总后填充cluster-stat结构。
白名单模块,用于根据数据包统计模块、服务器资源利用情况统计模块的统计结果及管理员设定的资源占用触发阈值来判断是否开启DDoS攻击防御功能,并根据可信度设置白名单,进而基于白名单对数据包进行过滤。
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其它的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。