基于Web会话流的分布式实时异常定位方法与流程

文档序号:14993448发布日期:2018-07-20 22:59阅读:199来源:国知局

本发明涉及web会话流异常检测技术领域,特别是一种基于web会话流的分布式实时异常定位方法。



背景技术:

当前,由于越来越有效的防御机制和工具安装在路由器和防火墙中,围绕着网络层的异常更加容易被发现和抵制。然而,互联网应用的广泛使用使得托管在web服务器上的web应用程序计算复杂度逐渐上升,服务器资源如cup、磁盘i/o和带宽等也随之成为网络的瓶颈。ddos大量耗费web服务器资源,使得web服务器无法服务正常请求,这是大数据时代web服务器的一个主要的威胁。ddos由于主要针对应用层,符合应用层请求服务流程,导致ids无法区分,因此ddos攻击能够有效的避开网络层和应用层的检测。

应用层ddos攻击以模拟正常流量的方式使得访问流量段时间内迅速上涨,与网络突发流量类似。因此,如何区分正常的突发流量和ddos异常流量是目前的热点问题。有人使用历史ip过滤(historybasedipfiltering,hif)的方式抵御ddos攻击。hif方法维护一个ip地址数据库(ipaddressdatabase,iad)来存放前两周的频繁用户合法ip地址。当网络带宽利用率较高导致丢包现象时hif被激活,hif会丢弃那些没有出现在iad中的ip的请求数据包。hif利用滑动窗口的形式删除过期的ip地址,保持iad的更新。然而hif却无法辨别无丢包的ddos流量。谢逸提出基于隐半马尔可夫链的检测过程,用隐半马尔可夫链描述用户的行为序列作为正常用户行为链,并以此与web流量进行偏离计算,当偏离度超过一定值则认为web流量存在异常。但是其对sessionfloodd攻击的检测能力较弱。

综上所述,目前的异常检测算法主要的方式是首先对web用户的行为进行建模,作为正常的访问序列,然后尽可能的寻找一种相似度度量方式来区分正常流量和异常流量。如何在仅利用web流量少量特征,不必理解具体流量内容的条件下,建立相应的模型,为异常检测提供决策依据,是当前的主流研究方法。异常检测的主要目的是为了防御异常以及尽早处理,检测出异常及更进一步的定位异常具有实际意义,然而国内外对于异常实时定位方面的研究不多。



技术实现要素:

本发明的目的在于提供一种基于web会话流的分布式实时异常定位方法,该方法有利于对web会话流的异常进行高效、准确的定位。

为实现上述目的,本发明的技术方案是:一种基于web会话流的分布式实时异常定位方法,包括以下步骤:

(1)利用日志收集系统flume组件与分布式消息系统kafka组件联合收集web流量数据,其中flume组件负责收集多个web终端的web流量,kafka组件作为消息中间件,将收集到的web流量发送到hadoop分布式文件系统hdfs存储,同时发送到sparkstreaming组件进行实时处理;

(2)发送到hdfs中的web流量存储为离线日志,并通过dps_drb规则库构建算法动态建立和更新动态规则库drb;

(3)发送到sparkstreaming组件中的web流量作为实时日志,sparkstreaming组件对持续不断的实时日志流式数据以滑动窗口的方式处理,对滑动窗口内的web流量进行过滤,转化,用户识别,会话识别,构建用户会话序列,然后发送给基于混合生物基因序列比对的异常定位算法al_hbgsa;

(4)al_hbgsa算法基于步骤(3)建立并不断更新的动态规则库drb,将步骤(4)发送来的用户会话序列与动态规则库中的规则序列进行比对,从而进行异常定位,如果检测到异常,则进行告警处理,否则作为正常日志输出。

进一步地,步骤(3)中,对实时日志流式数据以滑动窗口的方式处理,对滑动窗口内的web流量进行过滤,转化,用户识别,会话识别,构建用户会话序列,具体方法为:

(31)对滑动窗口里面的web流量进行数据过滤,将时间格式转化为时间戳,将ip和url映射为数字;

(32)进行用户识别和会话识别,构造用户访问序列。

进一步地,步骤(4)中,al_hbgsa算法进行异常定位的方法为:

(41)初始化,从数据库dwasd中提取用户会话序列s={s1,s2,…,su,…,sn},其中n表示当前数据库dwasd中会话总数,数据库dwasd是由滑动窗口内的web流量经过处理得到的用户会话序列构成的数据库;

(42)遍历每个用户会话序列su,将其与动态规则库drb中的每个规则进行比对,得到序列比对异常spur,然后判断序列比对异常spur是否大于历史平均会话异常度avgssp,是则判定用户u为异常用户,否则判定用户u为正常用户。

进一步地,动态web用户访问序列数据库dwasd的构建方法为:

a1.输入web日志数据集data,并对数据集data进行数据过滤;

a2.将时间格式转化为时间戳,并获取当前时间tc;将ip和url映射为数字,构造ses数据结构;

a3.进行用户识别和会话识别,构造web用户访问序列数据库wasd;

a4.遍历wasd的每行,其中一行表示一个用户的访问序列,根据用户访问行为距当前时间的远近过滤出每个用户的近期访问行为,构成该用户的近期访问序列,具体方法为:

b1.计算用户访问每个页面的权重:

wui=1/(1+α*|tc-tui|)

其中,wui表示用户u访问页面i的权重,α表示时间衰减系数,的取值在不同系统中不同,如果一个系统变化很快,就应该取较大的α,反之取较小的α;tui表示用户u访问页面i的时间戳;

b2.判断权重wui是否大于设定的时间阈值β,是则判定该权重对应的用户访问行为为近期访问行为;

b3.重复步骤b1-b2,得到该用户的所有近期访问行为,进而由该用户的所有近期访问行为构成该用户的近期访问序列;

然后由所有用户的近期访问序列构成动态web用户访问序列数据库dwasd。

本发明的有益效果是:(1)提出基于web会话流的异常定位架构,利用流计算框架sparkstreaming和kafka消息中间件,对实时web流量进行异常定位。(2)提出了基于混合生物基因序列比对的异常定位算法(anomalylocationalgorithmbasedonhybridbiologicalgenesequencealignment,al_hbgsa),联合全局序列比对算法和局部序列比对算法作为相似性度量方式,对web会话序列与动态规则库的规则序列进行比对,以提高序列比对准确性。

附图说明

图1是本发明方法的实现流程图。

图2是本发明实施例中的相似度矩阵位置关系图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步的详细说明。

本发明提供一种基于web会话流的分布式实时异常定位方法,如图1所示,包括以下步骤:

(1)利用日志收集系统flume组件与分布式消息系统kafka组件联合收集web流量数据,其中flume组件负责收集多个web终端的web流量,kafka组件作为消息中间件,将收集到的web流量发送到hadoop分布式文件系统hdfs存储,同时发送到sparkstreaming(spark流计算框架)组件进行实时处理。

(2)发送到hdfs中的web流量存储为离线日志,并通过dps_drb规则库构建算法动态建立和更新动态规则库drb。

(3)发送到sparkstreaming组件中的web流量作为实时日志,sparkstreaming组件对持续不断的实时日志流式数据以滑动窗口的方式处理,对滑动窗口内的web流量进行过滤,转化,用户识别,会话识别,构建用户会话序列,然后发送给基于混合生物基因序列比对的异常定位算法al_hbgsa。具体方法为:

(31)对滑动窗口里面的web流量进行数据过滤,将时间格式转化为时间戳,将ip和url映射为数字。其中,过滤是删除与挖掘任务不相干的数据,例如图片、音频等信息;时间后面需要用到大小比较,所以转化为时间戳;转换是把ip,url序列比较复杂,转化为简单的数字表示,例如数字编号。

(32)进行用户识别和会话识别,构造用户访问序列。

其中,用户识别是同一用户,这里使用了同一ip为同一用户;会话识别是用户访问网页有一个时间阈值,分割用户访问会话序列。

(4)al_hbgsa算法基于步骤(3)建立并不断更新的动态规则库drb,将步骤(4)发送来的用户会话序列与动态规则库中的规则序列进行比对,从而进行异常定位,如果检测到异常,则进行告警处理,否则作为正常日志输出。其中,al_hbgsa算法进行异常定位的方法为:

(41)初始化,从数据库dwasd中提取用户会话序列s={s1,s2,…,su,…,sn},其中n表示当前数据库dwasd中会话总数,数据库dwasd是由滑动窗口内的web流量经过处理得到的用户会话序列构成的数据库;

(42)遍历每个用户会话序列su,将其与动态规则库drb中的每个规则进行比对,得到序列比对异常spur,然后判断序列比对异常spur是否大于历史平均会话异常度avgssp,是则判定用户u为异常用户,否则判定用户u为正常用户。

该方法中涉及到的动态web用户访问序列数据库dwasd的构建方法为:

a1.输入web日志数据集data,并对数据集data进行数据过滤;

a2.将时间格式转化为时间戳,并获取当前时间tc;将ip和url映射为数字,构造ses数据结构;

a3.进行用户识别和会话识别,构造web用户访问序列数据库wasd;

a4.遍历wasd的每行,其中一行表示一个用户的访问序列,根据用户访问行为距当前时间的远近过滤出每个用户的近期访问行为,构成该用户的近期访问序列,具体方法为:

b1.计算用户访问每个页面的权重:

wui=1/(1+α*|tc-tui|)

其中,wui表示用户u访问页面i的权重,α表示时间衰减系数,的取值在不同系统中不同,如果一个系统变化很快,就应该取较大的α,反之取较小的α;tui表示用户u访问页面i的时间戳;

b2.判断权重wui是否大于设定的时间阈值β,是则判定该权重对应的用户访问行为为近期访问行为;

b3.重复步骤b1-b2,得到该用户的所有近期访问行为,进而由该用户的所有近期访问行为构成该用户的近期访问序列;

然后由所有用户的近期访问序列构成动态web用户访问序列数据库dwasd。

下面对本发明涉及的基于混合生物基因序列比对的异常定位算法al_hbgsa作进一步说明。

在计算机科学中,生物基因序列比对(biologicalgenesequencealignment,bgsa)专指比较两个序列之间的相关性。序列比对是一种反映元素顺序的非欧式距离算法。由于web用户访问序列具有时间上的顺序性,属于事务序列,常用的相似度计算公式(如皮尔逊相似度、余弦相似度)并不适用于事务序列的相似度计算。另外,由于web用户访问序列在长度上不一致,这也造成单一的序列比对算法不能完全反应序列之间的相似性。针对此问题,本发明提出一种基于混合生物基因序列比对的异常定位算法,该算法从全局和局部角度考虑两序列的相似度,降低序列长度造成的偏差,提高序列比对的准确性。

1.基本概念

给定一个有限集合σ,其元素是由字符构成。s是由σ中任意个字符形成的序列集合。例如,假设σ={a,b,c},集合s={s1,s2,…,sn}是由n个有限序列构成,s1=ab,s2=abc,…,s3=acb都是由σ中任意ee>0)个字符构成的序列。用户的会话同样是由对不同的web页面的访问行为组成,即s={s1,s2,…,su,…,sf},s表示所有用户的访问序列集合,f表示用户总数,而su={su1,su2,…,sug},其中su为用户u的访问序列集合,g表示用户的第g(g>0)个会话,用户u的第g个会话为sug={p1,p2,…,pi,…,pc},pi为用户访问的第i个页面,c表示用户访问的页面总数。动态规则库drb是一个有限集合,由web用户访问序列的最大频繁模式构成。每个规则的任意个字符可能组成一个用户访问序列,因此动态规则库中的每条规则r是一个有限集合σr,则drb={σ1,σ2,…,σr,…}。

2.al_hbgsa混合序列比对算法

序列的上下文环境是计算序列相似性必不可少的重要因素,bgsa最早用于生物dna序列比对,dna序列在长度上相差不大,而用户会话序列的长度却不一致甚至相差甚远。另外,现有的相似度计算方法也不适用于用户会话序列比对。第一,用户会话序列存在长度不一致,导致传统的向量距离方法如欧式距离、曼哈顿距离、海明距离等不适用,因为向量距离方法要求序列的长度相等。第二,由于用户会话序列是由页面的不同顺序构成,那么相应的度量方式必须得考虑这种顺序特性。这就导致如莱文斯坦距离和变长矢量距离不适用。第三,用户会话中两个访问行为的连续性也是相对重要的因素,因而最长公共子序列算法也不适用。例如一个用户会话以a页面开始,以b页面结束,那么最长公共子序列算法认为会话s1=ab与会话s2=acdfb是相同的,忽略了两个页面之间的距离。综上所述,用户会话序列比对需要考虑两个因素:第一,序列的长度是不一致的;第二,序列的访问行为之间存在连续性。

needleman-wunsch(nw)是由needleman和wunsch于1970年提出的一种基于动态规划的bgsa方法。nw算法以动态规划算法寻找最优序列比对路径,具体做法是在序列比对的得分策略的支持下建立一个得分矩阵用于找到最大得分,从而找到最优序列比对路径。nw算法能够简便而迅速在计算机中实现,将序列从头到尾进行比对,也称之为全局序列比对算法,用于相近长度的两个序列之间的比对。由于该方法原用于长度相近的基因序列的比对,然而不同物种的基因序列长度依然会存在不一致现象,因此为了解决这个问题,smith-waterman(sw)算法高度重视序列的局部比对相似性,忽略序列的长度不同。nw算法与sw算法都有自身的优缺点,nw通过完整序列来进行比对,而sw更加关注局部相似性。为了将bgsa引入到web用户会话序列比对中,需要对bgsa进行改进以适用于计算web用户访问序列之间的异常。第一,用户会话的长度不一致;第二,规则库中的规则长度不一致。因此提出混合生物基因序列比对方法用于用户会话与规则比对,从而定位异常。

假设sim(s1,s2)表示序列s1与序列s2的比对相似度,当序列s1与序列s2是不同单个字符的序列时,有如下定义:sim(s1,s2)=sim(s1,”-”)=sim(“-”,s2)=0,且s1≠”-”,s2≠”-”,当s1=s2时,sim(s1,s2)=1,其中”-”是空位占位符用于使两个序列长度相同。对于序列s1与序列s2为长序列时,例如式(1)所示:

(1)

s1和s2引入空位占位符,则sim(s1,s2)=5。设序列s1={a1,a2,…,ax},序列s2={b1,b2,…,by},其中xy分别是序列s1、s2的长度。sim(ah,bj)表示两个元素的相似度得分,其中h∈[1,x],j∈[1,y]。使用动态规划法计算sim(ai,bj)有式(2)所示:

(2)

如果构建一个相似度矩阵,则对于第h行第j列的单元格sim(ah,bj)为参考,则sim(ah-1,bj-1)表示左上方单元格,sim(ah-1,bj)表示上方单元格,sim(ah,bj-1)表示左方单元格。位置关系如图2所示:

序列比对的目标是找到最优比对路径,直接方式是先生成两序列中各个字符匹配的得分矩阵,然后使用穷举法找到最优解法,但这种解法不太现实,因此有动态规划法利用回溯的方式从矩阵的右下角向左回溯。三种方向的回溯表示三种路径,从这三个中选择最大得分的路径则较为容易。方法①的回溯表示s1、s2两序列都用头插法加入一个元素;方法②表明s1序列元素不变,s2序列用头插法加入一个空位占位符“-”;方法③表明s2序列元素不变,s1序列用头插法加入一个空位占位符“-”;其中空位占位符是为了取得两个序列最佳比对。使用最简单的空位罚分方式,如式(3)所示:

(3)

式(3)中gapxgapygapz分别表示匹配、不匹配、空位的得分情况。其中gapx>0,gapy<0,gapz<0,且gapygapz。通过空位罚分的方式进行回溯找到最优匹配路径就会形成如式(1)所示的格式。

nw与sw算法都需要使用以上过程寻找最优比对路径,具体的寻优步骤为:

(1)定位在得分矩阵的右下角;

(2)若ah=bj,则回溯到单元格(ah-1,bj-1);

(3)若ahbj,则回溯到(ah-1,bj-1)、(ah-1,bj)、(ah,bj-1)中最大得分的单元格,得分相同则按照(ah-1,bj-1)、(ah-1,bj)、(ah,bj-1)的顺序选择单元格回溯;

(4)若当前单元格是a(ah,b0),则回溯至a(ah-1,b0);

(5)若当前单元格是a(a0,bj),则回溯至a(a0,bj-1);

但sw算法却有部分不同,多了“去头去尾”的操作。“去头”表示如果当前得分小于0,则之前的比对路径清空,从当前单元格重新开始寻找路径;“去尾”表示初始定位不是在最右下角,而是从右下角最大得分的单元格开始回溯。

当取得两序列的最优比对路径后就可以求解相似度值。在一些研究中,将最优路径的得分和认为是最终的相似度值,但是由于数据集的不同,得分变量gapxgapygapz的值没有具体的说明导致无法统一,如果gapygapz为负数,对于全局序列比对nw算法来说可能出现负数相似度值。因此当对应位置上的两个字符相同则得分累加。设两序列中较短序列的长度为lmin,较长序列的长度为lmax。研究发现,按照得分累加法,序列比对时,累加值最大不超过lmin,因此nw和sw算法的相似度计算应满足式(4)、(5):

(4)

(5)

式(4)、(5)分别计算nw和sw算法的相似度,其中count(nw)与count(sw)分别表示nw和sw算法中对匹配正确的字符的累加。由于count(nw)≤lmin,count(nw)≤lmin,很容易证明simnw(s1,s2)∈[0,1],simsw(s1,s2)∈[0,1]。符合相似度一般表达形式,无需对得分变量值进行调整。然后使用混合基因序列比对方法,通过两序列的长度比值结合nw和sw计算相似度,其计算式如(6)所示:

(6)

式(6)中δ表示序列比对系数,即对于nw与sw算法对最终两序列比对相似的影响度。使用式(7)定义的值:

(7)

当序列长度不一致性大时,δ→0,这时simsw→1,说明局部序列比对应该发挥主要序列比对作用,反之亦然。由于目的是求两序列的异常度,因此只需要对式(6)取补,两序列会话异常度(sessionsuspicionprobability,ssp)计算方法如式(8)所示:

(8)

通过式(8)计算得到的ssp∈[0,1],为了更加准确地标注异常,我们设置异常阈值,当ssp大于异常阈值时,就标记为异常,设置阈值,计算历史web流量中的平均会话异常度avgssp作为异常阈值,当ssp>avgssp时认为发生异常。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

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