[0017] 进一步地,所述比较运算是指,根据当前流量的时间节点k,取当前流量数值X(k),并检索到该时间节点的流量模板数值Mn(k),判断X(k)/Mn(k)与预设
[0018] 对于疑似流量,根据当前流量模板,往后取I个流量数值X(k+1)……X(k+I),并检索对应的流量模板数值Mn(k+1)……Mn(k+I),如果X(k)/Mn(k)+X(k+1)/Mn(k+1)+……+X(k+I)/Mn(k+I)>β,则判定为异常流量,否则为正常流量。
[0019] 进一步地,所述预设阈值β=3,I=5。
[0020] 进一步地,将步骤2)区分出的正常流量通过
自学习算法进行流量学习,更新流量TOP N动态过滤表中相应的流量模板数值。
[0021] 进一步地,所述自学习算法为:
[0022]
[0023] 其中,Mn(k)为当前时间窗口周期内当前时间节点的流量模板数值,Mn-1(k)为前一个时间窗口周期当前时间点的流量模板数值,Xn-1(k)为前一个时间窗口周期接收到的未经过处理的流量数值,b(k)是异常判决结果因子,Rinit(k)为初始化流量模板,初始值都为(0、0…0)。假设b的结果都是正确的,经过n次平均运算处理后,异常流量对正常流量特征的影响将减小到1/n,当n足够大时,则认定此时的流量模板数值为最佳。
[0024] 一种异常流量攻击检测处置的装置,包括:
[0025] 一流量接收单元;
[0026] 一静态过滤单元,连接流量接收单元,
对流量接收单元接收的来访IP地址进行判断,并过滤已知的异常流量和正常流量;
[0027] 一动态检测过滤单元,连接静态过滤单元,判断来访IP地址是否在流量TOP N动态过滤表的排序中;还连接一运算判决单元和一自学习单元,所述运算判决单元通过运算判定来访IP地址是否异常,对于不属于异常流量的来访IP地址通过所述自学习单元进行流量自学习;
[0028] 一处理单元,转发正常流量和丢弃异常流量。
[0029] 本发明提供了一种异常流量攻击检测处置的方法和装置,与其它检测方法相比,本发明最大的特点是通过静态与动态结合的方式,采用一个动态更新的流量TOP N动态过滤表来对异常流量进行动态过滤,通过查表的动态过滤方式能够快速甄别出异常流量,而通过流量数值与流量TOP N动态过滤表中相应的流量模板数值的比较运算判定异常的方法提高了检测异常流量的准确率,确保将异常攻击从正常访问行为中甄别出来,相比其它基于FLOW统计的DDOS攻击检测方法具有识别精度更高、处理速度更快而且实现复杂度较低的特点。
附图说明
[0030] 图1为
实施例中一种异常流量攻击检测处置方法
流程图。
[0031] 图2为异常流量和流量模板示意图。
[0032] 图3为实施例中一种异常流量攻击检测处置的装置结构示意图。
[0033] 图4为流量自学习方法示意图。
具体实施方式
[0034] 为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
[0035] 本实施例提供一种异常流量攻击检测处置的方法,如图1所示,详细步骤如下:
[0036] 步骤S101:监视来访IP的访问
请求。
[0037] 步骤S102:判断IP地址是否在系统白名单中,如果是,则进入步骤S109直接转发请求;如果否,则进入步骤S103。
[0038] 步骤S103:判断IP地址是否在系统黑名单中,如果是,则进入步骤S108直接丢弃该流量;如果否,则进入步骤S104。
[0039] 步骤S104:判断源地址IP是否在流量TOP N动态过滤表的TOP N排序中。
[0040] 本步骤的细化如下:
[0041] 第一步:根据预设的时间分段模式获得当前时间所属时间节点。由于应用流量的访问行为通常具有很强的周期性(天/周),故采用24*m小时作为当前的周期,计算当前时间所属时间段,当然可以根据实际应用场景需要变换m的数值加大这个周期长度,这里采用当前时间/24*m来获得来访IP所属时间节点k。
[0042] 第二步:自动加载当前流量TOP N动态过滤表,流量TOP N动态过滤表可以通过链表来实现,具体内容如下表1所示:
[0043]
[0044] 表1
[0045] 该流量TOP N动态过滤表内容包含了从1……N+M个有记录的流量排序最靠前的IP信息链表,按照历史流量从大到小依次排序,其中排序为n的一个链表的内容包括:IP地址xxx.xxx.xxx.xxx、历史访问流量统计xx、流量模板Rn=(Mn(1)、Mn(2)、Mn(3)……Mn(k);流量模板为该表项的主要内容,如果将一个特定流量周期的时间分成K份,则Mn(k)表示时间点k上该IP地址在该时间段里历史流量的特征值,称作流量模板数值,这个值是由周期统计特性的历史流量最大期望值,计算方法由自学习算法来不断的动态更新。在实际应用中,应用流量的访问行为通常具有很强的周期性(天/周),这是采用该算法的关键所在。
[0046] 此外,流量TOP N动态过滤表内容还包含了链表E,它的IP地址和历史访问累计数为空,其流量平均模板EQ=(E(1)、E(2)、E(3)……E(k))中的每个节点的流量模板数值是所有非TOPN历史访问流量在该时间点的统计平均值,例如将一个特定流量周期的时间分成K份,则Ek表示时间点k内所有正常流量在该时间段的特征值,实际就是历史流量的求和平均值,这也是很多其它流量检测方法采用的最常见的方式。
[0047] 流量TOP N动态过滤表由自学习得到,也允许人工调整和修正流量TOP N动态过滤表,具备较大的人工操作空间。
[0048] 第三步:自动加载当前流量TOP N动态过滤表,根据历史流量统计实时更新排列顺序,其中排列顺序的更新依据是IP地址的历史访问流量统计,前N个IP信息链表的具体排序说明如下:参考所有的IP地址历史访问流量统计,如果当前IP地址的历史访问流量统计数超过排序第N个的IP地址时,则将该IP地址的相关信息替换第N个IP信息链表中,对应的第k个流量模板数值直接取流量平均模板EQ中第k个值Mn(k)=E(k),此外将第N个排序的原IP信息链表往下移一列,进入到由M个缓冲记录组成的潜在IP信息链表中。
[0049] 更新流量TOP N动态过滤表中链表对应的流量模板数值,具体说明如下:对每个来访的IP地址,当IP地址在流量排序前N+M个表中第n行,而且已经判定了该流量数值为正常流量,则将该流量数值R作为一个输入更新第n行对应时间点k的流量模板数值Mn(k),方法由自学习算法来更新。当地址不在流量排序前N+M个表中,而且判定一条流量为普通正常流量,则将该流量作为一个输入值X(k)与流量平均模板对应时间点k的流量模板数值E(k)做平均运算,得到新的流量模板数值Enew(k)并更新到信息链表中,方法同样由自学习算法Enew(k)=[Eold(k)+b(k)*X(k)]/2。
[0050] 这里可以看到,流量TOP N动态过滤表过滤的方法与攻击检测方法不同,本方法采用快速查询动态表的方式,并没有复杂的逻辑处理和判断,实现了IP访问情况的快速处理和转发,不会引起因应用访问的时延而影响访问体验。方法处理的精度主要取决于参数N、M和K的设定,这关系到算法的内存资源开销,具体实现中可以根据
硬件资源灵活设定。
[0051] 步骤S105:如果IP地址在流量TOP N动态过滤表排序中,则根据预先设定的时间窗口周期,根据当前流量采集的时间节点,检索到该地址该时间点对应编号的流量模板数值,将当前流量数值与流量模板数值作比较运算,根据是否超出了预设的
阀值来判定该流量是否为异常流量,如果超出阀值,则进入步骤S108,如果未超过阀值,则进入步骤S107。
[0052] 比较运算算法如下:根据当前流量的时间节点k,检索到该时间节点的流量模板数值Mn(k),将当前流量数值X(k)除以流量模板数值Mn(k),即X(k)/Mn(k),结果如果超过预设阀值β(β为预先设定,根据经验默认β=3),则直接判定该流量为异常流量,否则判定为疑似流量;如果判定是疑似流量,则根据当前流量模板,往后取I个(I为预先设定,根据经验默认I=5)流量数值X(k+1)……X(k+I)及对应的流量模板数值Mn(k+1)……Mn(k+I),如果X(k)/Mn(k)+X(k+1)/Mn(k+1)+……+X(k+I)/Mn(k+I),结果超过预设阀值β,则判定为异常流量,否则为这个正常流量。如果超出阀值,则进入步骤S108,如果未超过阀值,则进入步骤S107。
[0053] 步骤S106:如果IP地址不在流量TOP N动态过滤表的排序中,则根据预先设定的时间窗口周期,根据该地址当前流量采集的时间点,从表中的流量平均模板EQ中检索到该时间点对应编号的流量模板数值,将当前流量数值与该流量模板数值作比较运算,运算方法见上段所述,根据是否超出了预设阀值β来判定该流量是否为异常流量,如果超出预设阀值β,则进入步骤S108,如果未超过,则进入步骤S107。
[0054] 步骤S107:通过自学习算法更新该IP地址对应该时间节点的流量模板数值,并判定其流量为正常流量,转入步骤S109;通过自学习算法更新该IP地址对应该时间节点的流量模板数值的具体实现方法如下:
[0055] 第一步:模板初始化
[0056] 流量模板数值通过类似极大似然估计的快速自学习得到。在每个固定的流量周期时间窗口内,对首个访问的正常流量根据各个对应的时间采样,其采样值作为一个初始化的流量模板。
[0057] 第二步:模板自学习
[0058] 流量模板数值Mn(k)通过流量自适应反馈式极大似然估计算法得到。通过快速检索获得上一个时间周期当前时间点的流量模板数值Mn-1(k)与前一个时间窗口周期获得的未经过处理的流量数值Xn-1(k),后者乘以异常判决结果因子b(k)(0/1),再与前者作平均运算,运算结果作为新的流量模板数值,这样使得异常流量不会被学习到。这样在理论上被证明是一种快速收敛的极大似然估计自学习算法。
[0059] 图4为流量自学习算法示意图,图中一个时间窗口周期T内量化的流量数值序列为X(X(1)、X(2)……X(k))。比较运算器负责把当前流量数值序列X与流量模板数值序列M(M(1)、M(2)……M(k))进行比较运算 输出结果做为异常判定输出。此外根据输出结果做为异常判决结果因子b(k)(0/1)来决定是否将当前流量数值序列X(X(1)、X(2)……X(k))输入到流量模板更新中。更新方法是将X与上一个时间窗口周期T得到的旧流量模板Mold(Mold(1)、Mold(2)……Mold(k))进行求和运算获得新的流量模板M(M(1)、M(2)……M(k))。
[0060] 更新流量模板的递推公式可以表示为:
[0061]
[0062] 其中,Mn(k)表示一个时间窗口周期内当前时间点的流量模板数值,Mn-1(k)为前一个时间窗口周期当前时间点的流量模板数值,Xn-1(k)是前一个接收到的未经过处理的流量数值,b(k)是异常判决结果因子,Rinit(k)为初始化流量模板,初始值都为(0、0…0)。这样,假设b的结果都是正确的,经过n次平均运算处理后,异常流量的
能量将减小到1/n,当n足够大时,可以认为此时的流量模板数值是最佳值,这样在理论上被证明是一种快速收敛的极大似然估计自学习算法,是访问流量行为的最佳估计。
[0064] 经过一段时间自学习后,可以由人为的参与锁定流量模型,不再进行学习,以确保异常处理的快速有效。
[0065] 步骤S108:若检测到属于异常流量,则判定当前为DDOS攻击行为,过滤来访IP请求;
[0066] 步骤S109:若检测到不属于异常流量,则转发来访IP请求;
[0067] 本实施例另提供一种异常流量攻击检测处置的装置,采用上述方法,如图3所示,包括依次连接的流量接收单元、静态过滤单元、动态监测过滤单元和处理单元,动态监测过滤单元还连接有运算判决单元和自学习单元。
[0068] 流量接收单元接收来访IP地址的流量请求(见步骤S101);
[0069] 静态过滤单元可通过设置白名单和黑名单的方式,属于白名单中的判为正常流量(见步骤S102),属于黑名单中的判为异常流量(见步骤S103);
[0070] 动态监测过滤单元的功能是判断来访IP地址是否在流量TOP N动态过滤表中(见步骤S104);
[0071] 运算判决单元是对属于和不属于流量TOP N动态过滤表排序中的IP地址进行运算并判定是否是异常流量(见步骤S105、S106);
[0072] 自学习单元执行的功能是动态维护和更新TOP N动态过滤表,对历史访问流量统计进行排序,并动态更新对应的来访IP地址的流量模板(见步骤S107);
[0073] 处理单元的功能是丢弃异常的流量请求(见步骤S108)和转发正常的流量请求(见步骤S109)。
[0074] 以上所述,仅为本发明较佳的具体实施方式,提供给本领域普通技术人员来实现和使用本发明的,但本发明的保护范围并不局限于此,在本发明揭露的技术范围内,可以轻易的想到的变化或者替换,到应该涵盖在本发明的保护范围之内。因此,本发明的保护范围应以
权利要求书的保护范围为准。