李柯
(河南理工大学计算机科学与技术学院,河南 焦作 454000)
在信息全球化发展以后,关于网络安全的防范就一直未曾停止过。传统的信息安全防御体系已不满足当前信息系统防护要求,所以传统的被动防御模式逐渐向主动防御模式进行过渡,而态势感知是主动防御体系的核心设备。就像智慧城市的大脑一样指挥城市的建设一样,态势感知统筹所有的安全设备来打造一个牢固的安全生态圈。面对当前日益多样化诸如APT、人脸、区块链等新型威胁,传统的被动防御很难进行溯源分析,而且费时费力。同时针对安全信息数据分析缺乏和安全事件处置效率低下等问题传统的安全管理已无法应对。在诸多行业痛点需要进行处理的情况下,态势感知成为了行业当下的需要。它通过对收集包括安全设备、网络设备及主机设备等网络安全要素信息,通过机器学习、深度学习等算法队整个网络安全进行评估其状态,然后根据状态信息预测接下来的发展趋势。态势感知通过文字图表的方式来展现给信息安全管理员以此来帮助信息安全管理员进行决策,可视化的形式往往比较酷炫[2]。
网络安全不像研发,网络安全不仅不产生经济利润,而且还会消耗由产品研发等部门带来的经济利润。这就导致了在互联网高速发展过程中,网络安全却被边缘化。这也导致了即使现在,无论是IT 行业还是传统行业里仍然有很多人的网络安全意识还很薄弱。当然在骇客攻击下,遭受的经济损失下,人们才逐渐重视起网络安全。在这一阶段就出现了以被动响应为核心特征的安全防御体系- 被动防御体系。被动防御体系典型设备如主要用在边界的防火墙设备,IPS(入侵防御系统)和IDS(入侵检测系统)等。在这一时期虽然人们对网络安全有所重视,但只要不影响业务的正常运行,无论是否受到攻击,攻击程度如何,都无人关注。一旦发生重大安全事件,如非法获取webshell、通横向渗透盗取重要数据或用DDOS 攻击导致服务器瘫痪等,则需要请安全厂商派出安全专家进行应急处理。总体上这一时期以被动响应为主,但已越来越不能应对目前的网络安全威胁了。为了加强网络空间安全,国家出台了一系列法律法规,如《中华人民共和国数据安全法》、《数据安全法》、《个人隐私保护法》、《网络安全法》等。
态势感知整体架构包括安全数据收集层、安全日志存储层、计算层及展示层。安全数据收集层主要是对安全日志及流量进行收集,来源主要安全设备的原始日志和流量。安全数据存储层主要是将前面收集层收集来的数据采用HDFS 技术进行存储。计算层主要对存储的数据进行挖掘分析,这里使用到聚类算法、无监督学习算法等溯源攻击链。最后的展示层就是实时的对前面的分析结果和数据分析图表进行可视化。
作为主动防御体系的大脑, 网络安全态势感知能够统筹所有安全信息的核心是算法。态势感知使用的算法种类繁多,有基于数学模型或逻辑模型的融合方法,基于规则推理或概率统计的融合方法,也有知识推理方法、统计方法、灰度理论方法的评估算法。态势感知也使用了不同的机器学习算法,例如传统的机器学习算法随机森林、支持向量机、决策树,聚类算法K-mean 和深度学习神经网络、LSTM 等算法进行网络安全态势感知预测方面。
深度学习是机器学习其中的一个分支,通过构建诸如CNN 等数学模型来发现数据中错综复杂的关系。深度学习和传统的机器学习有本质上的区别,传统的机器学习需要制定相应的规则,深度学习只需要提供相应的数据。深度学习通过神经元构建神经网络来模拟人脑中的神经网络对数据进行分析。深度学习通过获取高维的数据特征来模拟人脑对图像、声音和文本等数据进行解释的机制。深度学习一般可分两类,第一是监督学习,所谓监督学习通过给数据一个标签,通过神经网络(ANN)、卷积神经网络等训练模型,然后运用模型预测结果;假设我们要判断这个动物到底是猫还是狗,可以根据猫或狗的形状和大小等标签去判断物体的种类,这就是监督学习。另一种无监督学习则是从无序的信息中自动发现规律,从而达到预测或分类的效果,它和监督学习区别在是否打标签。还有一种是强化学习,强化学习和上述两种有很大的区别,强化学习希望打造一个通用的人工智能体,探讨的是智能体(agent)在复杂和不确定的环境(environment)中如何最大化获得奖励。强化学习强调的是智能体和环境动态交互过程中获取最大化奖励。智能体获取环境中的状态,智能体验利用该状态输出动作和决策。然后将决策放入环境中,环境会根据代理做出的决策输出下一个状态和当前决策的奖励。代理的目的是尽可能多地从环境中获得奖励。深度学习和强化学习深度结合在游戏领域也取得了相应的成果,如DOTA2AI、绝悟AI 等。
利用深度学习对网络安全态势感知进行研究,需要大量数据的数据集。互联网上关于网络安全的数据集有很多,本文实验使用的数据集是网络入侵检测的KDDCUP99 数据集,使用此数据方便数据挖掘的入侵检测技术研究。KDDCUP99 数据集收集连续9 周模拟的美国空军局域网的网络连接数据。数据集分为标记的训练数据和未标记的测试数据,而且测试数据和训练数据具有不同的概率分布。为了入侵检测数据更具真实性,测试数据还加了一些训练数据中没有出现的攻击类型。
取KDDCUP99 数据的10%,包括训练集:23 个标签,包括正常和22 个攻击类型标签,包括494021 个数据。
取KDDCUP99 数据的测试集38 个标签,里面包括正常标签和37 个攻击标签,包含311029 条数据。
利用python 对数据进行预处理,包含数据简单处理,特征和标签数值化,特征归一化。
这里为了统一训练集和测试集需要过滤掉15 类攻击,且’spy.’, ’warezclient’这两种只存在于训练集中攻击,所以一共过滤掉17 类攻击。将过滤后的数据进行统一编码处理,其中normal 归一类,其他不正常的归另一类。在这里preprocessing.LabelEncoder()的作用是标准化标签,然后将标签值统一转换成range(标签值个数-1)范围内。
本文使用pytorch 搭建3 层的神经网络进行模型的训练,使用pytorch 中的nn 模块中Linear 构建输入层、隐藏层、输出层,使用激活函数ReLU()将来自节点的加权输入转换为该输入的节点。相比于Sigmoid 等函数,使用Relu 激活函数,可以在整个过程中节省很多的计算量。Sigmoid 函数在深度神经网络反向传播时,容易发生梯度消失的情况,而Relu 的部分神经元的输出为0,在相对复杂的深度神经网络中能减少参数间的相互依赖关系并使网络稀疏,以此缓解过拟合问题。
损失函数和优化器分别使用交叉熵损失函数CrossEntropyLoss()和Adam。Adam 优化算法在非非凸优化问题中计算非常高效、所需内存少,并且基本上只需极少量的调参。
最后对数据进行训练,训练时间根据硬件配置高低,以及数据量和模型框架等因素决定,本文使用GPU进行训练,训练结果如下:
通过实验比对在三层神经网络模型下使用KDDCup99 数据集进行分类的精准度能达到97%,从图形上看测试集的波动性比较大,数值上acc 和loss 不稳定。
网络安全态势感知是互联网时代发展的产物,并且帮助用户实现主动的动态安全防御。并已在各行各业得到应用。随着新技术诸如AI 技术、区块链等不断更新迭代,态势感知的分析、预警和预测将越来越精准,也将会被更多的行业所使用。态势感知也随着信息技术发展而迭代更新,从态势感知1.0 到2.0,不仅是功能发生了改变,以前的1.0 主要是放在网络安全上,到了2.0 以后就以业务为核心了。国家对网络空间安全的重视也使得态势感知在网络安全中占重要的地位。历年的重保和护网行动中可以看出态势感知平台都在发挥着重要的作用。
态势感知不仅仅在政策中有提及相关的建设内容,而且在法律法规中也有提及,在等保2.0 中态势感知也是评测点。如今态势感知早已成为监管单位和关键信息基础设施相关行业的必备设施,像电力行业态势感知是一定要使用的。当然目前态势感知市场渗透率还是比较低,一方面还需要加大存量,另一方面还要继续更新,以此来适应市场需求变化和网络环境。