论文部分内容阅读
摘 要: 本文针对移动警务网络复杂多变、数据量大的特点,提出一种基于孤立森林算法的网络流量监测方法。该方法以网络IP数据流为基础,通过对IP数据流提取特征参数,并将特征参数作为输入向量,利用孤立森林算法进行训练以实现监测。这种方法能够快速、有效地检测出移动警务网络中的异常流量,精确率高,在一定程度上对移动警务网络的智能运维和安全防护起到重要作用。
关键词: 孤立森林,算法,移动警务,网络,流量监测
中图分类号: TP391.0 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.12.051
本文著录格式:袁艺芳,李雁,陈绪,等. 基于孤立森林算法的移动警务网络流量监测方法研究[J]. 软件,2019,40(12):229232
Research on Mobile Police Network Traffic Monitoring Method
Based on Isolated Forest Algorithm
YUAN Yi-fang1, LI Yan2, CHEN Xu2, GAO Yong-long2, XI Xin2
(1. Science and Technology Information Bureau of the Ministry of public security 100005, China;
2. Tianjin Public Security Bureau Science and Technology Information Office 300393, China)
【Abstract】: Mobile police network is complicated and changeable, and it has a very large amount of data to be handled. According to these characteristics, a network traffic monitoring method based on isolated forest algorithm is proposed in this paper. This method is based on the IP network data. Feature parameters are extracted for each IP data flow, and the feature parameters are taken as the input vectors for isolated forest algorithm to train isolated trees and achieve monitoring. This method can detect abnormal traffic in mobile police network quickly and effectively, which can play an important role in intelligent operation and security protection of mobile police network.
【Key words】: Isolated forest; Algorithm; Mobile police; Network; Traffic monitoring
0 引言
2002年以来,公安部對公安信息移动接入及应用系统安全建设进行不断完善,全国公安系统信息化得到了很大的提升。2017年初,天津市公安局新一代移动警务系统开始建设,目前已建设完成投入运行。新一代移动警务平台体系相对复杂、运维成本高且难度大,平台中一旦出现问题,往往需要大量的专业人员参与,协同诊断问题,耗时长,代价高。为缓解以上问题,我们对移动警务平台中网络流量数据进行分析,利用一种基于孤立森林算法的网络流量监测方法对网络流量异常检测。目的是可以及时发现网络攻击行为和网络结构问题引起的异常流量,从而增强网络态势感知能力和安全防护能力,对移动警务平台的智能化运维有重要推进作用。
网络流量异常是指网络的流量行为偏离正常行为的情形,引起的原因有网络设备异常、网络操作异常、闪现拥挤异常、网络攻击行为等。目前,国内外学者已经提出了多种网络流量异常检测方法,通常可分为基于分类、基于统计、基于聚类及基于信息论的网络流量异常检测方法等[1-4]。这些网络流量异常检测方法,通常首先需要对正常和异常的网络行为、网络流量模式分别进行定义和分析,其次通过特征分析、数据建模等方式对网络流量数据进行检测。大多方法局限性较强,对特定模式或者特定特征的网络异常行为才有较好的检测效果,而且前期数据分析和建模工作量大,部分方法复杂度也很高[5,6]。
移动警务网络复杂多变、数据量大,未知的网络结构或者网络行为模式时有发生,而且在移动警务网络流量分析中异常流量具有随机性、孤立性和稀疏性,因此获取网络异常流量的难度较大。因此很多情况需要在无监督下进行检测,在执行监测任务中,对时效性要求往往也比较高,这进一步对我们选择的方法提出了更高的要求。孤立森林算法是一种基于集成的快速无监督异常检测方法,具有线性时间复杂度和高精准度[7]。本文基于孤立森林算法提出了一种网络流量监测方法,可以快速、有效地进行网络流量异常检测,对于未知网络结构或者网络行为的情况有较好的检测效果,可适用于移动警务网络流量监测中。
1 孤立森林(iForest,Isolation Forest)算法原理 孤立森林算法由刘飞、陈开明、周志华在2008年首次提出[8]。不同于其他异常检测算法通过距离、密度等量化样本间疏离程度的方式,孤立森林算法利用一种被称为孤立树(iTree,Isolation Tree)的二叉搜索树结构来孤立样本,通过对样本点的孤立来检测异常值。由于异常值的数量较少,而且与大部分样本疏离,因此异常值会被更早地孤立出来。
iForest 由t个iTree组成,每个iTree是一个二叉树结构。实现步骤如下[9]:
训练阶段:
(1)训练数据集, 。从中随机选择个样本点构成的子集,放入树的根节点。
(2)从个维度中随机指定一个维度,在当前节点数据中随机产生一个切割点,切割点产生于当前节点数据中指定维度的最大值和最小值之间,即:
。
(3)以此切割点生成一个超平面,将当前数据空间划分为2个子空间:把指定维度小于的样本点放入当前节点的左子节点,大于等于的样本点放入当前节点的右子节点。
(4)递归步骤(2)和(3),不断构造新的子节点,直到所有的子节点中只有一个样本点(无法再继续切割),或孤立树已到达指定高度。
检测阶段:
把所有的iTree树构建好之后,就可以对测试数据进行检测了。
对于测试集中的每一个数据样本点,令其遍历每一棵孤立树iTree,计算点在森林中的平均高度,并对所有点的平均高度做归一化处理。点在iTree上的高度,即点在iTree树上从根节点沿对应的条件分支往下走,穿过中间的节点,直至到达叶子节点,在此过程中经过的路径长度,或者说所走过的边的数量。图1中是4个测试样本(a,b,c,d)遍历一棵iTree的示意图。可以看出,b和c在这棵iTree的高度为3,a的高度是2,d的高度是1。而d最有可能是异常,因为其最早就被孤立(isolated)了。
图1 测试样本遍历一棵iTree示意图
Fig.1 Test sample traversing an iTree schematic
异常分数的计算公式如下:
(1)
其中
(2)
是二叉搜索树的平均路径长度,用来对结果进行归一化处理。而其中的是调和级数,可以通过公式来估计,是欧拉常数,其值为0.5772156649。
异常分数的使用,通常根据以下原则:
(1)异常分数越接近1,则其是异常点的可能性越高;
(2)如果异常分数远小于0.5,那么基本可以确定为正常数据;
(3)如果所有异常分数都在0.5附近,那么数据不包含明显的异常样本。
在移动警务网络流量中,绝大部分是正常流量,正常的业务流量相对集中于若干种业务类型。如果对业务流进行适当的特征提取和特征筛选,得到能够表征业务流特点的特征向量,使正常业务流与异常流有较好的区分度,然后使用孤立森林算法进行异常流量检测,则异常流量将与大部分样本有较高的疏离度,异常值更容易被孤立出来。我们以对IP数据流的检测为例,提出了基于孤立森林算法的网络流量异常检测方法。
2 基于孤立森林算法的网络流量监测方法
本文提出的基于孤立森林算法的网络流量监测方法流程如图2所示。
图2 基于孤立森林算法的网络流量监测方法流程图
Fig.2 Flow chart of network traffic monitoring method based on isolated forest
我们首先采集大量IP数据包,得到每个IP数据包的源IP地址、目的IP地址、协议号、源端口、目的端口、时间戳、包长、序列号、确认号、FLAGS标识等数据。然后根据IP包的这些数据,按会话区分出IP数据流(同属于同一个会话数据包分为一个流)。流是指符合特定的流规范(specification)和超时(timeout)约束的一系列数据包的集合[10]。对于每个IP数据流提取出一组特征,包括流内的数据包数量、数据包平均长度、数据包最大长度,长数据包数量、短数据包数量、流的总延时,数据包最大延时、数据包平均延时、长延时数据包数量、单向数据包数量、数据包重发数量等参数。其中在统计长数据包数量和短数据包数量时,可以把数据包的长度与设定的阈值相比较,长度大于和小于该阈值的数据包分别作为长数据包和短数据包。在判定长数据包和短数据包时,也可以分别使用不同的阈值,具体阈值根据数据的情况设定。数据包的延时由该数据包与流中上一个数据包的时间戳之差换算得到,将第一个数据包则延时设为0。长延时数据包数量则是指流中数据包延时大于设定阈值的数据包的数量。单向数据包数量是指流中由同一个源IP地址和源端口发出的数据包的数量。数据包重发数量则是指流中数据包的序列号与前面数据包序列号相同的情况发生的次数。这些特征参数反映了流的规模、大小分布、到达时间间隔、网络质量等情况。
整个方法流程分为训练阶段和检测阶段,简述如下:
在训练阶段,利用大量数据作为训练数据集,对于訓练数据集提取出各个流的特征参数后,把每个流的一组特征参数组成一个向量,然后根据孤立森林算法训练阶段的步骤进行训练,构建所有的孤立树iTree。
在检测阶段,对于测试数据集提取出各个流的特征参数并组成向量,然后根据孤立森林算法测试阶段的步骤,把测试集中的每个特征向量,遍历每一棵孤立树,计算其在森林中的平均高度,以及计算异常分数,根据异常分数判断测试样本是否属于异常数据。
3 实验结果
3.1 实验数据集
使用DPDK网络数据包加速技术[11]对限定范围内的移动警务网络的IP数据包进行采集,通过用户态协议栈libnids对数据包进行前期处理[12],然后从获取的1.06亿左右的IP数据包中分离出182639个IP数据流作为训练数据集,另外将分别来自5个服务器的数据作为测试数据集,其中来自每个服务器的IP数据流大约14000条。对训练数据集和测试数据集中的每个流提取出一组特征参数,其中在统计流中长数据包数量和短数据包数量时,分别使用了不同的阈值进行判断,长度大于500的数据包判定为长数据包,长度小于100的数据包判定为短数据包。统计流中长延时数据包数量时,延时的阈值设定为流中数据包平均延时。
关键词: 孤立森林,算法,移动警务,网络,流量监测
中图分类号: TP391.0 文献标识码: A DOI:10.3969/j.issn.1003-6970.2019.12.051
本文著录格式:袁艺芳,李雁,陈绪,等. 基于孤立森林算法的移动警务网络流量监测方法研究[J]. 软件,2019,40(12):229232
Research on Mobile Police Network Traffic Monitoring Method
Based on Isolated Forest Algorithm
YUAN Yi-fang1, LI Yan2, CHEN Xu2, GAO Yong-long2, XI Xin2
(1. Science and Technology Information Bureau of the Ministry of public security 100005, China;
2. Tianjin Public Security Bureau Science and Technology Information Office 300393, China)
【Abstract】: Mobile police network is complicated and changeable, and it has a very large amount of data to be handled. According to these characteristics, a network traffic monitoring method based on isolated forest algorithm is proposed in this paper. This method is based on the IP network data. Feature parameters are extracted for each IP data flow, and the feature parameters are taken as the input vectors for isolated forest algorithm to train isolated trees and achieve monitoring. This method can detect abnormal traffic in mobile police network quickly and effectively, which can play an important role in intelligent operation and security protection of mobile police network.
【Key words】: Isolated forest; Algorithm; Mobile police; Network; Traffic monitoring
0 引言
2002年以来,公安部對公安信息移动接入及应用系统安全建设进行不断完善,全国公安系统信息化得到了很大的提升。2017年初,天津市公安局新一代移动警务系统开始建设,目前已建设完成投入运行。新一代移动警务平台体系相对复杂、运维成本高且难度大,平台中一旦出现问题,往往需要大量的专业人员参与,协同诊断问题,耗时长,代价高。为缓解以上问题,我们对移动警务平台中网络流量数据进行分析,利用一种基于孤立森林算法的网络流量监测方法对网络流量异常检测。目的是可以及时发现网络攻击行为和网络结构问题引起的异常流量,从而增强网络态势感知能力和安全防护能力,对移动警务平台的智能化运维有重要推进作用。
网络流量异常是指网络的流量行为偏离正常行为的情形,引起的原因有网络设备异常、网络操作异常、闪现拥挤异常、网络攻击行为等。目前,国内外学者已经提出了多种网络流量异常检测方法,通常可分为基于分类、基于统计、基于聚类及基于信息论的网络流量异常检测方法等[1-4]。这些网络流量异常检测方法,通常首先需要对正常和异常的网络行为、网络流量模式分别进行定义和分析,其次通过特征分析、数据建模等方式对网络流量数据进行检测。大多方法局限性较强,对特定模式或者特定特征的网络异常行为才有较好的检测效果,而且前期数据分析和建模工作量大,部分方法复杂度也很高[5,6]。
移动警务网络复杂多变、数据量大,未知的网络结构或者网络行为模式时有发生,而且在移动警务网络流量分析中异常流量具有随机性、孤立性和稀疏性,因此获取网络异常流量的难度较大。因此很多情况需要在无监督下进行检测,在执行监测任务中,对时效性要求往往也比较高,这进一步对我们选择的方法提出了更高的要求。孤立森林算法是一种基于集成的快速无监督异常检测方法,具有线性时间复杂度和高精准度[7]。本文基于孤立森林算法提出了一种网络流量监测方法,可以快速、有效地进行网络流量异常检测,对于未知网络结构或者网络行为的情况有较好的检测效果,可适用于移动警务网络流量监测中。
1 孤立森林(iForest,Isolation Forest)算法原理 孤立森林算法由刘飞、陈开明、周志华在2008年首次提出[8]。不同于其他异常检测算法通过距离、密度等量化样本间疏离程度的方式,孤立森林算法利用一种被称为孤立树(iTree,Isolation Tree)的二叉搜索树结构来孤立样本,通过对样本点的孤立来检测异常值。由于异常值的数量较少,而且与大部分样本疏离,因此异常值会被更早地孤立出来。
iForest 由t个iTree组成,每个iTree是一个二叉树结构。实现步骤如下[9]:
训练阶段:
(1)训练数据集, 。从中随机选择个样本点构成的子集,放入树的根节点。
(2)从个维度中随机指定一个维度,在当前节点数据中随机产生一个切割点,切割点产生于当前节点数据中指定维度的最大值和最小值之间,即:
。
(3)以此切割点生成一个超平面,将当前数据空间划分为2个子空间:把指定维度小于的样本点放入当前节点的左子节点,大于等于的样本点放入当前节点的右子节点。
(4)递归步骤(2)和(3),不断构造新的子节点,直到所有的子节点中只有一个样本点(无法再继续切割),或孤立树已到达指定高度。
检测阶段:
把所有的iTree树构建好之后,就可以对测试数据进行检测了。
对于测试集中的每一个数据样本点,令其遍历每一棵孤立树iTree,计算点在森林中的平均高度,并对所有点的平均高度做归一化处理。点在iTree上的高度,即点在iTree树上从根节点沿对应的条件分支往下走,穿过中间的节点,直至到达叶子节点,在此过程中经过的路径长度,或者说所走过的边的数量。图1中是4个测试样本(a,b,c,d)遍历一棵iTree的示意图。可以看出,b和c在这棵iTree的高度为3,a的高度是2,d的高度是1。而d最有可能是异常,因为其最早就被孤立(isolated)了。
图1 测试样本遍历一棵iTree示意图
Fig.1 Test sample traversing an iTree schematic
异常分数的计算公式如下:
(1)
其中
(2)
是二叉搜索树的平均路径长度,用来对结果进行归一化处理。而其中的是调和级数,可以通过公式来估计,是欧拉常数,其值为0.5772156649。
异常分数的使用,通常根据以下原则:
(1)异常分数越接近1,则其是异常点的可能性越高;
(2)如果异常分数远小于0.5,那么基本可以确定为正常数据;
(3)如果所有异常分数都在0.5附近,那么数据不包含明显的异常样本。
在移动警务网络流量中,绝大部分是正常流量,正常的业务流量相对集中于若干种业务类型。如果对业务流进行适当的特征提取和特征筛选,得到能够表征业务流特点的特征向量,使正常业务流与异常流有较好的区分度,然后使用孤立森林算法进行异常流量检测,则异常流量将与大部分样本有较高的疏离度,异常值更容易被孤立出来。我们以对IP数据流的检测为例,提出了基于孤立森林算法的网络流量异常检测方法。
2 基于孤立森林算法的网络流量监测方法
本文提出的基于孤立森林算法的网络流量监测方法流程如图2所示。
图2 基于孤立森林算法的网络流量监测方法流程图
Fig.2 Flow chart of network traffic monitoring method based on isolated forest
我们首先采集大量IP数据包,得到每个IP数据包的源IP地址、目的IP地址、协议号、源端口、目的端口、时间戳、包长、序列号、确认号、FLAGS标识等数据。然后根据IP包的这些数据,按会话区分出IP数据流(同属于同一个会话数据包分为一个流)。流是指符合特定的流规范(specification)和超时(timeout)约束的一系列数据包的集合[10]。对于每个IP数据流提取出一组特征,包括流内的数据包数量、数据包平均长度、数据包最大长度,长数据包数量、短数据包数量、流的总延时,数据包最大延时、数据包平均延时、长延时数据包数量、单向数据包数量、数据包重发数量等参数。其中在统计长数据包数量和短数据包数量时,可以把数据包的长度与设定的阈值相比较,长度大于和小于该阈值的数据包分别作为长数据包和短数据包。在判定长数据包和短数据包时,也可以分别使用不同的阈值,具体阈值根据数据的情况设定。数据包的延时由该数据包与流中上一个数据包的时间戳之差换算得到,将第一个数据包则延时设为0。长延时数据包数量则是指流中数据包延时大于设定阈值的数据包的数量。单向数据包数量是指流中由同一个源IP地址和源端口发出的数据包的数量。数据包重发数量则是指流中数据包的序列号与前面数据包序列号相同的情况发生的次数。这些特征参数反映了流的规模、大小分布、到达时间间隔、网络质量等情况。
整个方法流程分为训练阶段和检测阶段,简述如下:
在训练阶段,利用大量数据作为训练数据集,对于訓练数据集提取出各个流的特征参数后,把每个流的一组特征参数组成一个向量,然后根据孤立森林算法训练阶段的步骤进行训练,构建所有的孤立树iTree。
在检测阶段,对于测试数据集提取出各个流的特征参数并组成向量,然后根据孤立森林算法测试阶段的步骤,把测试集中的每个特征向量,遍历每一棵孤立树,计算其在森林中的平均高度,以及计算异常分数,根据异常分数判断测试样本是否属于异常数据。
3 实验结果
3.1 实验数据集
使用DPDK网络数据包加速技术[11]对限定范围内的移动警务网络的IP数据包进行采集,通过用户态协议栈libnids对数据包进行前期处理[12],然后从获取的1.06亿左右的IP数据包中分离出182639个IP数据流作为训练数据集,另外将分别来自5个服务器的数据作为测试数据集,其中来自每个服务器的IP数据流大约14000条。对训练数据集和测试数据集中的每个流提取出一组特征参数,其中在统计流中长数据包数量和短数据包数量时,分别使用了不同的阈值进行判断,长度大于500的数据包判定为长数据包,长度小于100的数据包判定为短数据包。统计流中长延时数据包数量时,延时的阈值设定为流中数据包平均延时。