一种生成用于检测网络节点的状态的训练集的方法转让专利

申请号 : CN202111382366.6

文献号 : CN114257517B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 梁志民孟绪颖王淼张玉军

申请人 : 中国科学院计算技术研究所

摘要 :

本发明提供一种生成用于检测网络节点的状态的训练集的方法,包括:构建多个网络结构,其彼此在网络规模和/或网络拓扑方面存在不同;根据构建的每种网络结构进行基于IS‑IS路由协议的状态模拟,其中,分别通过多种引发异常的手段在预定时段模拟各种异常状态,其余时段模拟正常状态;获取在各状态模拟时从相应的网络节点采集的数据包并基于指定的时间窗口构建多个样本及其标签,获得训练集,其中,样本的输入特征包含基础特征和统计特征,标签指示样本对应的网络节点的状态是否异常。本发明通过该训练集训练获得的节点异常检测模型,有效提升检测效果。

权利要求 :

1.一种生成用于检测网络节点的状态的训练集的方法,其特征在于,包括:构建多个网络结构,使其彼此在网络规模和/或网络拓扑方面存在不同;

根据构建的每种网络结构进行基于IS‑IS路由协议的状态模拟,其中,分别通过多种引发异常的手段在预定时段模拟各种异常状态,其余时段模拟正常状态;

获取在各状态模拟时从相应的网络节点采集的数据包并基于指定的时间窗口构建多个样本及其标签,获得训练集,其中,样本的输入特征包含基础特征和统计特征,标签指示与样本对应的网络节点的状态是否异常;

其中,基础特征包括网络配置的基础特征和各类报文的基础特征,统计特征包括各类报文关键字段的统计特征;

所述网络配置的基础特征包括:网络节点总数、链路总数;

各类报文的基础特征包括:不同级别的心跳报文的数量、链路状态报文的数量、全时序协议数据报文的数量和部分时序数据报文的数量;

各类报文关键字段的统计特征包括:链路状态报文的序列号字段的方差和极差、最大序列号字段的个数、每种序列号字段的个数、记录的链路总数、剩余时间字段为0的链路状态报文总数、部分时序数据报文的序列号字段方差和极差、以及全部心跳报文中的不同的最大传输单元值的数量。

2.根据权利要求1所述的方法,其特征在于,所述通过多种引发异常的手段在预定时段模拟各种异常状态的步骤包括:通过多种网络配置错误的手段,模拟配置错误状态;以及通过多种攻击网络节点的手段,模拟攻击网络节点时的状态。

3.根据权利要求1所述的方法,其特征在于,所述样本的输入特征基于指定的时间窗口内的数据包生成基础特征和统计特征的步骤包括:解析数据包,获得指定的时间窗口的配置信息和报文信息;

提取配置信息和报文信息的特征,获得网络配置和各类报文的基础特征;

按照指定的统计项目对各类报文信息的特征进行统计,获得各类报文关键字段的统计特征;

对网络配置的基础特征、所述各类报文的基本特征和所述各类报文关键字段的统计特征进行拼接,得到所述输入特征。

4.根据权利要求1到3任一项所述的方法,其特征在于,还包括对所述多个样本进行标签清洗,包括筛选出被标注为正常的样本中可能被错误标注的样本。

5.根据权利要求4所述的方法,其特征在于,利用基准模型对多个样本进行标签清洗,其包括:获取多个样本,包括标签为正常的正样本和标签为异常的负样本;

利用多个样本对基准模型进行多轮迭代,每轮迭代结束获得多个样本的异常概率值,并基于异常概率值和样本标签计算的第一总损失更新基准模型参数,基于异常概率值和动态阈值清洗正样本的错误标签,直至当轮基于全部正样本的异常概率值获得的标准差小于预设阈值,停止更新,获得训练集。

6.根据权利要求5所述的方法,其特征在于,所述基于异常概率值和动态阈值清洗正样本的错误标签的步骤包括:通过异常概率值和动态阈值的对比结果,筛选出异常概率值高于动态阈值对应的正样本;

将异常概率值高于动态阈值的正样本的标签重新标注为异常。

7.根据权利要求5所述的方法,其特征在于,所述动态阈值随着迭代次数增多,多个样本中错误标签的样本数目下降而动态变化,其中,动态阈值的计算方式如下:φ=μ+ησ,

其中,φ为动态阈值,η≥0, 为当轮正样本的异常概率值的平均值,为标准差,Pi表示当轮第i个正样本的异常概率值,N表示当轮的正样本总数。

8.一种节点异常检测模型的训练方法,其特征在于,包括按照以下方式对所述节点异常检测模型进行迭代训练直至模型收敛:利用根据权利要求1‑7任一项所述方法获得的训练集训练节点异常检测模型,根据输入特征判断对应网络节点的状态是否异常,获得每个样本的异常概率值;

利用全部样本的异常概率值和对应的样本标签计算第二总损失;

基于第二总损失更新节点异常检测模型参数,获得经训练的节点异常检测模型。

9.一种网络节点异常检测方法,其特征在于,包括:获取对被检测的网络中相应的网络节点提取的输入特征,该输入特征是根据一个时间周期从所述网络节点嗅探到的所有数据包构建得到的,输入特征包含基础特征和统计特征;

利用根据权利要求8所述训练方法得到的节点异常检测模型根据输入特征判断对应网络节点的状态是否异常,得到检测结果。

10.一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以实现权利要求1‑9中任一项所述方法的步骤。

11.一种电子设备,其特征在于,包括:

一个或多个处理器;以及

存储器,其中存储器用于存储一个或多个可执行指令;

所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现权利要求1‑9中任一项所述方法的步骤。

说明书 :

一种生成用于检测网络节点的状态的训练集的方法

技术领域

[0001] 本发明涉及域内路由协议安全领域,具体地说,涉及一种生成用于检测网络节点的状态的训练集的方法。

背景技术

[0002] IS‑IS路由协议是一种骨干网域内路由协议,是运营商广泛使用的内部网关协议之一,具有分层结构、可靠泛洪、校验认证等安全机制,保障了协议运行时的安全性。
[0003] 然而,IS‑IS路由协议在设计上依然存在漏洞缺陷,对于IS‑IS路由协议,路由的异常行为主要包括:部分序列号报文(PSNP)请求攻击、剩余时间(Remaining Time)置0攻击、序列号加一攻击、无效路由注入攻击、最大序列号攻击以及错误配置异常行为等。总之,这些异常可导致路由节点的计算资源被消耗,或产生虚假链路、路由环路等,从而影响了正常转发的效率;严重情况下可导致路由器的宕机,这可能会被利用干扰正常网络路由行为进而影响使用体验甚至造成财产损失。因此需要充分挖掘域内路由的异常行为,并针对性设计检测机制,以改善路由系统的脆弱性,提升网络环境的可靠性。
[0004] 目前,针对域内路由协议尤其是IS‑IS路由协议的异常行为检测方法存在局限。例如,通过周期性嗅探路由节点获得路由表来分析节点状态和网络信息,而该方法存在暴露路由关键信息的风险,且开放接口易使路由器遭受攻击;此外,通过外部协议,如网络控制报文协议(ICMP协议) 和简单网络管理协议(SNMP协议)可对网络链路时长和接口流量信息进行统计,从而推测路由系统的运行状况,然而这增加了额外配置协议的开销,同时对网络性能也带来较大的负荷。
[0005] 另一种,可采集网络内协议数据包并使用机器学习方法学习异常特征分布,虽然相比以上方式更简单高效,但是,其没有基于构建的不同网络规模或不同网络拓扑的网络结构,去获取通过多种引发异常的手段时的数据包,无法充分采集足够多类型的样本数据,导致模型能学习的异常特征受限,使得模型的检测范围受限;且仅考虑基本特征,未针对采用IS‑IS 路由协议的网络结构,提取的相应基础特征及统计特征设计,使模型检测不够精准等问题。
[0006] 因此,亟需通过获取多样、充足且标签准确的训练集,以训练获得一种针对IS‑IS路由协议的检测效果更好的模型。

发明内容

[0007] 因此,本发明的目的在于克服上述现有技术的缺陷,提供一种生成用于检测网络节点的状态的训练集的方法。
[0008] 本发明的目的是通过以下技术方案实现的:
[0009] 根据本发明的第一方面,提供一种生成用于检测网络节点的状态的训练集的方法,包括:
[0010] 构建多个网络结构,其彼此在网络规模和/或网络拓扑方面存在不同;根据构建的每种网络结构进行基于IS‑IS路由协议的状态模拟,其中,分别通过多种引发异常的手段在预定时段模拟各种异常状态,其余时段模拟正常状态;获取在各状态模拟时从相应的网络节点采集的数据包并基于指定的时间窗口构建多个样本及其标签,获得训练集,其中,样本的输入特征包含基础特征和统计特征,标签指示与样本对应的网络节点的状态是否异常。
[0011] 在本发明的一些实施例中,所述通过多种引发异常的手段在预定时段模拟各种异常状态的步骤包括:
[0012] 通过多种网络配置错误的手段,模拟配置错误状态;以及
[0013] 通过多种攻击网络节点的手段,模拟攻击网络节点时的状态。
[0014] 在本发明的一些实施例中,所述样本的输入特征基于指定的时间窗口内的数据包生成基础特征和统计特征的步骤包括:
[0015] 解析数据包,获得指定的时间窗口的配置信息和报文信息;
[0016] 提取配置信息和报文信息的特征,获得网络配置和各类报文的基础特征;
[0017] 按照指定的统计项目对各类报文信息的特征进行统计,获得各类报文关键字段的统计特征;
[0018] 对所述配置特征、所述各类报文的基本特征和所述各类报文关键字段的统计特征进行拼接,得到所述输入特征。
[0019] 在本发明的一些实施例中,所述网络配置的基础特征包括:网络节点总数、链路总数;
[0020] 各类报文的基础特征包括:不同级别的心跳报文的数量、链路状态报文的数量、全时序协议数据报文的数量和部分时序数据报文的数量;
[0021] 各类报文关键字段的统计特征包括:链路状态报文的序列号字段的方差和极差、最大序列号字段的个数、每种序列号字段的个数、记录的链路总数、剩余时间字段为0的链路状态报文总数、部分时序数据报文的序列号字段方差和极差、以及全部心跳报文中的不同的最大传输单元值的数量。
[0022] 在本发明的一些实施例中,生成训练集的方法还包括对所述多个样本进行标签清洗,包括筛选出被标注为正常的样本中可能被错误标注的样本。
[0023] 在本发明的一些实施例中,利用基准模型对所述多个样本进行标签清洗,其包括:
[0024] 获取多个样本,包括标签为正常的正样本和标签为异常的负样本;
[0025] 利用多个样本对基准模型进行多轮迭代,每轮迭代结束获得多个样本的异常概率值,并基于异常概率值和样本标签计算的第一总损失更新基准模型参数,基于异常概率值和动态阈值清洗正样本的错误标签,直至当轮基于全部正样本的异常概率值获得的标准差小于预设阈值,停止更新,获得训练集。
[0026] 在本发明的一些实施例中,所述基于异常概率值和动态阈值清洗正样本的错误标签的步骤包括:
[0027] 通过异常概率值和动态阈值的对比结果,筛选出异常概率值高于动态阈值对应的正样本;
[0028] 将异常概率值高于动态阈值的正样本的标签重新标注为异常。
[0029] 在本发明的一些实施例中,所述动态阈值随着迭代次数增多,多个样本中错误标签的样本数目下降而动态变化,其中,动态阈值的计算方式如下:
[0030] φ=μ+ησ,
[0031] 其中,φ为动态阈值,η≥0, 为当轮正样本的异常概率值的平均值,为标准差,Pi表示当轮第i个正样本的异常概率值,N表示当轮的正样本总数。
[0032] 根据本发明的第二方面,提供一种节点异常检测模型的训练方法,包括按照以下方式对所述节点异常检测模型进行迭代训练直至模型收敛:
[0033] 利用根据本发明的第一方面所述方法获得的训练集训练节点异常检测模型根据输入特征判断对应网络节点的状态是否异常,获得每个样本的异常概率值;
[0034] 利用全部样本的异常概率值和对应的样本标签计算第二总损失;
[0035] 基于第二总损失更新节点异常检测模型参数,获得经训练的节点异常检测模型。
[0036] 根据本发明的第三方面,提供一种网络节点异常检测方法,包括:
[0037] 获取对被检测的网络中相应的网络节点提取的输入特征,该输入特征是根据一个时间周期从所述网络节点嗅探到的所有数据包构建得到的,输入特征包含基础特征和统计特征;
[0038] 利用根据本发明的第二方面所述训练方法得到的节点异常检测模型根据输入特征判断对应网络节点的状态是否异常,得到检测结果。
[0039] 根据本发明的第四方面,提供一种计算机可读存储介质,其上包含有计算机程序,所述计算机程序可被处理器执行以实现本发明的第一方面、第二方面和第三方面中所述方法的步骤。
[0040] 根据本发明的第五方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储一个或多个可执行指令;所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现第一方面、第二方面和第三方面中所述方法的步骤。
[0041] 与现有技术相比,本发明的优点在于:
[0042] 1、本发明生成训练集的方法中,充分构建多个网络规模和/或网络拓扑不同的网络结构,并通过多种引发异常的手段在预定时段模拟各种异常状态以及正常状态,获取模拟各个状态时的数据包,基于相应数据包生成足够多且丰富的样本,可提升训练集中样本的多样性利用该训练集训练获得的节点异常检测模型,极大提升模型的检测范围和检测效果。
[0043] 2、本发明生成训练集的方法包括通过多种引发异常的手段在预定时段模拟各种异常状态,以及模拟正常状态,对正常和异常状态下的获取的数据包进行解析并针对性地设计统计特征,包括指定时间窗口内的网络配置、各类报文的基础特征和各类报文关键字段的统计特征,以提升节点异常检测模型对网络节点异常行为检测的范围和效果。
[0044] 3、本发明对样本进行标签清洗,利用基准模型以自训练的方式,评估样本的异常概率值,并结合坎泰利不等式(Cantelli’s Inequality)筛选出被标注为正常的样本中可能被错误标注的样本,对其标签进行反转,更新标签后重复上述流程,直至处理了全部可能存在错误标签的样本,获得高质量,标签更准确的训练集,使训练出的节点异常检测模型的检测效果相应提升,避免样本被错误标签污染而导致该模型检测效果的大幅下降。

附图说明

[0045] 以下参照附图对本发明实施例作进一步说明,其中:
[0046] 图1为根据本发明实施例的生成训练集的方法流程图;
[0047] 图2为根据本发明实施例的利用网络模拟器模拟构建的网络结构示意图;
[0048] 图3为根据本发明实施例的节点异常检测模型的训练方法流程图;
[0049] 图4为根据本发明实施例的网络节点异常检测方法流程图。

具体实施方式

[0050] 为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0051] 如在背景技术部分提到的,传统的技术手段获得的节点检测模型,无法基于构建的不同网络规模或不同网络拓扑的网络结构,去获取通过多种引发异常的手段时的数据包,无法充分采集足够多类型的样本数据,导致模型能学习的异常特征受限,使得模型的检测范围受限;且仅考虑基本特征,未针对采用IS‑IS路由协议的网络结构,提取的相应基础特征及统计特征设计,使模型检测不够精准。
[0052] 针对现有方法的缺陷,本发明通过构建多个不同网络规模、不同网络拓扑的网络结构,在相应网络结构中进行基于IS‑IS路由协议的状态模拟,如通过攻击某一网络节点,模拟该网络节点被攻击时的异常状态,并采集数据包,解析和获取该数据包的特征,按照指定的时间窗口构建样本的输入特征和标签,获得多个样本。其中,模拟异常状态时样本的标签标注为异常,模拟正常状态时样本的标签标注为正常;最后,基于多种网络结构以及在网络结构中模拟网络节点的各种异常状态和正常状态时采集的多个数据包,获得的样本丰富多样。
[0053] 进一步的,本发明还对多个样本进行标签清洗,筛选并修正可能被错误标注的样本,获得标签更准确的训练集,利用该训练集训练获得的节点异常检测模型,在检测网络节点的状态是否异常时的检测效果更好,避免出现标签错标的失误导致模型的异常检测效果大幅下降。
[0054] 根据本发明的一个实施例,本发明在对训练集中的样本进行标签清洗时采用基准模型对该训练集中多个样本进行标签清洗,该基准模型采用逻辑回归分类模型,利用标签清洗后的训练集训练的节点异常检测模型可采用逻辑回归分类模型、支持向量机或极端梯度提升(XGBoost)模型等机器学习模型。
[0055] 基于上述研究,根据本发明的一个实施例,提供一种生成用于检测网络节点的状态的训练集的方法,用于获得训练集,参见图1,方法包括步骤S1、S2、S3和S4,为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
[0056] 步骤S1:构建多个网络结构,使其彼此在网络规模和/或网络拓扑方面存在不同。
[0057] 根据本发明的一个实施例,多个网络结构可借助网络模拟器(例如:图形网络模拟器(Graphical Network Simulator 3,GNS3平台)或网络仿真器(Mininet平台))构建,先借助网络模拟器随机生成若干网络节点(也可称为虚拟路由器),每个网络节点对应一个虚拟端口号,基于IS‑IS路由协议与其他网络节点建立连接,形成网络结构。其中,随机生成的网络节点的数量控制在3个‑50个之间,即在该范围内形成不同网络规模的网络结构,另外,网络节点间可按照不同的连接方式形成不同的网络拓扑,如形成“田”、“目”字结构的网络拓扑,或其他不规则形状的网络拓扑。
[0058] 参见图2,利用图形网络模拟器(Graphical Network Simulator 3,GNS3) 生成具有不同拓扑或者节点数量的多个网络结构。为了保证样本数据的多样性,首先随机选择网络规模参数,例如这里选择的网络节点总数为13,其链路总数为15。在GNS3平台上模拟13个网络节点,构造链路总数为15的网络结构。选择网络结构中的其中一个网络节点作为虚拟主机节点 (Node1‑1)上安装运行路由软件套件(FRRouting),使得主机具备IS‑IS 路由协议堆栈,实现网络基于IS‑IS路由协议进行数据传输,为各个网络节点建立连接。另外,除虚拟主机节点的其他各个网络节点均对应一个虚拟端口号,例如分别为5000、5001、5002、5003、5004、5005、5006、5007、 5008、5009、5010、5011。
[0059] 步骤S2:根据构建的每种网络结构进行基于IS‑IS路由协议的状态模拟,其中,分别通过多种引发异常的手段在预定时段模拟各种异常状态,其余时段模拟正常状态。
[0060] 根据本发明的一个实施例,通过多种引发异常的手段在预定时段模拟各种异常状态,包括:
[0061] 模拟方式1,通过多种网络配置错误的手段,模拟配置错误状态,如网络节点之间特定字段参数(如IS‑IS路由协议中的System ID、Level参数)配置错误而导致的邻接关系故障,网络中出现断路等异常状态。
[0062] 模拟方式2、通过多种攻击网络节点的手段,模拟攻击网络节点时的状态,即利用相应网络结构中的某一网络节点作为攻击路由器,通过多种攻击的手段对其他网络节点进行攻击,模拟攻击后产生的各种异常状态。参照图3,将网络结构中的虚拟主机节点(Node1‑1)作为攻击路由器,此时,利用该攻击路由器,通过多种攻击的手段对其他网络节点进行攻击,模拟攻击后产生的各种异常状态,如:(1)进行部分时序数据报文(PSNP) 请求攻击,使得其他网络节点不断回复请求而消耗计算资源;(2)进行剩余时间字段(Remaining Time)置0攻击,攻击者篡改特定链路状态报文(LSP报文)的特定链路的Remaining Time为0后重新泛洪出去,导致其他节点认为该链路剩余存活时间为0而删除该路由表项的异常状态;
(3) 序列号加一攻击,攻击者篡改特定LSP报文的特定链路的序列号,将其加一或更多后重新泛洪出去,导致触发受害网络节点的反击机制而消耗计算资源的异常状态;(4)无效路由注入攻击,攻击者构造拓扑复杂、网络节点众多的虚假链路信息对网络节点进行注入,导致消耗网络节点计算资源的异常状态;(5)最大序列号攻击,攻击者篡改特定LSP报文的特定链路的序列号为最大0xffffffff后重新泛洪出去,导致目标网络节点触发早熟化机制而短暂宕机的异常状态等。
[0063] 根据本发明的一个实施例,其余时段模拟正常状态,包括:
[0064] 模拟方式3、通过在网络结构中的各个网络节点间进行正常传输数据,模拟正常状态。
[0065] 步骤S3:获取在各状态模拟时从相应的网络节点采集的数据包并基于指定的时间窗口构建多个样本及其标签,获得训练集,其中,样本的输入特征包含基础特征和统计特征,标签指示与样本对应的网络节点的状态是否异常。
[0066] 根据本发明的一个实施例,数据包的采集通过在相应的网络结构中,实现模拟方式1、模拟方式2或模拟方式3时,利用GNS3平台或Mininet 平台集成的抓包工具(如Wireshark或tcpdump镜像)获取相应网络节点的所有端口对应数据包,并将数据包转储为pcap格式文件。
[0067] 根据本发明的一个实施例,基于指定的时间窗口构建多个样本及其标签,比如10:00‑12:00采用模拟方式2,即进行多种攻击网络节点,那这部分数据包就是异常的,按照时间窗口大小为1min对该部分数据包进行解析、提取和统计获得样本的输入特征,对应样本的标签均标注为1(1表示异常),8:00‑10:00采用模拟方式3,生成样本标签均标注为0(0表示正常),例如当前获得的训练集中包含的异常样本总量为12045个,正常样本总量为11976个。其中,样本的输入特征基于数据包内指定的时间窗口生成基础特征和统计特征,进一步包括:
[0068] 解析数据包,获得指定的时间窗口的配置信息和报文信息;
[0069] 提取配置信息和报文信息的特征,获得网络配置和各类报文的基础特征。其中,网络配置的基础特征包括:网络节点总数、链路总数;各类报文的基础特征包括:不同级别的心跳报文(Hello报文)的数量、链路状态报文(LSP报文)的数量、全时序协议数据报文(CSNP报文)的数量和部分时序数据报文(PSNP报文)的数量。
[0070] 按照指定的统计项目对各类报文信息的特征进行统计,获得各类报文关键字段的统计特征。其中,各类报文关键字段的统计特征包括:链路状态报文(LSP报文)的序列号字段的方差和极差、最大序列号字段的个数、每种序列号字段的个数、记录的链路总数、剩余时间字段为0的链路状态报文总数、部分时序数据报文(PSNP报文)的序列号字段方差和极差、以及全部心跳报文(Hello报文)中的不同的最大传输单元值(MTU值) 的数量。本发明针对IS‑IS路由协议异常行为特点,扩充了针对性的统计特征,如序列号攻击情形下,攻击方持续不断的发送序列号加一或更多的链路状态报文,因此,链路状态报文的序列号方差、链路状态报文的不同序列号个数等统计特征均有利于对网络节点的异常状态进行更精确的检测。
[0071] 对上述网络配置特征、各类报文的基本特征和各类报文关键字段的统计特征进行拼接,得到样本的输入特征。例如,某个时间窗口内的输入特征为<13,15,1,0,0,3,0,0,0,15,0,0,0,0,0>,并分别对应了如下所示的表 1对应的各个特征。
[0072] 表1:特征汇总表
[0073]
[0074]
[0075] 根据上述表格中的PSNP报文的LSP Entry序列号字段方差,具体获得方式如下(同样的,其他报文序列号字段的方差或极差采用以下类似的方式获得):
[0076] 如对应时间窗口收到有100个PSNP报文,每个PSNP报文的都有若干个LSP entry字段,每个LSP entry都有一个LSP‑ID字段,如 0000.0000.0001.00‑00、0000.0000.0010.00‑01等,假设有12个不同的LSP‑ID,将这些LSP entry按照LSP‑id分成12组,然后分别计算各个组内的序列号字段的方差,最后取这12个值中的最大值作为该报文的LSP Entry序列号字段方差。
[0077] 步骤S4:对多个样本进行标签清洗,包括筛选出被标注为正常的样本中可能被错误标注的样本。
[0078] 根据本发明的一个实施例,在筛选出可能被错误标注的样本后,可对该样本的标签进行反转,将原本标注的正常标签重新标注为异常标签;或者是剔除掉该样本。由此,获得标签更准确的训练集。
[0079] 根据本发明的一个实施例,利用基准模型对多个样本进行标签清洗,其包括:
[0080] 获取多个样本,包括标签为正常的正样本和标签为异常的负样本。
[0081] 利用多个样本对基准模型进行多轮迭代,每轮迭代结束获得多个样本的异常概率值,并基于异常概率值和样本标签计算的第一总损失更新基准模型参数,基于异常概率值和动态阈值清洗正样本的错误标签,直至当轮基于全部正样本的异常概率值获得的标准差小于预设阈值,停止更新,获得标签训练集。
[0082] 根据本发明的一个实施例,基准模型采用逻辑回归分类模型,利用当前的多个样本训练逻辑回归分类模型,样本的构成包括标签和输入特征,基于样本的输入特征获得所有正样本的异常概率值,其中,样本的异常概率值可采用如下方式计算:
[0083]
[0084] 其中,w表示基准模型的权重参数,b表示基准模型的偏置参数, P(y=1|xi)为第i个样本为异常的异常概率值,xi为第i个样本的输入特征。
[0085] 第一总损失可采用交叉熵损失函数计算,计算方式如下:
[0086]
[0087] 其中,N为样本总数,yi为样本i此时的标签,xi为第i个样本的输入特征,基准模型的参数基于第一总损失并采用梯度下降法更新。
[0088] 由于正常状态下获取的数据包数目繁多且网络节点的状态复杂多变,所以基于正常状态下的数据包构成的多个样本中,很可能存在着被标注为正常的样本中可能被错误标注的样本,而异常状态下获取的数据包可以明确观察到攻击造成的影响,因此异常样本的标签通常准确,因此,只需清洗正样本中的错误标签。
[0089] 根据本发明的一个实施例,基于异常概率值和动态阈值清洗正样本的错误标签,进一步包括如下步骤:
[0090] 通过异常概率值和动态阈值的对比结果,筛选出异常概率值高于动态阈值对应的正样本;
[0091] 将异常概率值高于动态阈值的正样本的标签重新标注为异常。
[0092] 根据本发明的一个实施例,动态阈值随着迭代次数增多,多个样本中错误标签的样本数目下降而动态变化,其中,采用基于坎泰利不等式的思想获得的动态阈值,基于该动2
态阈值判断不正常标签的假阳性上界为 1/(1+η),即某个真实的正常样本被错误地重新
2
标注为异常的概率小于 1/(1+η),因此,动态阈值可采用如下计算方式:
[0093] φ=μ+ησ      (3);
[0094] 其中,φ为动态阈值,η≥0, 为当轮正样本的异常概率值的平均值,为标准差,Pi表示当轮第i个正样本的异常概率值,N表示当轮的正样本总数。依照这样的方式计算的动态阈值,能更准确地筛选出被标注为正常的样本中可能被错误标注的样本,以避免对真实正常的样本重新标注为异常。
[0095] 根据本发明的一个实施例,基于以列表listP表示的所有正样本的异常概率值,获得|listP|=11976,均值μ=0.1124,标准差σ=0.006865,η取值为100,则需要将异常概率值大于0.1124+100*0.006865=0.7989的正样本的标签重新标注为异常。新的负样本总量为12176个,正样本总量为 11845个。利用新的标签数据重新训练逻辑回归分类模型,并计算得到所有正样本新的异常概率值列表listP,计算获得|listP|=11845,均值μ= 0.10914,标准差σ=0.005143,则此时需要将异常概率值大于 0.10914+100*0.005143=
0.62344的正样本重新标注为异常。重复这个过程,直到异常概率值P的标准差小于预设阈值(0.005)。最终负样本总量为 12679个,正样本总量为11342个。
[0096] 基于以上方法获得的训练集,是基于在多个网络结构中模拟多种网络节点可能出现的状态时的数据包,并基于相应数据包生成足够多且丰富的样本,以及经过标签清洗获得标签更准确的高质量训练集,因此,利用该训练集训练节点异常检测模型,可极大提升模型的检测范围和检测效果。
[0097] 根据本发明的一个实施例,本发明还利用上述生成训练集的方法获得的训练集,提供一种节点异常检测模型的训练方法,包括按照以下步骤进行迭代训练直至模型收敛,参见图3,包括步骤a1、a2和a3:
[0098] 步骤a1、利用根据本发明生成训练集的方法获得的训练集训练节点异常检测模型根据输入特征判断对应网络节点的状态是否异常,获得每个样本的异常概率值。
[0099] 根据本发明的一个实施例,节点异常检测模型可与基准模型采用同一个逻辑回归分类模型,也可以采用与基准模型不同的逻辑回归分类模型。基于相应的逻辑回归分类模型获得每个样本的异常概率值,异常概率值的计算与上述式子(1)相同。
[0100] 步骤a2、利用全部样本的异常概率值和对应的样本标签计算第二总损失。
[0101] 根据本发明的一个实施例,可采用交叉熵损失函数计算第二总损失,计算方式如下:
[0102]
[0103] 其中,N为样本总数,y′i为样本i的经过标签清洗处理后的标签,xi为第i个样本的输入特征。
[0104] 步骤a3、基于第二总损失更新节点异常检测模型参数,获得经训练的节点异常检测模型。
[0105] 根据本发明的一个实施例,节点异常检测模型的参数基于第二总损失并通过梯度下降法进行更新,直至第二总损失在预设阈值内或节点异常检测模型达到预设迭代轮次,停止更新。
[0106] 基于上述的训练集及训练方法获得的节点异常检测模型,对网络节点的异常状态进行检测达到很好的检测效果,因此,根据本发明的一个实施例,利用本发明中获得的节点异常检测模型,提供一种节点异常检测方法,参见图4,包括步骤b1和b2:
[0107] 步骤b1:获取对被检测的网络中相应的网络节点提取的输入特征,该输入特征是根据一个时间周期从网络节点嗅探到的所有数据包构建得到的,输入特征包含基础特征和统计特征。
[0108] 步骤b2:利用根据本发明的节点异常检测模型的训练方法得到的节点异常检测模型根据输入特征判断对应网络节点的状态是否异常,得到检测结果。
[0109] 为了修正网络节点的异常状态,需对相应网络节点的异常状态做进一步分析,该节点异常检测方法还可以包括步骤b3:在检测结果表明相应网络节点的状态为异常时进行异常报告。
[0110] 为验证本发明采用上述的训练集训练获得节点异常检测模型,采用测试集对该模型进行测试,用已训练好的模型,对采集的数据包进行检测,最终测试效果在各个方面均达到好的效果,如下所示:
[0111] 准确率:0.9547,召回率:0.9764,精确率和召回率的调和均值:0.9654,分类准确率:0.9603。
[0112] 需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0113] 本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0114] 计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0115] 以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。