盘锦职业技术学院 魏孔鹏 王菊 谷洪彬
为了应对日趋复杂的网络安全问题,传统的基于规则的网络安全监测技术无法预知未知的网络入侵方法。网络安全态势感知是一种基于环境的、动态的、整体的数据融合方法,可以从宏观角度把数据融合起来。通过机器学习算法发现数据之间的相关性,而不是人为制定规则,可以发现数据之间潜在的联系。支持向量机是机器学习中较为通用的一种算法,通过对KDD CUP99数据集的训练和测试,得到的模型有效地对网络安全测试数据进行了预测。
态势感知技术是网络安全强有力的监控技术和保障技术,面对传统网络安全技术无法较好地检测网络状态和探究其变化规律等问题,本文结合机器学习在大数据分析于预测方面的优势,通过数据融合的方式将入侵检测系统、日志文件、防火墙、网络设备等数据进行归一化操作,然后基于这些统一的数据进行进一步的态势评估和预测,并对不同机器学习算法在网络安全态势感知评估与预测效果和数据训练耗时方面进行了对比。
状态是指一个物质系统中各个对象所处的状况,由一组测度来表征,态势是系统中各个对象状态的综合,是一个整体和全局的概念。任何单一的状态均不能成为态势,它强调系统及系统中对象之间的关系[1]。态势感知是指获取一个系统中各对象要素的数据以及对这些数据表征的系统的理解和预测。
文献[2]探讨了网络安全态势感知的概念,认为它是“在大规模网络环境中,对能够引起网络态势发生变化的安全要素进行获取、理解、显示以及预测未来的发展趋势”。
国外对网络安全态势感知的研究工作进行得较早且相对系统化,最早是1988年Endsley定义网络安全态势感知分为3步,即“在网络的特定时空环境下,对网络要素的获取、态势理解、对未来的预测”,如图1所示:
图1 Endsley态势感知模型Fig.1 Endsley situational awareness model
文献[3]对网络安全态势评估的算法有较大篇幅的论述,他把网络安全态势评估的算法分为以下几类:基于逻辑关系的融合方法、基于数学模型的融合方法、基于概率统计的融合方法、基于规则推理的融合方法。在网络安全态势预测方面,一般采用神经网络、时间序列预测法和支持向量机等方法。
文献[4]对网络安全态势评估的算法分为以下3类:知识推理方法、统计方法、灰度理论方法。
文献[5]对网络安全态势感知的关键技术分为基于层次化分析、机器学习、免疫系统、博弈论的态势感知方法。
文献[6]通过应用不同的机器学习算法于同一数据集进行网络安全态势感知进行评估与预测,比较不同算法在平均绝对误差、均方差和训练时间上的差别。
从以上3篇综述文章可以看出,在网络安全态势感知研究的早期,属于机器学习的神经网络、时间序列预测法和支持向量机等方法,仅用于网络安全态势预测方面。今年,机器学习逐渐成为网络安全态势感知技术中一个单独的分类。以“机器学习”和“网络安全态势”为关键字检索到7篇论文[7-13]均为2015年之后发表的硕士和博士论文,说明应用机器学习技术进行网络安全态势感知的研究,所涵盖的知识深度和内容足够广泛。
支持向量机(Support Vector Machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的学习算法就是求解凸二次规划的最优化算法。
线性支持向量机学习算法如下:
输入:训练数据集T={(x1,y1), (x2,y1), …,(xN, yN)},其中,xi∈Rn,yi∈{+1,-1},i=1,2,…N;
输出:分离超平面和分类决策函数
(1)选择惩罚参数C>0,构造并求解凸二次规划问题:
(2)计算:
选择α*的一个分量满足条件,计算
(3)求分离超平面:
分类决策函数:
利用机器学习对网络安全态势感知进行研究,需要足够数据的数据集。数据集可以采用私有数据集,也可以采用公开的数据集。采用公开的数据集的好处是很多已公开发布的研究成果采用的是公开的数据集,不同研究成果算法之间可以在同一基础上进行比较和借鉴。公开的可以获得的网络安全数据集包括:KDD CUP99数据集、CICIDS2017数据集、HoneyNet-data数据集等。
本文采用的数据集是KDD CUP99数据集。该数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据,分成具有标识的训练数据和未加标识的测试数据。测试数据和训练数据有着不同的概率分布,测试数据包含了一些未出现在训练数据中的攻击类型,这使得入侵检测更具有现实性。在训练数据集中包含了1种正常的标识类型Normal和22种训练攻击类型,如表1所示。
表1 KDD CUP99入侵检测实验数据的标识类型Tab.1 Identification types of KDD CUP99 intrusion detection experimental data
另外有14种攻击仅出现在测试数据集中。KDD CUP99训练数据集中每个连接记录包含了41个固定的特征属性和1个类标识,标识用来表示该条连接记录是正常的,或是某个具体的攻击类型。在41个固定的特征属性中,9个特征属性为离散(Symbolic)型,其他均为连续(Continuous)型。KDD CUP99数据集由500万条记录构成,特征属性采用41个特征属性中的duration、wrong_fragment、num_failed_logins、logged_in、root_shell、dst_host_same_src_port_rate、dst_host_serror_rate、dst_host_rerror_rate这8个特征属性。
数据的预处理包括数据的归一化和数据的标准化、标签编码。
数据的归一化是将训练集和测试集中某一列特征的值缩放到0和1之间。方法如式(6)所示:
数据的标准化是将训练集和测试集中某一列特征的值缩成均值为0,方差为1的状态。方法如式(7)所示:
机器学习类库scikitlearn包含了支持向量机算法的实现,可以用以下几行代码实现:
对KDD CUP99数据集应用高斯朴素贝叶斯算法的效果如下:
平均绝对误差:0.1355
均方差:0.2717
训练时间:2.8601ms
机器学习技术经过几年的飞速发展日趋成熟,在应用机器学习算法到网络安全态势感知评估和预测方面,可以利用已有的第三方模块中的模型便捷地进行数据的训练和测试及预测。利用支持向量机算法对所采用的数据集进行训练,可以达到较为良好的效果。本文只对特定的数据集中数据的部分特征进行了训练,需要进一步研究的是对所选数据集的全部特征训练需要缩短训练时间,也需要对其它数据集进行训练和模型构建,验证支持向量机算法对其它数据集的有效性。