本发明属于异常流量检测,尤其涉及一种基于lstm的恶意流量检测方法及装置。
背景技术:
1、网络流量作为信息的重要载体,通过分析网络流量可以具体直观地了解通信双方的行为活动,对网络关键节点的流量进行采集汇聚,对系统进行整体感知,异常告警,实施动态实时可视化检测,重点分析异常登录行为、异常数据包传输、异常用户ip地址等信息,是构建异常流量检测算法必须重点考虑的问题。ids(intrusion detection system,入侵检测系统)是常用的进行网络流量分析的技术,目前也出现了众多进行流量检测的算法,如深度学习、熵值计算等,但网络异常流量在时间和空间上都具有一定的相关性,传统的深度学习算法难以满足实时性的要求,不适用于真实的网络环境。
2、目前基于特征字段的方法在异常流量检测领域具有较为广泛的应用,通过分析已知流量数据,从中提取字符串作为特征字段,建立特征字段库对流量数据进行匹配检查。该方法可以较好的检测出已知病毒的攻击,但对于攻击变种检测效果不佳,而且特征字段库的建立、维护和更新较为困难,需要占据额外存储。
3、也有一些专家将卷积神经网络(cnn)与长短期卷积神经网络(lstm)进行混合来检测异常流量,现有的基于lstm的卷积神经网络异常流量检测方法,通过在cnn提取单个数据包空间特征的基础上,充分挖掘攻击流量的结构特点,利用lstm提取数据流的时间特征,向lstm部分输出一个高维数据包向量,lstm部分将高维数据包向量处理成一个分类概率向量,最后输入至softmax层得到最终分类结果,具有较高的检测准确率和极低的误警率。但此技术仍存在以下缺陷:(1)将完整流量数据参与神经网络的运算,未能有效且准确地提取恶意流量特征;(2)未提出一种灵活的恶意用户频繁攻击惩罚机制,只是提出如何对网络流量进行检测,但检测完成后,如何对该恶意用户进行标记,以及何时恢复其访问权限,均未做说明。同时现有技术中的熔断机制的普适性较差,且其研究的网络流量数据是静态的,不适应动态变化的流量数据场景。
技术实现思路
1、本发明旨在解决上述问题,提供一种基于lstm的恶意流量检测方法及装置。
2、第一方面,本发明提供一种基于lstm的恶意流量检测方法,包括以下步骤:
3、步骤1:获取原始网络流量;
4、步骤2:根据网络实际情况及攻击模式,选取数据包数、字节数、流持续时间和每秒平均请求数作为检测指标;
5、步骤3:利用pca对前述检测指标进行线性变换,求解检测指标的特征值和特征向量,计算各检测指标的方差贡献率,选取累计贡献率大于设定值的前m个检测指标进入检测模型;
6、步骤4:将历史流量数据和经pca处理后提取的前m个检测指标,及对应的网络状态放入lstm网络;所述lstm网络包括输入层、lstm-1层、lstm-2层、全连接层、softmax分类层和输出层;
7、采用adam算法对lstm网络进行训练,包括:
8、步骤4.1:根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计进行动态调整,得到每个参数的学习速率;可加速模型收敛,减小震荡;
9、步骤4.2:对时间序列向量化,将网络流分成包,保留包的时间步长信息;
10、步骤4.3:将每个数据包中的流量字节按照时间顺序依次输入至lstm-1层网络中,为每个数据包生成一个数据包向量,将这些向量按照网络流内通信双方的交互顺序进行排列,形成数据包向量序列;故此阶段将每个数据包都进行了实时处理;步骤4.4:将步骤4.3得到的数据包向量放至lstm-2层学习网络流特征,即学习每个数据包向量之间的序列关系,形成一个网络流向量;该网络流向量包含了网络流量的结构化信息,lstm-2层则不要求对数据包向量进行实时处理,当数据包向量的数量达到规定要求时,即可进行判别和分类;
11、步骤4.5:将lstm-1层和lstm-2层得到的多级特征向量进行融合连接,输入到全连接的神经网络中进行学习;其中,利用timedistributed包装器来将lstm-1层生成的数据包向量的神经网络层包装为时间序列上的处理层,以将lstm-1层生成的多个数据包向量序列转化为一个lstm-2层所需要的序列数据;
12、步骤4.6:对步骤4.5全连接层输出的向量进行维度转换,并进行softmax分类;步骤4.7:根据历史数据预测网络状态,如输出结果为正常,则返回到步骤4;如输出结果为异常,则将此流量信息放至异常流量库中,并执行步骤5;
13、步骤5:对异常流量数据进行熔断处理;控制器检测该网络流量中是否存在攻击流的特征信息;若有,则暂停其对目标服务器的访问;若没有,则再次对该流量数据进行核实,核实结果属于“正常”流量,则返回步骤4;核实结果属于“异常”流量,则将此流量信息放至异常流量库中,并将熔断网络流的信息作为sdn交换机的流表进行下发,执行熔断处理。
14、进一步,本发明所述基于lstm的恶意流量检测方法,所述lstm-1层和lstm-2层两阶段lstm网络通过学习数据包和网络流两个层次上的特征,对网络流量数据特征进行全面提取,通过学习参数来遗忘之前时间点中不重要的信息,选择记忆重要信息,其结构包括三个乘法门构成的专门记忆单元,分别为遗忘门、输入门和输出门;
15、所述遗忘门用来学习信息在记忆单元中存储的时间,并决定当前是否需要忘记之前时间点的某些信息,通过sigmoid函数对信息进行读取,0表示完全丢弃,1表示完全保留;具体表达式如下:
16、ft=σa(ef·[ht-1,xl]+df)
17、其中,ft表示lstm网络的更新遗忘门,σa(x)为遗忘门激活函数,ef为遗忘门权值矩阵,ht-1为上一层的输出门,xl为源网络流,df为偏置向量;
18、所述输入门决定需要学习的信息,由sigmoid层对输入值进行更新,利用tanh层创建一个新的候选值向量并加入到状态中;
19、
20、其中,ei为输入门权重矩阵,di为偏置向量,σc(x)为输入门激活函数,ec与dc分别代表tanh函数权重与系统偏置向量,wt为候选状态;
21、由上式可得:
22、ct=ftct-1+ilwt
23、其中ct为状态信息。
24、所述输出门决定最终输出的值;首先通过sigmoid确定输出状态,再通过tanh函数将输出信息进行映射;输出门ht如下:
25、ht=σb(eo·[ht-1,xl]+do)tanh(ct)
26、其中,eo为输出门权重矩阵,do为偏置向量,σb(x)为输出门激活函数,tanh()为tanh层激活函数。
27、进一步,本发明所述基于lstm的恶意流量检测方法,步骤4.1所述根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计进行动态调整,得到每个参数的学习速率;包括计算并保存一个指数衰减的历史平方梯度的平均值vt,保存一个历史梯度的指数衰减均值mt;
28、mt=α1mt-1+(1-α1)τt
29、
30、其中mt和vt分别表示梯度的一阶矩和二阶矩估计,当mt和vt初始化为零向量或当衰减很好的时候(如α1和α2趋于1),mt和vt都趋向于0,可通过计算偏差校正的一阶矩和二阶矩估计来抵消偏差:
31、
32、
33、据此可得模型参数θ的更新规则如下:
34、
35、α1取值为0.9,α2取值为0.999,k为步长,取值为250-500,ε取值为10-8。
36、进一步,本发明所述基于lstm的恶意流量检测方法,步骤5所述进行熔断处理时,设置首次惩罚时间为t0,经过该惩罚时间后,系统自动将该惩罚流表删除,并恢复该主机对服务器资源的访问权限,但此时控制器的攻击源表中已经存在该攻击流的相关信息,若该主机继续发起攻击请求,系统在进行检测后确定其为攻击流量,则不仅该主机会被再次“熔断”,还会增加一个追加惩罚时间ta;
37、t=t0+(m-1)2ta;
38、其中,m为恶意攻击请求的次数。
39、进一步,本发明所述基于lstm的恶意流量检测方法,所述进行熔断处理时,当一个网络流反复呈现出攻击流量的特征时,其熔断时间t就会越来越长,若超过规定的上限值,则对该主机ip进行封锁,剥夺其对服务器资源的永久访问权限。
40、进一步,本发明所述基于lstm的恶意流量检测方法,所述进行熔断处理时,采用lru算法来减少控制器的存储容量。
41、第二方面,本发明提供一种基于lstm的恶意流量检测系统,包括流量收集模块、流量数据处理模块、异常流量检测模块及异常流量处理模块;
42、所述流量收集模块,用于获取原始网络流量;将网络关键节点的流量进行采集汇聚,进行归集处理后发送给其他流量分析组件的系统模块;
43、所述流量数据处理模块,用于根据网络实际情况及攻击模式,对采集到的网络流量数据进行特征提取,选取检测指标,并进行归一化处理,以减小不同数据属性分量之间的权重差距,利用pca对前述检测指标进行线性变换,求解检测指标的特征值和特征向量,计算各检测指标的方差贡献率,选取累计贡献率大于设定值的前m个检测指标进入检测模型;最后将其放至存储系统中;
44、所述异常流量检测模块,用于根据异常流量检测模型将流量数据分为正常流量和异常流量两部分来处理,利用新的流量数据对已有的异常流量检测模型进行动态更新;
45、所述异常流量处理模块,用于根据模型检测结果和异常流量信息,对异常流量进行熔断处理,并设置相应惩罚时间限制其对服务器资源的访问权限。
46、进一步,本发明所述基于lstm的恶意流量检测系统,所述异常流量检测模块在进行流量数据处理时,将历史流量数据和经pca处理后提取的前m个检测指标,及对应的网络状态放入lstm网络;所述lstm网络包括输入层、lstm-1层、lstm-2层、全连接层、softmax分类层和输出层;采用adam算法对lstm网络进行训练;通过两阶段多特征融合的lstm网络来学习数据包和网络流两个层次上的特征进行模型训练,其中对每个数据包进行处理得到数据包向量,再将其输入到第二阶段的网络流层进行处理。
47、第三方面,本发明提供一种基于lstm的恶意流量检测的电子装置,包括相电连接的处理器和存储器;所述存储器用于存储计算机程序;所述处理器执行前述计算机程序时,可实现前述第一方面所述的基于lstm的恶意流量检测方法。
48、第四方面,本发明提供一种计算机可读存储介质,所述存储介质上存储有计算机程序;所述计算机程序被执行时,可实现前述第一方面所述的基于lstm的恶意流量检测方法。
49、本发明所述基于lstm的恶意流量检测方法及装置,具体有以下有益效果:
50、(1)改进的pca检测指标分析法可以有效地对网络数据进行降维,减小计算复杂度,保留流量数据关键信息,提高检测效率;
51、(2)适合网络流量数据的结构形式;多个字节共同组成数据包,多个数据包共同组成网络流,利用lstm神经网络分阶段对流量数据进行提取分析能够充分学习到其结构信息;
52、(3)有利于进行实时处理;在lstm-1层,将每个数据包实时处理后得到数据包向量,将其存储到后端以进入下一阶段,所以,如果不进行分阶段处理,而是对整个网络流进行检测和分类,则当网络流长度较大时,间隔时间内的任务量将会很大,不利于实时处理;
53、(4)利用“熔断再恢复”的攻击缓解技术,恢复正常主机对网络关键节点资源的访问权限,并对多次发起攻击行为的主机,延长其惩罚时间,对服务器资源的访问权限进行限制。