Page 324 - 《软件学报》2020年第10期
P. 324
3300 Journal of Software 软件学报 Vol.31, No.10, October 2020
根据该时间片内不同类型日志出现的次数,可以得到的样本输入向量见表 3 中的 t 1 行.
Table 3 Log type’s vector of time slice
表 3 时间片日志类型向量
时间片 T 0 T 1 T 2 T 3 … T n
t 1 1 4 1 2 … 0
… XX XX XX XX XX XX
XX XX XX XX XX XX
t m
表 3 代表待处理日志经分析后得到的输入矩阵,其中,n 代表预处理模块中使用日志模式匹配得到的日志类
型数量,m 代表待分析日志按照固定时间片分割的时间片个数.假设待分析日志的总时间跨度为 T,则可得到
m=⎣T/t⎦.根据上述方法即可将待分析日志转换为 m 行、n 列的数据矩阵,该矩阵每行代表一个样本数据,每列代
表一个样本的特征段位.
(2) 基于主成分分析的流量异常检测
主成分分析是一种常用的机器学习算法,该算法在推导过程中使用了最近重构性原理,即:将高维的数据映
射到低维空间中,使得每个高维空间中的数据映射到低维空间后的距离之和达到最小.这样做使得原始数据投
影到低维空间时的距离最小,所以当找到这个最近重构的低维空间后,计算出原空间样本点到低维空间的距离,
该距离即可以作为异常与否的度量标准.即:该距离越大,原来数据更可能是异常数据.该方法的具体实现步骤
如下.
步骤 1 将 m 行 n 列的数据矩阵 A 输入,将所有数据中心化得到矩阵 B.
T
步骤 2 解得 B B 的特征值λ i (i=0,1,…,n).注意:这里需要自己选择降维后的方差比重,这里我们选择 90%
∑ k λ
为方差比重.带入计算使得 i= 1 i >90%.
∑ n j= 1 λ j
步骤 3 将得到数值最高的 k 个特征向量 V 1 ,V 2 ,…,V k 组成矩阵 P=[V 1 ,V 2 ,…,V k ],计算该矩阵的正交投影
−1 T
T
T
矩阵为 V P =P(P P) P =PP .
步骤 4 如果原来的向量为 y,则该向量到其映射的子空间的欧几里德距离可以通过计算平方预测误差
2
SPE=||y a || 得到.注意:其中,y a 是 y 到异常子空间 s a 上的投影,并且可以通过式子 y a =(I−V P )y=
T
(I−PP )y 计算得到.
步骤 5 根据上述算法计算出每一个点到子空间的距离,将其与检测阈值 Q α 进行比较:如果 SPE=||y a ||>
Q α ,则标记 y 是异常的.其中,Q α 表示在(1−α)置信水平下 SPE 残差函数的阈值统计量.基于主成
分分析检测的方法来源于文献[10],其检测的异常数值 Q α 可用如下公式得到 [24] :
1
⎡ C 2 hφ 2 φ hh − ) 1 0 h ⎤ m 2φφ
(
Q = α 2 φ 1 α 20 + 1+ 20 0 ⎥ ,其中 ,φ ⎢ i = ∑ λ i j (i = 1,2,3),h = 0 1− 1 3 .
⎢ ⎣ φ 1 φ 1 2 ⎥ ⎦ jr 1 3φ 2 2
=+
公式中的λ j 代表样本数据协方差矩阵第 j 个主成分投影在子空间的特征值.C α 表示标准正态分布的 1−α百
分位数.
上述方法进行异常检测的基本原理是:系统在产生不同类型的日志时,在正常情况下,各个类型日志出现的
比例趋于稳定.如果各个类型日志在某些时间段内出现大量的比例失衡的情况,则很有可能在这个时间片内有
异常的情况发生,则这些时间片段需要重点关注和分析.
3.3 分类模块
日志异常模式是由不同类型的日志有序连接而成的.单个节点的异常日志流量模式可定义为日志类型的
有序排列.单独一种日志类型的出现并不能说明什么问题,比如单独出现一次 T 7 (认证失败)类型的日志,可能是
由于用户不小心密码输入错误引起的.但是如果在一定的时间片内,同一个主机频繁出现 T 7 (认证失败)类型日
志、T 11 (密码错误)类型日志、T 3 (连接断开)类型日志,则说明该类型序列可能是一种暴力破解登录的尝试.因此,