具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一提供一种检测网络攻击的方法,如图2所示,包括以下步骤:
步骤S201,接收数据包,获取所述数据包的相邻观察时刻的平均距离值的比较值;
步骤S202,对所述比较值进行累积和(Cumulative Sum,CUSUM)统计,获得累积和的统计量;
步骤S203,在预定的观察周期内,当所述CUSUM的统计量超过预先设定的阈值时,判定发生网络攻击。
其中网络攻击可以为DDoS Flooding攻击,发生DDoS Flooding攻击时,攻击者会发动大量的傀儡机发动攻击,主机数量巨大而且具有分布广泛性的特点,各个攻击主机的傀儡机的性能、网络链路的状况以及分布位置都会存在差异,DDoS Flooding攻击的发生也是一个渐变的、持续的过程。本发明实施例提出的DDoS Flooding检测方法,就是基于数据包的平均距离在正常状态下的稳定性,并运用CUSUM算法来检测DDoS Flooding攻击。CUSUM是在统计过程控制中常用的算法,用来检测一个统计过程均值的变化,它基于似然比导出,被证明在检测小的漂移时有理想的效果。CUSUM需要随机序列的参数模型,用概率密度函数来监控序列,如果有变化发生,则随机序列的概率分布将会改变。CUSUM算法主要是累积明显比正常运行情况下的平均水平高的变量的值,即累积差异值,因此能够更准确地检测网络攻击,发生减小误报率;同时,算法简单,可以迅速地检测出网络攻击。
本发明实施例二提供的一种检测DDoS Flooding的方法,如图3所示,包括以下步骤:
步骤S301,检测引擎收集数据包,提取数据包中ip包的ttl值,并计算数据包的距离值,数据包的距离值d定义为(TTL初值-TTL终值),TTL是IP数据包IP报头的一个域,数据包每经过一个路由器,TTL的值就会减1,当TTL的值变成0时,路由器就会丢弃该数据包,这样就可以防止数据包在网络中无限的循环传递。数据包的距离值d还表明从发送端的边界路由器到受害主机所要经过的跳数。TTL的终值可以从收到的数据包中来读取,而TTL的初值则由操作系统来设定,取32,64,128,255中的一个,网络中的主机一般可以在30跳内到达,所以可以根据TTL的终值推来测出TTL的初值。
步骤S302,检测引擎根据网络流量的大小及主机的处理性能,设定一个观察时间间隔γ,即数据包的观察周期,统计该观察周期内到达受害主机的所有数据包的平均距离值,由于通常的DDoS攻击可以在14秒之内使得受害主机无法提供正常服务,因此该观察周期γ的选择必须小于14秒,在设定的过程中,观察周期γ的值设定的越小越好,观察周期γ可选择1-2秒。在到达设定的观察周期γ的周期后,检测引擎就将计算所有数据包的平均距离值,根据检测引擎观察到的一个特定时间段内的所有流入数据包的TTL值,计算出数据包的平均距离值,数据包的平均距离值就是对所有数据包的距离值求和,用所得出的结果除以数据包的个数。
步骤S303,检测引擎计算t+Δt时刻的平均距离值和t时刻的平均距离值的差值的绝对值,用dt+Δt表示t+Δt时刻的平均距离值,dt表示t时刻的平均距离值,Xt+Δt表示t+Δt时刻平均距离值的差值的绝对值,t表示数据包的一个观察时刻,取值为小于γ,Δt表示预定的时间间隔,可以为1秒,也可以为0.5秒,可以根据具体需要进行预先设定;在观察周期内,从0秒时刻开始,每相隔Δt时刻就是一个观察时刻,t+Δt时刻与t时刻是两个相邻观察时刻;t+Δt的取值为小于等于γ,则t+Δt时刻的平均距离值和t时刻的平均距离值的差值的绝对值Xt+Δt为:
Xt+Δt=|dt+Δt-dt|
在正常状态下,各个观察时刻的平均距离值d的值相差很小,由平均距离值d所组成的序列也是一个稳定的的序列,即Xt+Δt的值是基本稳定的。当发生DDoS攻击时,由于主机数量的巨大和分布的广泛性,d的值会发生较大的改变,Xt+Δt的值也会随之发生较大的改变。
步骤S304,检测引擎根据平均距离值的差值的绝对值Xt计算CUSUM统计量。令Yt=Xt-k,k取合适的值,Xt为t时刻平均距离值与上一时刻平均距离值的差值的绝对值,在正常情况下Yt<0,当发生异常时,Xt会发生较大的变化,导致Yt>0;令Zt=max{0,Zt-1+Yt},其中Z0=0,则Zt就是一个CUSUM统计量,CUSUM统计量就是将Y变量的各个时刻的正值累加起来,也就是将异常效应累加起来。参数k要根据正常情况和异常情况下包平均距离的差值来选择,根据历史记录或其他的历史经验,或者根据正常情况下包平均距离值的变化范围来确定。
步骤S305,在数据包的一个观察周期内,检测引擎判断CUSUM统计量Zt是否超出了预先设定的阈值h,如果超过了阈值h,转到步骤S306,如果没有超出阈值h,则转到步骤S307。h应根据要求的检测时间,即从异常产生到判断为攻击长短来具体选择,具体还应根据实际网络情况及误报率和漏报率之间的平衡做调整。
步骤S306,检测引擎进行报警,说明被检测对象遭到了DDoS Flooding的攻击。
步骤S307,检测引擎为正常状态,表明没有受到DDoS Flooding的攻击,结束这个观察周期,进入下一个观察周期,t清零,检测引擎重新进行检测。
可见,本实施例中,通过获取数据包的两个相邻观察时刻的平均距离值的差值的绝对值进行CUSUM统计,根据CUSUM统计值来判断是否发生DDoS Flooding攻击,可以准确快速的区分出正常的网络访问流的变化,减小误报率。
本发明实施例三的一种检测DDoS Flooding的方法,如图4所示,包括以下步骤:
步骤S401-步骤S402与步骤S301-步骤S302完全一样,在此不在赘述。
步骤S403,检测引擎计算t+Δt时刻的平均距离值和t时刻的平均距离值的比值,用dt+Δt表示t+Δt时刻的平均距离值,dt表示t时刻的平均距离值,Xt+Δt表示t+1时刻平均距离值与t时刻平均距离值的比值。则t+Δt时刻的平均距离值和t时刻的平均距离值的比值Xt+Δt为:
在正常状态下,各个观察时刻的平均距离值d的值相差很小,由平均距离值d所组成的序列则是一个稳定的的序列,即Xt+Δt的值也是基本稳定的。当发生DDoS攻击时,由于主机数量的巨大和分布的广泛性,d的值会发生较大的改变,Xt+Δt的值也会随之发生较大的改变。
步骤S404,在数据包的一个观察周期内,检测引擎根据平均距离值的比值Xt计算CUSUM统计量。令Yt=Xt-k,k取合适的值,Xt为t时刻平均距离值与上一时刻平均距离值的的比值与1的差值的绝对值,在正常情况下Yt<0,当发生异常时,Xt会发生较大的变化,导致Yt>0;令Zt=max{0,Zt-1+Yt},其中Z0=0,则Zt就是一个CUSUM统计量,即是将Y变量的各个时刻的正值累加起来,也就是将异常效应累加起来。参数k要根据正常情况和异常情况下包平均距离的差值来选择,根据历史记录或其他的历史经验,或者根据正常情况下包平均距离值的变化范围来确定。
步骤S405,检测引擎判断CUSUM统计量Z是否超出了预先设定的阈值h,如果超过了阈值h,转到步骤S406,如果没有超出阈值h,则转到步骤S407。h应根据要求的检测时间,即从异常产生到判断为攻击长短来选择,具体还应根据实际网络情况及误报率和漏报率之间的平衡做调整。
步骤S406,检测引擎进行报警,说明受害者遭到了DDoS Flooding的攻击。
步骤S407,检测引擎为正常状态,表明没有受到DDoS Flooding的攻击,结束这个观察周期,进入下一个观察周期,t清零,检测引擎重新进行检测。
可见,本实施例中,通过获取数据包的两个相邻观察时刻的平均距离值的比值的绝对值进行CUSUM统计,据CUSUM统计值来判断是否发生DDoSFlooding攻击,可以准确快速的区分出正常的网络访问流的变化,减小误报率。
本发明实施例还提供一种检测DDoS Flooding的设备,如图5所示,包括:
设定模块10,用于设定数据包观察周期。
平均距离值获取模块20,用于在设定模块10设定的观察周期内,每隔Δt获取数据包观察周期内的平均距离值,Δt表示预定的时间间隔,可以为1秒,也可以为0.5秒,可以根据具体需要进行预先设定;。
第一比较值获取模块30,用于根据平均距离值获取模块20得到的平均距离值,获取数据包的相邻观察时刻的平均距离值的差值的绝对值,其中相邻观察时刻指在观察周期内所有两个间隔Δt的时刻。
第一变量统计模块40,用于根据第一比较值获取模块30获取的数据包的两个相邻观察时刻的平均距离值的差值的绝对值与一预设值的差作为变量。
累加模块50,用于将第一变量统计模块40中得到的变量的各个观察时刻的正值累加,得到CUSUM的统计量。
判定模块60,用于在数据包的一个观察周期内,根据所述统计量累加模块50统计的CUSUM的统计量判定是否发生网络击,当所述CUSUM的统计量超过预先设定的阈值时,发生网络攻击,当所述CUSUM的统计量没有超过预先设定的阈值时,则没有发生网络攻击。
可见,本实施例中,通过对数据包的两个相邻观察时刻的平均距离值的差值的绝对值进行正值累加,即进行CUSUM统计,可以准确快速的区分出正常的网络访问流的变化,检测出网络攻击,减小误报率。
本发明实施例的另一种检测DDoS Flooding的设备,如图6所示,包括:设定模块10,平均距离值获取模块20,累加模块50,判定模块60,这些模块与上一个实施例功能相同,还包括
第二比较值获取模块70,用于根据平均距离值获取模块20得到的平均距离值,获取数据包的两个相邻观察时刻的平均距离值比值。
第二变量统计模块80,用于根据第二比较值获取模块70获取的相邻两个数据包观察周期的平均距离值比值与一预设值的差作为各个观察时刻的变量。
可见,本实施例中,通过对数据包的两个相邻观察时刻的平均距离值的比值的绝对值进行正值累加,即进行CUSUM统计,可以准确快速的区分出正常的网络访问流的变化,检测出网络攻击,减小误报率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以可借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。