基于访问节奏矩阵的应用层DDoS攻击识别方法与流程

文档序号:16686656发布日期:2019-01-22 18:23阅读:206来源:国知局
基于访问节奏矩阵的应用层DDoS攻击识别方法与流程

本公开涉及计算机网络安全技术领域,特别是涉及基于访问节奏矩阵的应用层ddos攻击识别方法。



背景技术:

ddos攻击对网络造成的危害程度很大,特别是针对应用层协议的ddos洪泛攻击,可能会直接导致用户无法正常访问。该种类型的攻击与其他底层的攻击模式相比,具有更大的破坏性,并且很难被传统的ddos检测系统检测到。

当前检测应用层ddos攻击的系统大致可分为两类:一是误用检测,另一个是异常检测。前者通过将输入数据与预定义的攻击特征相匹配来发现攻击,而后者利用正常行为建立一个合法行为模型,如果偏离这个模型则判定为异常行为。本公开提出的ddos攻击检测方法属于异常检测的范畴。

基于异常检测的ddos攻击检测系统中,选择特征并基于选定的特征构建正常行为模型是主要任务。我们选择网络层的报文长度和报文到达时间间隔作为检测特征。以往研究中也有采用报文长度或报文到达时间间隔作为特征进行ddos攻击检测,如文献[l.zhou,m.liao,c.yuan,andh.zhang,“low-rateddosattackdetectionusingexpectationofpacketsize,”securityandcommunicationnetworks,vol.2017,2017.]和[s.n.shiaeles,v.katos,a.s.karakos,andb.k.papadopoulos,“realtimeddosdetectionusingfuzzyestimators,”computers&security,vol.31,no.6,pp.782–790,sep2012],但是在这些研究中,并没有把报文长度和报文到达时间间隔和应用层联系起来,从而难以检测应用层ddos攻击。实质上报文长度和报文到达时间间隔内隐含了web内容分布和用户访问行为,我们通过它们构造的节奏矩阵来刻画用户访问行为模式,从而识别应用层ddos攻击。

有少量ddos攻击检测相关的研究中采用了矩阵的方式来组织数据特征和构建正常行为模式。文献[xie,y.,yu,s.z..“monitoringtheapplication-layerddosattacksforpopularwebsites,”ieee/acmtransactionsonnetworking2009;17(1):15-25]通过扩展网站统计中常用的概念—请求命中率(requesthitrate)来构建用户访问矩阵(accessmatrix),并使用隐半马尔科夫模型来推演网站中文档的人气指数变化,从而发现异常行为。我们提出的节奏矩阵和他们的用户访问矩阵的构建方法不同,使用的原始特征也不同,但是同样能捕获访问流量的时空特征。文献[s.m.lee,d.s.kim,j.h.lee,andj.s.park,“detectionofddosattacksusingoptimizedtrafficmatrix,”computers&mathematicswithapplications,vol.63,no.2,pp.501–510,jan.2012]使用ip分组头部的源ip地址构建流量矩阵(trafficmatrix),并依据其分布特征检测ddos攻击。相比而言,我们采用的节奏矩阵能够刻画更加丰富的用户行为特征,从而准确识别应用层ddos攻击。



技术实现要素:

为了解决现有技术的不足,本公开提供了基于访问节奏矩阵的应用层ddos攻击识别方法,用以进行应用层的ddos攻击检测和攻击主机ip识别,该方法时间复杂度与空间复杂度较低,且对实际的网络状况不会产生影响。

为实现上述目的,本公开采用如下技术方案:

基于访问节奏矩阵的应用层ddos攻击识别方法,包括:

步骤(1):数据包ip地址捕获步骤:当数据包到达边界路由器时,通过端口镜像,获取数据包的ip地址,判断当前数据包的ip地址是否是黑名单中的ip地址;如果是,则边界路由器直接阻断当前ip地址的数据包的发送;如果否,则按照ip地址对数据包进行归并,同一个ip地址的数据包分到同一个网络数据流中;

步骤(2):设置一个数据窗口,该数据窗口将网络数据流划分为等量片段,每一个数据窗口内生成一个对应的节奏矩阵;随着数据包的不断到达,数据窗口不断推进,构建出若干个节奏矩阵,形成节奏矩阵序列;如果数据窗口内的数据包的个数达到设定值,则对当前节奏矩阵,选取其基矩阵,计算变化率矩阵;得到变化率矩阵后,进行节奏矩阵的异常度的计算;

步骤(3):判断是否发生攻击,如果节奏矩阵的异常度大于设定阈值,则认为发生了ddos攻击;如果节奏矩阵的异常度小于等于设定阈值,则认为未发生ddos攻击。

作为本公开的一些可能的实现方式,如果没有发生攻击,则就返回数据包ip地址捕获步骤;如果发生攻击,则对构建的变化率矩阵进行离群点检测,将检测到的离群点进行标记。如果某个主机ip地址落在离群点的次数超过设定次数,则认为该主机ip地址为攻击主机ip地址,并将识别的ip地址补充到黑名单中。

作为本公开的一些可能的实现方式,在互联网与目的服务器之间设置边界路由器,对边界路由器设置端口镜像,实现对流入目的服务器的数据包进行捕捉;设置黑名单,用于存储曾经攻击过服务器的数据包ip地址。

作为本公开的一些可能的实现方式,生成节奏矩阵的具体步骤为:

步骤(21):记录每个数据包的长度以及每个数据包的到达间隔时间;对同一网络数据流中的所有数据包,剔除无上层协议负载的数据包、会话开始包和结束包;对剩余数据包分别计算每个数据包容量大小,计算每一个数据包与前一个数据包之间的到达时间间隔;计算数据包的个数是否为d的整数倍,如果否,则返回数据包ip地址捕获步骤;如果是,则进入步骤(22);

步骤(22):对d个数据包进行归一化处理,步骤如下:

设si为客户端向目的服务器发出的第i个数据包,δti为第i个数据包的到达间隔时间,i的取值范围是1到n;n为一个网络数据流内数据包的个数,则网络数据流f被抽象为:

将网络数据流f中的数据包的长度特征进行提取,得到当前网络数据流的长度特征流,令数据包si的长度为pi,则一个网络数据流被转化为:

其中,f'表示提取数据包长度特征之后的特征流;

通过公式(2),将所有流向目的服务器的数据包抽象为特征流;

然后,对特征流中的所有数据包的长度以及到达间隔时间分别进行离散化处理:

其中,b(p)=sup(p)-inf(p)表示数据包的长度的离散基数,sup(p)表示标准数据包长度的上界,inf(p)表示标准数据包长度的下界,使用log10函数将δti离散为0-9的数字,p'表示离散化处理后的数据包包的长度,δt'表示离散化处理后的数据包的到达间隔时间,p表示数据包的原始长度;

经过归一化处理,得到d个相邻的数据包s1、s2......sd,将数据包s1、s2......sd利用如下公式(4-1)和(4-2)进行整理:

x=p1'*10d-1+p2'*10d-2+p3'*10d-1+...+pd'(4-1)

y=δt1'*10d-1+δt2'*10d-2+δt3'*10d-3+...+δtd'(4-2)

其中,x,y分别为数据包经过处理之后得到的值,x和y的值均位于(0,10d-1)区间;其中pi'表示第i个数据包的离散化之后的长度,δti'表示第i个数据包的离散化之后的到达间隔时间。

步骤(23):将得到的x作为10d维的节奏矩阵s中的元素的横坐标,将得到的y作为10d维的节奏矩阵s中的元素的纵坐标,从而实现将网络数据流映射到节奏矩阵上;节奏矩阵中每个元素初始值为0,每进入一个新的落点则将节奏矩阵s在对应坐标位置的元素值加1;

步骤(24):重复步骤(23)直至当前时间窗口内的数据包均映射到节奏矩阵上,结束,时间窗口长度以节奏矩阵的落点数为标准,即落点数达到设定数量则时间窗口内数据包映射结束。

作为本公开的一些可能的实现方式,基矩阵的选取规则如下:

(2a)对于构建的节奏矩阵序列,从第三个节奏矩阵开始进行检测,将节奏矩阵序列中的第一个节奏矩阵作为第三个节奏矩阵的基矩阵;在对第四个节奏矩阵进行检测时,按照(2b)或者(2c)中的规则进行检测;

(2b)如果当前节奏矩阵si的前一个节奏矩阵si-1被判断为正常矩阵即没有发生攻击,则选取矩阵si-2,作为当前节奏矩阵的基矩阵;

(2c)如果当前节奏矩阵si的前一个节奏矩阵si-1被判断为异常矩阵,则选取si-1的基矩阵为当前节奏矩阵的基矩阵。

作为本公开的一些可能的实现方式,计算变化率矩阵的具体步骤如下:

如果sx,y=0,则αx,y=0;如果rx,y=0,则αx,y=sx,y/1;

其中,sx,y表示当前节奏矩阵;rx,y表示基矩阵,αx,y表示变化率矩阵。

作为本公开的一些可能的实现方式,得到变化率矩阵后,将变化率矩阵中不为0的值提取到一个一维向量中,进行离群点的检测。

作为本公开的一些可能的实现方式,所述离群点检测方法是基于四分位距的检测方法:

如果一维向量中某点的取值不在区间[q1-k*(q3-q1),q3+k*(q3-q1)]内:则认为该点是离群点。其中,q1表示第一分位数,q3表示第三分位数,k值取1.5。

四分位法是统计学的一种分析方法。将全部数据从小到大排列,正好排列在前1/4位置上的数(也就是25%位置上的数)叫做第一四分位数q1,排在后1/4位置上的数(也就是75%位置上的数)叫做第三四分位数q3,排列在中间位置的数(也就是50%位置上的数)叫做第二四分位数,也就是中位数值q2)第三四分位数与第一四分位数之差定义为四分位距,该距离表示一组数据的离散程度。根据四分位距,提出了基于该距离的离群点检测方法。

作为本公开的一些可能的实现方式,计算节奏矩阵的异常度γ,即矩阵中所有元素的异常度的和:

γ=∑max(0,sx,y-rx,y*mean(α))(6)

其中,sx,y表示当前矩阵的(x,y)坐标处的值,rx,y表示基矩阵的(x,y)坐标处的值,mean(α)表示当前矩阵所有点的变化率的平均值。

作为本公开的一些可能的实现方式,如果在当前时间窗口发现应用层ddos,则在下一时间窗口开启数据包ip地址跟踪记录;进行ip检查,观察当前时间窗口内所有的ip的记录;如果某ip在节奏矩阵s上的落点是离群点的数量超过设定阈值,则将该ip判断为攻击主机的ip;将ip加入准备的黑名单中。

与现有技术相比,本公开的有益效果是:

1)、时空复杂度低

本算法时间复杂度与空间复杂度都很低,对cpu时间以及内存的要求都不高。首先计算算法的时间复杂度,算法对到来的数据包仅处理一次,计算报文长度和到达间隔,然后按源ip地址进行流分类,复杂度为o(1);在构造矩阵以及变化率矩阵时,进行了10d维矩阵的元素的求商,时间复杂度为常数阶o(1)。之后进行的离群点检测以及异常度计算,时间复杂度均为常数阶。所以我们的算法的时间复杂度始终保持为常数阶o(1)。

其次计算空间复杂性,随着时间窗口的不断推进,算法只需记录当前时间窗口的节奏矩阵以及其对应的基矩阵。其次还临时存储了当前窗口的变化率矩阵以及对应的0-1矩阵。由于时间窗口是持续的,所以内存不断更新,但是整个算法的空间复杂度依旧维持在常数阶o(1)。

2)、应用层ddos判别准确率高,攻击主机ip识别率高

使用不同类型的ddos攻击流量数据进行了实验,在优化参数范围内,本算法检测应用层ddos攻击的准确率可达到98%以上,对于检测到攻击后的攻击主机ip识别的准确率能够达到97%以上,召回率能够达到100%。

3)、能够区分应用层ddos攻击和突发访问

由于突发访问不会导致访问节奏矩阵中离群点的出现,所以在我们的方法中不会被识别为ddos攻击。我们使用网络公开的突发拥塞数据集对方法进行了验证,结果表明该方法可以有效避免将突发流量识别为攻击流量。

4)不需分析报文中应用层数据,保护用户隐私

本公开只选择数据包的大小以及相邻分组的到达间隔时间作为分析的主要数据,不需要对报文中应用层的数据进行解析,能够防止用户数据泄露,保护用户隐私。

本公开提出的检测方法选择用网络层的分组长度和分组到达时间间隔构建访问节奏矩阵,由于它们是网络层的特征,理论上可以用于检测基于不同上层协议的ddos攻击。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本公开的网络部署图;

图2为节奏矩阵的构造图;

图3算法总流程图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

图1中,应用层ddos攻击检测与攻击主机ip识别系统采用了本方法的设备,部署在离目的主机最近的路由器与目的主机之间。所有进入目的主机的流量在路由器上通过端口镜像被检测系统捕获然后进行检测,识别出的攻击主机ip加入黑名单,可以通过路由器阻断黑名单中的ip。

如图3所示,基于访问节奏矩阵的应用层ddos攻击识别方法,包括:

步骤(1):数据包ip地址捕获步骤:当数据包到达边界路由器时,通过端口镜像,获取数据包的ip地址,判断当前数据包的ip地址是否是黑名单中的ip地址;如果是,则边界路由器直接阻断当前ip地址的数据包的发送;如果否,则按照ip地址对数据包进行归并,同一个ip地址的数据包分到同一个网络数据流中;

步骤(2):设置一个数据窗口,所述数据窗口用于将网络数据流划分为若干个等量片段,每一个数据窗口内生成一个对应的节奏矩阵。随着数据包的不断到达,数据窗口不断推进,会构建若干个节奏矩阵,如图2所示,形成节奏矩阵序列;如果数据窗口内落点数量达到设定值,对当前节奏矩阵,选取其基矩阵,计算变化率矩阵;得到变化率矩阵后,进行异常度的计算;

步骤(3):判定是否发生攻击,如果一个节奏矩阵的异常度大于设定阈值,则认为发生了ddos攻击,如果节奏矩阵的异常度小于等于设定阈值,则认为未发生ddos攻击;

作为本公开的一些可能的实现方式,如果没有发生攻击,则继续数据包捕获步骤;如果检测到攻击,则对构建的变化率矩阵进行离群点检测,将检测到的离群点进行标记,在之后的步骤中用来识别攻击主机ip。

作为本公开的一些可能的实现方式,在互联网与目的服务器之间设置边界路由器,对边界路由器设置端口镜像,实现对流入目的服务器的数据包进行捕捉;设置黑名单,用于存储曾经攻击过服务器的数据包ip地址。

作为本公开的一些可能的实现方式,对网络数据流映射出对应的节奏矩阵的具体步骤为:

步骤(21):记录每个数据包的长度以及每个数据包的到达间隔时间;对同一网络数据流中的所有数据包,剔除无上层协议负载的数据包、会话开始包和结束包;对剩余数据包分别计算每个数据包容量大小,计算每一个数据包与前一个数据包之间的到达时间间隔;计算数据包的个数是否为d的整数倍,如果否,则返回数据包ip地址捕获步骤;如果是,则进入步骤(22);

步骤(22):对d个数据包进行归一化处理,步骤如下:

设si为客户端向目的服务器发出的第i个数据包,δti为第i个数据包的到达间隔时间,i的取值范围是1到n;n为一个网络数据流内数据包的个数,则网络数据流f被抽象为:

将网络数据流f中的数据包的长度特征进行提取,得到当前网络数据流的长度特征流,令数据包si的长度为pi,则一个网络数据流被转化为:

其中,f'表示提取数据包长度特征之后的特征流;

通过公式(2),将所有流向目的服务器的数据包抽象为特征流;

然后,对特征流中的所有数据包的长度以及到达间隔时间分别进行离散化处理:

其中,b(p)=sup(p)-inf(p)表示数据包的长度的离散基数,sup(p)表示标准数据包长度的上界,inf(p)表示标准数据包长度的下界,使用log10函数将δti离散为0-9的数字,p'表示离散化处理后的数据包包的长度,δt'表示离散化处理后的数据包的到达间隔时间,p表示数据包的原始长度;

经过归一化处理,得到d个相邻的数据包s1、s2......sd,将数据包s1、s2......sd利用如下公式(4-1)和(4-2)进行整理:

x=p1'*10d-1+p2'*10d-2+p3'*10d-1+...+pd'(4-1)

y=δt1'*10d-1+δt2'*10d-2+δt3'*10d-3+...+δtd'(4-2)

其中,x,y分别为数据包经过处理之后得到的值,x和y的值均位于(0,10d-1)区间;其中pi'表示第i个数据包的离散化之后的长度,δti'表示第i个数据包的离散化之后的到达间隔时间。

步骤(23):将得到的x作为10d维的节奏矩阵s中的元素的横坐标,将得到的y作为10d维的节奏矩阵s中的元素的纵坐标,从而实现将网络数据流映射到节奏矩阵上;节奏矩阵中每个元素初始值为0,每进入一个新的落点则将节奏矩阵s在对应坐标位置的元素值加1;

步骤(24):重复步骤(23)直至当前时间窗口内的数据包均映射到节奏矩阵上,结束,时间窗口长度以节奏矩阵的落点数为标准,即落点数达到设定数量则时间窗口内数据包映射结束。

作为本公开的一些可能的实施例,基矩阵的选取规则如下:

(2a)对于构建的节奏矩阵序列,从第三个节奏矩阵开始进行检测,将节奏矩阵序列中的第一个节奏矩阵作为第三个节奏矩阵的基矩阵;在对第四个节奏矩阵进行检测时,按照(2b)或者(2c)中的规则进行检测;

(2b)如果当前节奏矩阵si的前一个节奏矩阵si-1被判断为正常矩阵即没有发生攻击,则选取矩阵si-2,作为当前节奏矩阵的基矩阵;

(2c)如果当前节奏矩阵si的前一个节奏矩阵si-1被判断为异常矩阵,则选取si-1的基矩阵为当前节奏矩阵的基矩阵。

作为本公开的一些可能的实施例,计算变化率矩阵的具体步骤如下:

如果sx,y=0,则αx,y=0;如果rx,y=0,则αx,y=sx,y/1;

其中,sx,y表示当前节奏矩阵;rx,y表示基矩阵,αx,y表示变化率矩阵。

作为本公开的一些可能的实施例,得到变化率矩阵后,将变化率矩阵中不为0的值提取到一个一维向量中,进行离群点的检测。

作为本公开的一些可能的实施例,所述离群点检测方法是基于四分位距的检测方法:

如果一维向量中某点的取值不在区间[q1-k*(q3-q1),q3+k*(q3-q1)]内:则认为该点是离群点。其中,q1表示第一分位数,q3表示第三分位数,k值取1.5。

四分位法是统计学的一种分析方法。将全部数据从小到大排列,正好排列在前1/4位置上的数(也就是25%位置上的数)叫做第一四分位数q1,排在后1/4位置上的数(也就是75%位置上的数)叫做第三四分位数q3,排列在中间位置的数(也就是50%位置上的数)叫做第二四分位数,也就是中位数值q2)第三四分位数与第一四分位数之差定义为四分位距,该距离表示一组数据的离散程度。根据四分位距,提出了基于该距离的离群点检测方法。

作为本公开的一些可能的实施例,计算节奏矩阵的异常度γ,即矩阵中所有元素的异常度的和:

γ=∑max(0,sx,y-rx,y*mean(α))(6)

其中,sx,y表示当前矩阵的(x,y)坐标处的值,rx,y表示基矩阵的(x,y)坐标处的值,mean(α)表示当前矩阵所有点的变化率的平均值。

作为本公开的一些可能的实施例,如果在当前时间窗口发现应用层ddos,则在下一时间窗口开启数据包ip地址跟踪记录;进行ip检查,观察当前时间窗口内所有的ip的记录;如果某ip在节奏矩阵s上的落点是离群点的数量超过设定阈值,则将该ip判断为攻击主机的ip;将ip加入准备的黑名单中。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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