技术领域
[0001] 本发明涉及网络安全技术领域,更具体的说是涉及基于特征选择和深度学习的网络流量异常检测方法与系统。
相关背景技术
[0002] 目前,网络信息技术的迅速发展,使得互联网数据规模日益增大、网络应用范围不断扩大,因此网络安全受到越来越多专家学者的高度关注。异常检测作为网络安全入侵检测领域中的一种常见方法,旨在检测网络中的异常行为或不寻常模式,其核心是根据正常行为进行建模,凡是偏离基线太多的行为则被标记成异常,能够检测出已知和未知的网络攻击。随着网络攻击的日益复杂化,传统的基于规则异常检测方法已经难以满足当前网络安全的需求,随着机器学习技术的兴起,基于机器学习的异常检测技术在入侵检测中得到了广泛的应用。
[0003] 但是,传统的基于机器学习的异常检测方法容易忽略网络数据的序列特性,而专注于单个的网络会话记录,由于一些复杂的网络攻击不仅只包含在单个会话之中,而是持续不断的发起攻击,因此仅关注单个网络会话记录的检测容易产生高漏报,从而影响检测的精确性。并且,由于网络流量的数据规模大且特征维度高,使得建模所需的计算资源开销大,为硬件条件带来了很大挑战。
[0004] 因此,如何在利用少量计算资源的基础上提升网络流量检测的准确度是本领域技术人员亟需解决的问题。
具体实施方式
[0078] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0079] 实施例1
[0080] 如图1所示,本发明实施例公开了基于特征选择和深度学习的网络流量异常检测方法,包括:
[0081] 获取网络数据流并进行预处理,得到数据特征集;
[0082] 基于数据特征集进行筛选,得到输入特征集;
[0083] 构建包括输入网络、检测网络和分类网络的异常检测模型;
[0084] 将输入特征集输入至输入网络,得到嵌入向量集;
[0085] 将嵌入向量集输入至检测网络,得到输出矩阵;
[0086] 将输出矩阵输入至分类网络得到检测结果,实现对异常网络流量的检测。
[0087] 实施例2
[0088] 本发明针对网络数据流的时序特性、数据量大和特征维度高的特点,为保证网络流量异常检测准确度高、降低误报和漏报情况的同时能平衡降低整体的计算开销,公开了基于特征选择和深度学习的网络流量异常检测方法,至少能够解决如下问题:
[0089] (1)有效去除噪声数据,用于后续模型的学习与训练;
[0090] (2)针对网络数据流特征设计合理的特征选择方法,使用最少的特征来表征网络数据信息;
[0091] (3)选择合适的深度学习算法,能够高效处理序列数据;
[0092] (4)构建科学的检测模型对数据进行检测,并提高了检测准确度。
[0093] 本发明实施例公开了基于特征选择和深度学习的网络流量异常检测方法,包括:
[0094] 获取网络数据流并进行预处理,得到数据特征集:
[0095] 优选的,获取来自网络通信中的原始网络数据包作为本实施例待检测的网络数据流,原始网络数据为网络通信中的一组双向流,有起点和终点的字节的数据序列,包括输入流和输出流。
[0096] 优选的,预处理,具体包括:
[0097] 基于网络数据流进行特征提取,得到多个提取特征组成提取特征集;
[0098] 基于提取特征集进行数据清洗,得到数据特征集;
[0099] 提取特征至少包括:源地址到目的地址以及目的地址到源地址的双向信息。
[0100] 优选的,本实施例以一个TCP流或UDP流为一个单位来提取网络数据流中的特征,以便得到以流为单位的记录,其中特征为来自传输层的统计信息,记录指的是在某个特定条件下对网络数据流进行了捕获和存储,包含了网络通信会话的一组信息,在这里一条记录就是指该TCP流或UDP流中所包含的信息。
[0101] 优选的,得到的提取特征中可能会含有大量的缺失值、无限值和负值这种机器无法直接处理的信息,因此需要对数据进行清理,本实施例对提取特征集中的所有提取特征均进行数据清洗,所有清洗后的提取特征组成数据特征集。
[0102] 优选的,数据清洗,具体包括:
[0103] 将提取特征中的无限值修改为该列的最大值;
[0104] 将提取特征中的负值替换为该列的最小值;
[0105] 将提取特征中的缺失值删除。
[0106] 基于数据特征集进行筛选,得到输入特征集:
[0107] 筛选具体包括:
[0108] 基于数据特征集进行第一特征筛选,得到初选特征集;数据特征集包括多个数据特征;
[0109] 基于初选特征集进行第二特征筛选,得到输入特征集;
[0110] 如图2所示,获取初选特征集,具体包括:
[0111] 基于数据特征集输入至随机森林模型,得到数据特征对应的不纯度减少量;
[0112] 基于不纯度减少量得到数据特征对应的特征重要性评分;
[0113] 基于特征重要性评分对数据特征进行降序排序,得到特征序列;
[0114] 基于特征序列计算得到积累重要性;
[0115] 选取当积累重要性大于等于第一阈值对应的最少前m个数据特征构成初选特征集。
[0116] 优选的,本发明基于随机森林模型进行第一特征筛选,即特征初步选择,在随机森林部分,采用特征重要性(Feature importance)来评估网络数据流的特征重要性,并使用积累重要性进行特征选择。
[0117] 优选的,基于数据特征集F={f1,f2,……,fn}输入至随机森林模型,通过统计每个数据特征f的树节点分裂时不纯度的下降数值,得到数据特征对应的不纯度减少量ΔG。
[0118] 优选的,基于不纯度减少量ΔG得到数据特征对应的特征重要性评分Feature importance:
[0119] Feature importance=∑k(ΔG
[0120] 其中k表示树中所有通过数据特征f分裂的节点,通过上述公式对数据特征的重要性进行评分,每个数据特征fi都对应一个特征重要性评分I(fi),特征重要性评分越高则表示该数据特征对模型的预测能力贡献越大。
[0121] 优选的,基于特征重要性评分对数据特征进行降序排序,得到特征序列F'={f'1,f'2,…,f'n},且满足I(f'1)≥I(f'2)≥…≥I(f'n),基于排序后的数据特征计算积累重要性:
[0122]
[0123] 其中,CI(f'i)表示从最重要的特征到第i个特征的积累重要性;
[0124] 通过设置第一阈值即积累重要性阈值T1,进而确定重要性特征的合集,选取最少前m个排序后的数据特征的积累重要性CI(f'm)满足:CI(f'm)≥T1,即前m个特征的累积重要性占总重要性的比例至少为T1,将满足条件的前m个排序后的数据特征作为初选特征,构成初选特征集。
[0125] 优选的,本发明基于互信息与斯皮尔曼相关系数对初选特征集进行第二特征筛选,衡量特征与标签之间的关系以及特征与特征之间的关系,从而删除冗余特征,来获得最能表征网络数据流信息的特征。
[0126] 优选的,如图3所示,获取输入特征集,具体包括:
[0127] 获取初选特征集中数据特征对应的标签;
[0128] 基于初选特征集中的数据特征与标签得到多个互信息;
[0129] 基于互信息得到互信息平均值;
[0130] 选取大于互信息平均值的互信息对应的数据特征作为第一筛选特征;
[0131] 基于初选特征集中任意两个数据特征得到相关性系数;
[0132] 选取相关性系数大于第二阈值的两个数据特征中互信息大的数据特征作为第二筛选特征;
[0133] 基于所有的第一筛选特征和第二筛选特征组成输入特征集。
[0134] 优选的,初选特征集Fc={f1,f2,……,fm}对应的标签集L={l1,l2,……,lk},其中,初选特征集中的数据特征与标签集中的标签一一对应。
[0135] 优选的,基于初选特征集中的数据特征与对应标签得到多个互信息I(Fc;L):
[0136]
[0137] 其中,p(f,l)表示Fc和L联合概率分布函数,p(f)和p(l)分别表示Fc和L的边缘概率分布函数。
[0138] 优选的,本实施例采用斯皮尔曼相关系数来衡量初选特征集中任意两个数据特征之间的相关性,并设定第二阈值,即相关性阈值T2作为筛选条件,若任意两个数据特征之间的相关性系数大于相关性阈值,则比较两个数据特征与对应标签的互信息的大小,选取互信息大的数据特征作为第二筛选特征。
[0139] 优选的,基于所有的第一筛选特征和第二筛选特征组成输入特征集,作为后续模型训练的最终数据集。
[0140] 构建包括输入网络、检测网络和分类网络的异常检测模型:
[0141] 优选的,异常检测模型包括输入网络net1、检测网络net2和分类网络net3。
[0142] 将输入特征集输入至输入网络,得到嵌入向量集:
[0143] 优选的,本实施例输入网络net1采用密集层,用于将输入特征集中的每个特征映射到一个嵌入向量E中,将输入特征集中的特征转换为可以被Transformer模型接收的格式;映射公式为:
[0144] E=net1(X)
[0145] 其中,X表示输入特征集中的特征,所有的嵌入向量E共同组成嵌入向量集。
[0146] 将嵌入向量集输入至检测网络,得到输出矩阵:
[0147] 优选的,检测网络包括多个依次连接的结构相同的检测单元;
[0148] 如图4所示,检测单元均包括:多头注意力模块、第一残差连接模块、第一层归一化模块、前馈网络、第二残差连接模块和第二层归一化模块;
[0149] 嵌入向量集输入至多头注意力模块,得到多头注意力信息;
[0150] 第一残差连接模块将嵌入向量集和多头注意力信息进行融合,融合结果输入至第一层归一化模块处理,得到第一处理数据;
[0151] 第一处理数据输入至前馈网络得到转换特征;
[0152] 第二残差连接模块将第一处理数据和转换特征进行融合,融合结果输入至第二层归一化模块处理,得到第二处理数据;
[0153] 第二处理数据作为下一个检测单元的输入,通过所有的检测单元处理,得到输出矩阵。
[0154] 优选的,得到多头注意力信息,具体包括:
[0155] 基于嵌入向量集将所有的元素投影到多个空间,得到多组向量集合;
[0156] 向量集合包括:Q向量、K向量和V向量;
[0157] 基于Q向量、K向量和V向量计算每个头的注意力权重,得到各个头的注意力权重;
[0158] 基于注意力权重和V向量进行加权求和,得到每个头的输出矩阵;
[0159] 基于所有的输出矩阵进行拼接,通过线性变化整合得到多头注意力信息。
[0160] 优选的,经过多头注意力模块计算嵌入向量集序列内部元素之间的权重,来捕获序列中的信息,是Transformer模型能够捕获长距离依赖的关键,能够使每个元素都可以依据序列中的其他元素来调整自身的表示,多头注意力是并行多个注意力机制允许模型从不同角度学习输入数据的表示。
[0161] 优选的,将所有的元素投影到多个空间,其中空间的数量对应多头注意力模块中头的数量。
[0162] 优选的,Q向量对应Query向量,K向量对应Key向量,V向量对应Value向量。
[0163] 优选的,将所有的输出向量进行拼接,对得到的拼接向量进行线性投影整合所有头的信息,得到多头注意力信息。
[0164] 优选的,第i个头的注意力权重为:
[0165]
[0166] 其中, 分别表示第i个头中,用于将输入的元素分别投影到不同的Q向量空间、K向量空间和V向量空间的权重矩阵,dk表示K向量的维度。
[0167] 优选的,第一残差连接模块将嵌入向量集Es和多头注意力信息H进行融合,融合结果输入至第一层归一化模块处理,得到第一处理数据S1:
[0168] S1=LayerNorm(Es+H)
[0169] 其中,S1表示第一残差连接模块和第一层归一化模块的输出,通过这种方式提升模型在处理深层结构时的性能和稳定性。
[0170] 优选的,如图5所示,前馈网络包括:第一卷积、第二卷积、批归一化层、第一全局平均池化层、第一全连接层和第二全连接层;
[0171] 第一处理数据S1依次输入至第一卷积和第二卷积进行卷积操作,卷积结果依次输入至批归一化层和第一全局平均池化层处理,处理结果依次输入至第一全连接层和第二全连接层处理,得到转换特征。
[0172] 优选的,本发明引入非线性激活函数来使模型能够捕获更加复杂和抽象的数据特征,本实施例,在原始Encoder(编码器)中原有的两层线性层的基础上加入了两层卷积层,利用卷积的局部感知能力来捕获数据的局部特点,同时结合自注意力对长距离依赖的学习能力,使模型可以更好的学习数据的特征。
[0173] 优选的,第一卷积的卷积操作为:
[0174] fConv1=max(0,S1*W1conv+bconv)
[0175] 第二卷积的卷积操作为:
[0176] fConv2=max(0,fConv1*W2conv+bconv)
[0177] 其中,*表示卷积操作,W1conv表示第一卷积核的权重,W2conv表示第二卷积核的权重,bconv表示偏置项;
[0178] 通过两次卷积操作来增加卷积的感受野。
[0179] 优选的,第一全连接层处理公式为:
[0180] fDense1=max(0,YWdense1+bdense1)
[0181] 第二全连接层处理公式为:
[0182] fDense2=fDense1Wdense2+bdense2
[0183] 其中,Y表示批归一化层和第一全局平均池化层处理后的结果,Wdense1与Wdense2分别表示第一权重矩阵和第二权重矩阵,bdense1与bdense2分别表示第一偏移参数和第二偏移参数;
[0184] 优选的,通过前馈网络各个模块的顺序操作,形成了一个从输入到输出的复杂转换,在模型中实现提取并转换特征,最终得到转换特征Z。
[0185] 优选的,第二残差连接模块将第一处理数据S1和转换特征Z进行融合,融合结果输入至第二层归一化模块处理,得到第二处理数据S2:
[0186] S2=LayerNorm(S1+Z)
[0187] 其中,S2表示第二残差连接模块和第二层归一化模块的输出。
[0188] 优选的,第二处理数据作为下一个检测单元的输入,以此类推,通过堆叠的预设个数的检测单元处理,最终将嵌入向量集Es转化得到输出矩阵M。
[0189] 将输出矩阵输入至分类网络得到检测结果,实现对异常网络流量的检测:
[0190] 优选的,分类网络包括:第二全局平均池化层和第三全连接层;
[0191] 第三全连接层内置有激活函数;
[0192] 输出矩阵输入至第二全局平均池化层处理,处理结果输入至第三全连接层处理并通过激活函数处理,得到检测结果,实现对异常网络流量的检测。
[0193] 优选的,本实施例采用Sigmoid激活函数,分类网络用于将输出矩阵M通过分类头输出最终的检测结果,即是异常网络流量还是正常网络流量。
[0194] 优选的,还包括:
[0195] 基于输入特征集和交叉熵损失函数对异常检测模型进行训练,得到训练好的异常检测模型;
[0196] 获取待检测网络数据流并输入至训练好的异常检测模型,得到对应的检测结果,实现对异常网络流量的检测。
[0197] 实施例3
[0198] 如图6所示,基于特征选择和深度学习的网络流量异常检测系统,包括:预处理模块、筛选模块、模型构建模块、嵌入向量获取模块、输出矩阵获取模块和结果输出模块;
[0199] 预处理模块,用于获取网络数据流并进行预处理,得到数据特征集;
[0200] 筛选模块,用于基于数据特征集进行筛选,得到输入特征集;
[0201] 模型构建模块,用于构建包括输入网络、检测网络和分类网络的异常检测模型;
[0202] 嵌入向量获取模块,用于将输入特征集输入至输入网络,得到嵌入向量集;
[0203] 输出矩阵获取模块,用于将嵌入向量集输入至检测网络,得到输出矩阵;
[0204] 结果输出模块,用于将输出矩阵输入至分类网络得到检测结果,实现对异常网络流量的检测。
[0205] 经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于特征选择和深度学习的网络流量异常检测方法与系统,具有以下有益效果:
[0206] 1、本发明通过在数据预处理过程中进行特征选择,使用最少的特征来表征网络数据信息,实现了数据降维,极大的减少训练所需的计算资源开销,进一步提高了检测效率,并提高了模型输出结果的可解释性。
[0207] 2、本发明通过数据预处理有效去除了网络数据流中的冗余特征和干扰信息,缓解了由于不规则数据对模型产生的负面影响,进而提高了检测结果的准确度。
[0208] 3、本发明在考虑网络流量作为序列数据的同时也考虑到局部特点,使得模型能够更好适应各类复杂问题,应用场景更加广泛,便于推广应用。
[0209] 4、本发明通过融合不同的神经网络,在增强特征提取能力的同时优化了性能和效率,进而提高了检测方法的检测效率性能与泛化性。
[0210] 5、本发明方法和系统可应用部署在防火墙后、服务器上等位置来对网络进行实时监控,根据输出的检测结果,网络流量异常时能够及时报警以便安全人员做出后续处理。
[0211] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0212] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。