一种异常流量检测分析方法转让专利

申请号 : CN202310317541.6

文献号 : CN116405274B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张慧娜赵海韵武臻冷超

申请人 : 中国华能集团有限公司北京招标分公司华能信息技术有限公司

摘要 :

本发明公开了一种异常流量检测分析方法,涉及异常流量检测技术领域,包括获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口;获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值;基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机。本申请通过历史异常流量记录次数确定待检测端口,对待检测端口的进行基线分析,得到基线阈值,以判断是否存在流量异常,从而找到对应的主机和端口。提高了异常流量检测的精度,保证了网络流量的安全运行。

权利要求 :

1.一种异常流量检测分析方法,其特征在于,所述方法包括:获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口;

获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值;

基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机;

根据历史流量记录和当前流量记录进行基线分析,包括:读取待检测端口的NetFlow记录并统计,得到历史流量记录,确定目标时间粒度;

根据历史流量记录并以目标时间粒度为单位计算基线值,并动态更新基线值;

基于基线值确定基线阈值;

确定目标时间粒度,包括:

在历史流量记录中,获取多个时间粒度及其对应的异常流量,基于时间粒度建立第一状态空间,基于异常流量建立第二状态空间;

根据第一状态空间和第二状态空间得到非线性依赖度,基于非线性依赖度确定目标时间粒度;

基于非线性依赖度确定目标时间粒度,包括:将非线性依赖度中最大值所对应的时间粒度作为目标时间粒度。

2.如权利要求1所述的方法,其特征在于,根据历史异常流量记录次数确定待检测端口,包括:基于历史异常流量记录次数和预设时间得到流量异常频率;

获取异常流量均值,基于异常流量均值和均值阈值得到偏离度。

3.如权利要求2所述的方法,其特征在于,根据历史异常流量记录次数确定待检测端口,还包括:基于偏离度修正异常频率,将修正后的异常频率大于频率阈值的端口确定为待检测端口。

4.如权利要求1所述的方法,其特征在于,动态更新基线值,包括:获取今天某个时间段下正常流量值和昨天对应时间段下的基线值;

基于今天某个时间段下正常流量值和昨天对应时间段下的基线值更新基线值。

5.如权利要求1所述的方法,其特征在于,基于基线值确定基线阈值,包括:基于基线值和预设常数得到初始基线阈值,基于线性依赖度修正初始基线阈值得到基线阈值。

6.如权利要求1所述的方法,其特征在于,找出产生异常流量的主机,包括:根据异常时段的NetFlow记录得到端口的字节数和封包数,并进行Top排序,得到前n个可能存在异常流量的主机。

7.如权利要求6所述的方法,其特征在于,所述方法还包括:若n不等于1,则获取n个主机的上下行流量,基于上下行流量确定各个主机的异常概率;

若n等于1,则该主机为异常流量的主机。

说明书 :

一种异常流量检测分析方法

技术领域

[0001] 本申请涉及异常流量检测技术领域,更具体地,涉及一种异常流量检测分析方法。

背景技术

[0002] 随着计算机和通信技术的发展,电力企业网络的规模越来越大,复杂性也在不断提升,各种应用业务也越来越广泛,因此发生各种故障的可能性也越大,各式各样的异常流量也随之而来。异常流量的产生不仅会影响网络的正常运行、降低工作效率,更有可能造成企业机密信息的泄露,影响企业的发展。因此,异常流量检测成为电力企业面临的一大难题。
[0003] 现有技术中,异常流量检测的准确性低,可靠性差,误判率较高,无法满足现代企业或公司要求。
[0004] 因此,如何提高异常流量检测准确性,是目前有待解决的技术问题。

发明内容

[0005] 本发明提供一种异常流量检测分析方法,用以解决现有技术中异常流量检测准确性低的技术问题。所述方法包括:
[0006] 获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口;
[0007] 获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值;
[0008] 基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机。
[0009] 本申请一些实施例中,根据历史异常流量记录次数确定待检测端口,包括:
[0010] 基于历史异常流量记录次数和预设时间得到流量异常频率;
[0011] 获取异常流量均值,基于异常流量均值和均值阈值得到偏离度。
[0012] 本申请一些实施例中,根据历史异常流量记录次数确定待检测端口,还包括:
[0013] 基于偏离度修正异常频率,将修正后的异常频率大于频率阈值的端口确定为待检测端口。
[0014] 本申请一些实施例中,根据历史流量记录和当前流量记录进行基线分析,包括:
[0015] 读取待检测端口的NetFlow记录并统计,得到历史流量记录,确定目标时间粒度;
[0016] 根据历史流量记录并以目标时间粒度为单位计算基线值,并动态更新基线值;
[0017] 基于基线值确定基线阈值。
[0018] 本申请一些实施例中,确定目标时间粒度,包括:
[0019] 在历史流量记录中,获取多个时间粒度及其对应的异常流量,基于时间粒度建立第一状态空间,基于异常流量建立第二状态空间;
[0020] 根据第一状态空间和第二状态空间得到非线性依赖度,基于非线性依赖度确定目标时间粒度。
[0021] 本申请一些实施例中,基于非线性依赖度确定目标时间粒度,包括:
[0022] 将非线性依赖度中最大值所对应的时间粒度作为目标时间粒度。
[0023] 本申请一些实施例中,动态更新基线值,包括:
[0024] 获取今天某个时间段下正常流量值和昨天对应时间段下的基线值;
[0025] 基于今天某个时间段下正常流量值和昨天对应时间段下的基线值更新基线值。
[0026] 本申请一些实施例中,基于基线值确定基线阈值,包括:
[0027] 基于基线值和预设常数得到初始基线阈值,基于线性依赖度修正初始基线阈值得到基线阈值。
[0028] 本申请一些实施例中,找出产生异常流量的主机,包括:
[0029] 根据异常时段的NetFlow记录得到端口的字节数和封包数,并进行Top排序,得到前n个可能存在异常流量的主机。
[0030] 本申请一些实施例中,所述方法还包括:
[0031] 若n不等于1,则获取n个主机的上下行流量,基于上下行流量确定各个主机的异常概率;
[0032] 若n等于1,则该主机为异常流量的主机。
[0033] 通过应用以上技术方案,获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口;获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值;基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机。本申请通过历史异常流量记录次数确定待检测端口,对待检测端口的进行基线分析,得到基线阈值,以判断是否存在流量异常,从而找到对应的主机和端口。提高了异常流量检测的精度,保证了网络流量的安全运行。

附图说明

[0034] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035] 图1示出了本发明实施例提出的一种异常流量检测分析方法的流程示意图。

具体实施方式

[0036] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0037] 本申请实施例提供一种异常流量检测分析方法,如图1所示,该方法包括以下步骤:
[0038] 步骤S101,获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口。
[0039] 本实施例中,根据端口的历史异常流量记录次数得到异常频率较高的端口,将其作为待检测端口进行流量监控。
[0040] 为了提高端口检测的准确性,本申请一些实施例中,根据历史异常流量记录次数确定待检测端口,包括:基于历史异常流量记录次数和预设时间得到流量异常频率;获取异常流量均值,基于异常流量均值和均值阈值得到偏离度。
[0041] 本申请一些实施例中,根据历史异常流量记录次数确定待检测端口,还包括:基于偏离度修正异常频率,将修正后的异常频率大于频率阈值的端口确定为待检测端口。
[0042] 本实施例中,基于异常流量均值和均值阈值得到偏离度,偏离度即异常流量均值和均值阈值之差。基于偏离度修正异常频率具体为:
[0043] 设定偏离度为A,预设偏离度数组A0(A1,A2,A3,A4),其中,第一预设偏离度为A1,第二预设偏离度为A2,第三预设偏离度为A3,第四预设偏离度为A4,且A1<A2<A3<A4;
[0044] 设定异常频率为L,预设异常频率修正系数数组为F0(F1,F2,F3,F4),其中,第一预设异常频率修正系数为F1,第二预设异常频率修正系数为F2,第三预设异常频率修正系数为F3,第四预设异常频率修正系数为F4,且0.8<F1<F2<F3<F4<1.2;
[0045] 根据偏离度与各个预设偏离度之间的关系,确定异常频率修正系数,对异常频率进行修正;
[0046] 若A<A1,确定第一预设异常频率修正系数F1作为异常频率修正系数,修正后的异常频率为L*F1;
[0047] 若A1≤A<A2,确定第二预设异常频率修正系数F2作为异常频率修正系数,修正后的异常频率为L*F2;
[0048] 若A2≤A<A3,确定第三预设异常频率修正系数F3作为异常频率修正系数,修正后的异常频率为L*F3;
[0049] 若A3≤A<A4,确定第四预设异常频率修正系数F4作为异常频率修正系数,修正后的异常频率为L*F4。
[0050] 步骤S102,获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值。
[0051] 本实施例中,基线分析是一种多时间段平均法,其思想是把一个时间段有限细分,计算每个细分中变量的平均值,将其值连接起来,即为参考基线,它表征着一个系统的常态值,应用在流量监控上,则反映了正常的流量变化情况。
[0052] 本申请一些实施例中,根据历史流量记录和当前流量记录进行基线分析,包括:读取待检测端口的NetFlow记录并统计,得到历史流量记录,确定目标时间粒度;根据历史流量记录并以目标时间粒度为单位计算基线值,并动态更新基线值;基于基线值确定基线阈值。
[0053] 本实施例中,从NetFlow采集的信息流中,找到待检测端口的字段进行分析,以目标时间粒度为单位,取前n个天数当前分钟对应的某端口的采样点,剔除最大和最小数据,求出它们的平均值和标准差,并利用格拉布斯准则剔除坏值,之后再利用。
[0054] 例如,划分为工作日和非工作日,以五分钟(目标时间粒度)为单位,取前20个工作日当前分钟对应的某端口的采样点。对每个符合条件的端口的前 20个工作日该设备的流量值进行排序,去除最大和最小的5%(最大值和最小值),并求得平均值,即为该时段某个符合条件的端口对应的基线值。
[0055] 为了提高本申请一些实施例中,确定目标时间粒度,包括:在历史流量记录中,获取多个时间粒度及其对应的异常流量,基于时间粒度建立第一状态空间,基于异常流量建立第二状态空间;根据第一状态空间和第二状态空间得到非线性依赖度,基于非线性依赖度确定目标时间粒度。
[0056] 本申请一些实施例中,基于非线性依赖度确定目标时间粒度,包括:将非线性依赖度中最大值所对应的时间粒度作为目标时间粒度。
[0057] 本实施例中,时间粒度需要选择一个适中的范围,过大导致检测精度低,过小导致资源的重复浪费。因此需要确定一个合适的时间粒度。
[0058] 将所有的时间粒度和异常流量进行状态空间的建立。设定第一状态空间为X,第二状态空间为Y,计算Xn与k个近邻点的欧式距离平均值,公式如下:
[0059]
[0060] 对于X中的样本点xn,xrn,1,xrn,2,…xrn,k,表示xn在X中的k个近邻点。
[0061] 对于Y中的样本点yn,ysn,1,ysn,2…ysn,k,表示yn在Y中的k个近邻点,将其映射到X空间中,计算xn与k个近邻点xsn,1,xsn,2,…xsn,k的欧式距离平均值,公式如下:
[0062]
[0063] 根据状态空间的映射关系判断两者的联系关系,非线性依赖度公式如下:
[0064]
[0065] 0< ≤1, 趋近于0(小于预设阈值),状态空间X和Y无联系关系,该时间粒度和异常流量不存在联系关系。 明显大于0,存在X到Y的联系关系。越大因联系性越强。
[0066] 在得出的所有的非线性依赖度中挑出最大值,说明该时间粒度和异常流量联系最紧密,选此时间粒度作为目标时间粒度。
[0067] 本申请一些实施例中,动态更新基线值,包括:获取今天某个时间段下正常流量值和昨天对应时间段下的基线值;基于今天某个时间段下正常流量值和昨天对应时间段下的基线值更新基线值。
[0068] 本实施例中,将每一天分成m个时间段,I1,I2...Im,假设pi是今天Ii时间段正常情况下的流量值,而bi是到昨天为止Ii时间段的基线值,这样经过今天Ii时间段之后,新的基线值bi更新为:
[0069] bi=αpi+(1‑α)bi
[0070] 其中,α代表今天的流量在基线中所占的比重,如果只针对周一至周日的流量进行基线分析,可以直觉地将α设为0.15(即1/7) 。
[0071] 为了提高基线阈值的准确性,本申请一些实施例中,基于基线值确定基线阈值,包括:基于基线值和预设常数得到初始基线阈值,基于线性依赖度修正初始基线阈值得到基线阈值。
[0072] 本实施例中,此处基线值为更新后的,设定Ti为一个时间段细分的基线阈值,bi为基线值,
[0073] Ti=K*bi
[0074] 其中,K为常数,通过上式仅得初始基线阈值,存在一定的时间影响的误差,因此需要根据线性依赖度修正。
[0075] 设定线性依赖度为S,预设线性依赖度数组S0(S1,S2,S3,S4),其中,第一预设线性依赖度为S1,第二预设线性依赖度为S2,第三预设线性依赖度为S3,第四预设线性依赖度为S4,且S1<S2<S3<S4;
[0076] 预设修正系数数组G0(G1,G2,G3,G4),其中,第一预设修正系数为G1,第二预设修正系数为G2,第三预设修正系数为G3,第四预设修正系数为G4,且0.7<G1<G2<G3<G4<1.3;
[0077] 根据线性依赖度与各个预设线性依赖度之间的关系,确定修正系数,修正初始基线阈值;
[0078] 若S<S1,确定第一预设修正系数G1作为修正系数,修正后的基线阈值为Ti*G1;
[0079] 若S1≤S<S2,确定第二预设修正系数G2作为修正系数,修正后的基线阈值为Ti*G2;
[0080] 若S2≤S<S3,确定第三预设修正系数G3作为修正系数,修正后的基线阈值为Ti*G3;
[0081] 若S3≤S<S4,确定第四预设修正系数G4作为修正系数,修正后的基线阈值为Ti*G4。
[0082] 步骤S103,基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机。
[0083] 本申请一些实施例中,找出产生异常流量的主机,包括:
[0084] 根据异常时段的NetFlow记录得到端口的字节数和封包数,并进行Top排序,得到前n个可能存在异常流量的主机。
[0085] 本实施例中,各种异常流量与封包数目(packets)或者字节数(bytes)存在一定的对应关系。蠕虫感染为例分析,当蠕虫感染时,就网络流量而言,会有大量的数据封包数目或数据字节,然而蠕虫所散布的字节数与正常信息相比较会小很多,由此可知蠕虫感染的情况下,网络中封包的数量统计会明显增加,而字节统计不会有明显变化。所以这时候统计封包数目这个字段值比较有用,可以更有效地检测网络是否有蠕虫病毒这种异常流。采用TopN方法进行排序,具体过程为本领域常规技术手段,在此不再赘述。
[0086] 本申请一些实施例中,所述方法还包括:若n不等于1,则获取n个主机的上下行流量,基于上下行流量确定各个主机的异常概率;若n等于1,则该主机为异常流量的主机。
[0087] 本实施例中,采用TopN的方法只是将前N个主机列为最有可能流量异常的主机群。但是,不能确定为某个具体的主机,因此根据主机对应的上下行流量确定各个主机的异常概率。
[0088] 设定主机上行流量为C,预设上行流量数组C0(C1,C2,C3,C4),其中,第一预设上行流量为C1,第二预设上行流量为C2,第三预设上行流量为C3,第四预设上行流量为C4,且C1<C2<C3<C4;
[0089] 预设主机异常概率数组H0(H1,H2,H3,H4),其中,第一预设主机异常概率为H1,第二预设主机异常概率为H2,第三预设主机异常概率为H3,第四预设主机异常概率为H4,且H1<H2<H3<H4;
[0090] 根据主机上行流量与各个预设上行流量之间的关系,确定主机异常概率;
[0091] 若C<C1,确定第一预设主机异常概率H1作为主机异常概率;
[0092] 若C1≤C<C2,确定第二预设主机异常概率H2作为主机异常概率;
[0093] 若C2≤C<C3,确定第三预设主机异常概率H3作为主机异常概率;
[0094] 若C3≤C<C4,确定第四预设主机异常概率H4作为主机异常概率。
[0095] 根据下行流量对主机异常概率进行修正;
[0096] 设定下行流量为D,预设下行流量数组D0(D1,D2,D3,D4),其中,第一预设下行流量为D1,第二预设下行流量为D2,第三预设下行流量为D3,第四预设下行流量为D4,且D1<D2<D3<D4;
[0097] 预设修正系数数组K0(K1,K2,K3,K4),其中,第一预设修正系数为K1,第二预设修正系数为K2,第三预设修正系数为K3,第四预设修正系数为K4,且0.7<K1<K2<K3<K4<1.3;
[0098] 根据下行流量与各个预设下行流量之间的关系,确定修正系数对异常概率进行修正;
[0099] 若D<D1,确定第一预设修正系数K1作为修正系数,修正后的异常概率为H0*K1;
[0100] 若D1≤D<D2,确定第二预设修正系数K2作为修正系数,修正后的异常概率为H0*K2;
[0101] 若D2≤D<D3,确定第三预设修正系数K3作为修正系数,修正后的异常概率为H0*K3;
[0102] 若D3≤D<D4,确定第四预设修正系数K4作为修正系数,修正后的异常概率为H0*K4。
[0103] 通过应用以上技术方案,获取一段预设时间内所有端口的历史异常流量记录次数,根据历史异常流量记录次数确定待检测端口;获取待检测端口的历史流量记录和当前流量记录,并进行基线分析得到流量的基线值和基线阈值;基于基线阈值判断是否存在流量异常,若存在流量异常,则获取对应异常时段的NetFlow记录,并找出产生异常流量的主机。本申请通过历史异常流量记录次数确定待检测端口,对待检测端口的进行基线分析,得到基线阈值,以判断是否存在流量异常,从而找到对应的主机和端口。提高了异常流量检测的精度,保证了网络流量的安全运行。
[0104] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD‑ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
[0105] 为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
[0106] 基线分析的过程具体如下:
[0107] 读取NetFlow记录,从NetFlow采集的信息流中,找到目的端口的字段进行分析,判断其是否为基线统计所需要的目标对象。如果是知名端口,先检查该目的端口是否属于黑名单端口,如果是,则将该端口的流量记录进行统计,并写入历史表供以后基线计算使用;如果是非知名端口,先检查该目的端口是否属于白名单端口,如果不是,则将所有相关端口的流量记录作为整体进行统计。据此辅助筛选待检测端口。
[0108] 从历史数据确定基线值,公司或组织的群体成员具有相似的行为特性,则其网络流量也具有高度的一致性,即随着组织成员的作息,网络流量具有周期性规律和尖峰发布情况。根据这一特性,我们将算法分为工作日与非工作日两种。以五分钟(目标时间粒度)为单位,取前20个工作日当前分钟对应的某端口的采样点。对每个符合条件的端口的前 20个工作日该设备的流量值进行排序,去除最大和最小的5%(最大值和最小值),并求得平均值,即为该时段某个符合条件的端口对应的基线值。
[0109] 当某一时间段细分中的所监控的流量超过基线阈值时,此时间段则被称为异常时段,追踪这一时间段的记录进行进一步分析,根据NetFlow记录,找出产生异常流量的主机。主要步骤是通过分析NetFlow原始记录,对该时段、该端口的字节数或封包数目进行top排序,从而找出出现问题的主机及使用的端口,再进行进一步的处理。
[0110] 最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。