唱甡嘉
(大连民族大学 计算机科学与工程学院, 辽宁 大连 116650)
随着人类社会的进步,互联网技术的发展也给人们带来了各种生机与活力[1]。然而任何事物在其发展的过程中都会存在双面性。互联网技术的迅猛发展,其最初所具备的开放性、共享性以及开放性协议等思想,尤其在当今大数据时代的背景下,互联网的特点连同众多种类的网络病毒对个人信息安全、甚至人身财产安全构成了严重的威胁。研究可知,人工智能(Artificial Intelligence,AI)日渐成为互联网技术的主流,将人工智能与网络信息安全防御技术相结合,是网络安全系统发展的重要方向。基于此,本文则旨在研究如何将传统的网络安全防护模式转变为网络安全智能化防护模式。因此着重使用了深度学习方法中的长短期记忆人工神经网络( Long Short-Term Memory,LSTM),通过应用循环神经网络LSTM模型,构建网络用户入侵行为检测模型,实现对含有潜在入侵行为信息的网络连接检测的功能;通过应用华为访问控制列表(ACL)技术,将检测结果与网络设备管理结合使用,实现针对入侵行为的智能化管控功能。这样的模式可以确保网络用户在正常用网的前提下,能够对互联网中存在的异常行为进行实时的监管和控制,解放了大量人力的同时,也提高了网络安全防护的效率。
近些年来深度学习中的卷积神经网络(CNN)技术迅猛发展,不仅在计算机视觉、语言识别等传统计算机领域有重大突破,还在医学研究领域[2]和自然气候研究领域[3]中也有着良好的表现。不同于一般的深度学习模型,CNN模型的结构除了输入层和全连接层两个基本部分之外,还特别提出了卷积层与池化层两个新的概念,用于提取特征时对其进行卷积操作。值得一提的是,这2个新的结构层之间的节点并不需要全部连接,只需选取其中一部分的节点相连通即可。这样的结构可以使模型的多个节点共享权重值,进而将模型内部无用的参数清理干净。
CNN模型的训练方式有2种,即:前向传播和方向传播。凭借其优异的内部结构,既可以提出数据中的多个局部特征,也能够挖掘数据深层次的隐含特征,现在CNN模型已经成为了深度学习方法中备注学界关注的算法模型。
循环神经网络(RNN)[4]将时间的概念引入到了传统神经网络结构之中,在一个长度相同的时间段之中不断进行循环和递归操作,每一个当前时刻隐藏层的状态都由上一时刻隐藏层输出的状态和当前时刻输入的状态共同决定。这种独特的结构使RNN模型可以获取数据中的隐含特征,还能够对互相关联的特征进行挖掘。
长短期记忆人工神经网络模型( Long Short-Term Memory,LSTM)[5]是RNN的一种变体模型。最初提出是为了解决RNN模型无法处理长序列以及梯度爆炸的问题。LSTM模型提出了神经元(cell)结构,在RNN模型的基础上设置了遗忘门、输入门以及输出门三个结构。通过设置门结构,有选择地保留或删除信息,在保留了对上下数据信息的记忆功能的基础上,增加了剔除无用数据信息的能力,LSTM模型具体的内部结构如图1所示。
LSTM模型的具体工作原理可以由以下公式来表示,即:
ft=σ(Wfxt+Ufht-1),
(1)
it=σ(Wixt+Uiht-1),
(2)
ot=σ(Woxt+Uoht-1),
(3)
ut=tanh(Wuxt+Uuht-1),
(4)
ct=ct⊗ut+ft⊗ct-1,
(5)
ht=ot⊗tanh(ct).
(6)
其中,Wf、Wi、Wo、Wu是4个不同权重值;σ和tanh表示门结构中2种激活函数;在某一时刻t,xt表示当前的输入信息;ht-1表示上一时刻保留下的隐藏层的状态信息;⊗表示元素点乘计算;遗忘门ft用来控制剔除当前状态下的无用信息;输入门it用于引入需要处理的信息;输出信息则由输出门ot负责控制;ut表示的是需要保留到下一时刻的状态信息;ht则是经过处理后最终输入到下一时刻的状态信息。
图1 LSTM模型的内部结构
访问控制列表(ACL)技术[6]目前在控制网络资源的访问能力方面得到了广泛的应用,这是一种针对路由器设备基于包过滤的流量控制技术。通过输入一定的配置命令生成控制列表,把源地址、目的地址以及端口号作为数据包检查的基本元素,并可以设置一定规定,是否让符合条件的数据包通过路由器,进入到下一阶段网络,ACL技术实例如图2所示。
图2 ACL技术实例
配置华为标准的acl,配置命令如下:
[R1]acl 2000
[R1-acl-basic-2000]rule 5 deny source 192.168.1.1 0
[R1-acl-basic-2000]rule 10 permit source any
此时在R1的g0/0/1的接口调用acl2000,配置命令如下:
[R1]interface g0/0/1
[R1- GigabitEthernet0/0/1]traffic-filter inbound acl 2000
调用acl2000之后,再进行测试,发现PC1与服务器已经不通了,如图3所示。
图3 主机PC1的Ping IP界面
本文主要目标是针对网络用户入侵行为检测的研究,基于深度学习理论训练入侵行为检测模型,这就需要大量有效的实验数据,所以实验环节中,使用的数据集是KDD-CUP99的网络入侵检测数据集。KDD-CUP99数据集是开源的,总共有500万条记录。此外,还分别提供了一个容量为10%的训练子集和测试子集,在网络上可以下载到全套的KDD-CUP99数据集。
在KDD-CUP99数据集中,有8个特征数据会受到时间因素的影响,分别是:'service'、'src_bytes'、'dst_host_diff_srv_rate'、'dst_host_rerror_rate'、'dst_bytes'、'hot'、'num_failed_logins'、'dst_host_srv_count',可以用于构造符合时间序列的数据。由于LSTM模型在处理时间序列数据,并在预测结果方面表现得越来越好,所以本实验会基于LSTM模型对用户的入侵行为进行检测,详细的模型构造如图4所示。
图4 基于LSTM的用户的入侵行为进行检测模型
本实验中,LSTM模型的输入数据是KDD-CUP99原始数据集自带的容量为10%的训练子集。LSTM模型每次输入的数据长度为T,输入样本选择的是某条网络连接的前Ts的连接数据信息,标签也就是预测的行为标识,是第T+1 s的行为类别,这样就可以通过前Ts的网络连接数据来预测第T+1 s的行为是正常行为、还是攻击行为。将该训练子集的数据信息输入到LSTM模型里面时,还需要满足输入层要求的维度,因此输入的shape是一个形如(samples,timesteps,input_dim)的3D张量。
LSTM模型接收网络连接的数据,经历15个隐藏层的计算之后把数据输入到全连接层,最后得到网络连接数据的特征向量;将得到的特征向量输入到新的全连接网络模型中,并使用Dropout方法来防止模型出现过拟合问题。
本实验中的LSTM模型输入层具有8个特征,共78个维度,输出层具有1个标签,共40个维度,使用的激活函数为Sigmoid函数,在模型的最后加入一个用100个神经元构成的全连接层深度网络,以此作为模型最后预测结果的输出。
神经网络模型的搭建对于实验设备的硬件要求较高,具体的实验环境配置见表1。
表1 硬件环境配置
对于用户入侵行为检测实验,典型评价指标主要有:准确率ACC、漏报率FNR、误报率FPR[7]和精确率及召回率的调和均值F1-score,若要计算F1-score(F1值),还需要引入2个中间值即精确率PRE和召回率REC。准确率、漏报率、误报率、精确率、召回率和精确率及召回率的调和均值的定义可由下面的公式来表示,即:
(7)
(8)
(9)
(10)
(11)
(12)
使用卷积和循环神经网络模型进行网络用户入侵行为检测的实验流程如下:
(1)对KDD-CUP99数据集提供的训练子集进行预处理操作,共分为6步,分别是添加列标签、对数据集进行统计、数据标准化、行为标识分类、符号特征数值化和数据归一化。
(2)将预处理完成的训练子集输入到LSTM模型中,设置初始参数见表2,开始训练网络用户入侵行为检测模型。
表2 实验详细参数
(3)设置2类对照实验,分别为:基于LSTM模型的不同网络层数对用户入侵行为检测的影响和基于不同深度学习模型对用户入侵行为检测的影响。
按照上述实验流程进行实验和对照实验后,生成的实验结果见表3、表4。
表3 不同网络层数实验结果
表4 不同网络模型实验结果
由表3和表4分析发现,基于LSTM模型并且将网络层数设置为15层的时候,实验的效果是最好的,即入侵行为检测的准确度是最高的。
设计出一个网络拓扑图,用于网络用户入侵行为检测模型与华为设备结合应用的实验,网络拓扑如图5所示。
图5 设备应用实验网络拓扑
通过已经训练好的模型对网络连接进行检测,根据检测的结果来对华为设备进行管控,使模型具有实用价值。华为eNSP模拟器负责模拟真实的实验设备环境,网络用户入侵行为检测与华为设备相结合的应用具体实现步骤如下:
(1)配置Telnet服务。Telnet协议[8]是TCP/IP协议族中的一部分,也是远程登录服务的标准协议和主要手段,为用户提供了在本地计算机上完成远程主机工作的能力。
(2)设备云与本机网卡实现对连。华为云设备(Cloud)可以与本机的网卡对连,实现使用本机就可以控制虚拟设备的功能。华为eNSP模拟器是一个模拟虚拟化设备的软件,并不像真实的设备一样。为了能够使得操作设备更加简便,eNSP模拟器提供了一种云设备,可以使本地计算机轻松地访问这些虚拟设备,方便对其进行配置。
(3)通过Python脚本程序对设备进行配置。对华为设备的具体配置操作,可以通过预置一个Python脚本程序来实现。通过使用Python语言第三方程序库中的Paramiko模块,来实现远程登录华为设备并处理简单的配置命令。Paramiko模块是对SSHv2协议的Python实现,提供了客户端与服务器功能,而其本身是一个围绕SSH网络概念的Python接口,有了该接口以后,就可以在Python代码中直接用SSH协议对远程服务器执行操作。
实现用户入侵行为分析结果管理功能主要是为了展示检测实验的效果,用于显示被拦截网络连接的基本信息,包括设别名称、设备端口、源IP地址和目的IP地址,同时还显示网络连接被拦截的时间、处理状态、处理人和处理时间。设备管理员可以通过删除操作,来删除已经被误拦截的网络连接,保证正常的网络连接准确地到达用户主机。
导入Python第三方程序库中的socket模块、flask. request模块。在用户入侵行为分析结果管理功能中的“analysis.py”文件中编写get_request_ip()函数和get_my_ip()函数,分别用来获取源主机的IP地址和目标主机的IP地址;编写net_del()函数实现删除网络连接的操作,入侵行为分析结果管理页面如图6所示。
图6 分析结果管理页面
虽然本文提出的网络用户入侵行为智能化检测模块在检测入侵行为时取得了一定的效果,但是还是存在一些亟待解决的问题,详述如下。
(1)训练模型时没有与机器学习的算法作对照实验,同时也没有与混合模型作对照试验,只是与卷积神经网络(CNN)的实验结果进行了对比。仅仅使用LSTM模型,检测的准确率为98.3%,在理论上依旧存在误检测的问题。下一步则要和其他算法、模型进行对比,确定使用一个检测准确率最高的方法。
(2)检测只有正常行为和攻击行为这两种结果,并没有将攻击行为中的4种攻击方式细分开来,所以无法提炼出详细的预防和检测入侵行为的策略。下一步则要按照不同的攻击方式,总结出不同的预防和防范策略。
总结来说,本文提出的网络用户入侵行为智能化检测模块有一定的实用价值,能够解放大量的人力,通过“人机合作”的模式,保障用户上网安全。在网络安全形势日益严峻的背景下,本课题的深入探讨研究则有着重要的现实意义。