文献阅读之Design and Evaluation of Scalable Intrusion Detection System Using Machine Learning and Apache

Design and Evaluation of Scalable Intrusion Detection System Using Machine Learning and Apache Spark

关键词:大数据、Spark、机器学习算法、UNSW-NB15、网络入侵检测。
摘要:从过去几年开始,对互联网和网络使用的依赖正在迅速增加。在依赖性更大的地方,安全风险会增加,并且众所周知,针对组织公司、政府公司甚至个人的网络通信网络攻击在过去十年中有所增加。目前,屏蔽私人数据、研究数据和维护机密性是一个关键问题。因此,有必要开发一种入侵检测系统来识别各种未知攻击。由于网络中的数据流是连续的,捕获它会产生大量数据,因此我们需要像 Apache Spark 这样的大数据技术来处理这些数据并在短时间内为我们提供信息。机器学习是一种强大的调查结构,可以区分系统流量流中发生的奇怪事件。在这项工作中,我们开发了基于 Apache Spark 和机器学习的网络入侵检测系统,该系统能够从网络流量数据中分析海量数据。我们评估了使用 Apache Spark 平台的网络入侵检测系统的朴素贝叶斯、支持向量机 (SVM)、决策树和随机森林分类算法的性能。在本文中,我们在 UNSW-NB15 数据集上进行了实验,这是一个最近用于网络入侵检测的公共数据集。实验结果表明,决策树分类器在将数据包流量分类为正常或攻击方面表现更好,我们还能够通过使用数据集的训练和测试实例以及所有特征来确定攻击类别的类型。我们的模型将数据集随机分成测试和训练实例,我们计算了准确度参数。


提示:以下是本篇文章正文内容,下面案例可供参考

一、# 第一章 介绍

互联网使用的显着增长提供了对网站的无限制访问,这无疑为网络犯罪 [1] 形式的利用开辟了道路。入侵者从世界任何地方侵入系统并窃取数据、植入病毒、创建后门、插入木马或更改凭据。目前检测技术和机制是有限的,因此入侵者无法被发现。目前,网络入侵被视为互联网通信和数据存储中的重要问题之一。入侵检测系统 (IDS) [2] 是一种安全软件,它监视网络或定义的网络系统,报告活动的变化,记录网络内的恶意活动,而不会使系统信息受到损害。防火墙 [3] 无法阻止入侵者泄露敏感信息。防火墙无法屏蔽已经被防火墙许可的数据包,因此入侵者可以使数据包通过防火墙许可。防火墙允许接受的应用程序进行常规通信,但是如果这些应用程序本身有故障,防火墙将无法阻止攻击。防火墙对它们所构建的管理规则起作用。 IDS 与防火墙不同,防火墙位于网络之间以阻止相关的入侵,并且不会标记网络内部发生的任何攻击。 IDS [4] 评估可疑的入侵并在发现攻击系统或入侵者时发出信号。 IDS 还跟踪来自系统内部的攻击。它检查网络,识别称为签名的常见攻击的启发式和模式。

为了极其小心地处理数据,入侵检测系统可能比通常使用的防火墙更有帮助。
A. 网络 IDS
我们有两种不同类型的入侵:
a) 滥用:滥用 IDS [5] 旨在通过利用由 IDS 管理员或安全专家表征的标记标准来区分先前遇到的攻击。有必要的是,每当报告新的攻击时,系统总是更新模式数据库。通过这种方式,基于误用的 IDS 可以高精度地识别已知攻击。
b) 异常:基于异常的 IDS 检查网络 [6] 行为并将其表征为典型或异常。该系统可以通过利用基于可测量、基于信息或基于人工智能的系统来区分已知和新型攻击。异常IDS面临的挑战是如何在低误报率的情况下实现高精度。
B. 用于网络安全的机器学习
机器学习 [7] 有助于在第二部分继续进行进一步的流程,系统以互联网规模和速度发现和终止恶意活动。此外,机器学习有助于快速检测异常,通过使用来自二进制文件的信息进行恶意软件分析,并解开数据集中的模式并调查入侵者如何利用网站 [8]。在机器学习算法 [9] 中,我们将数据输入系统训练模型然后从构建的模型中进行预测。网络安全也是如此,其中数据包用于构建模型,然后使用这些预测我们对新传入的数据包进行分类。机器学习分类中的用例 [10] 之一是异常检测。在异常检测中,我们没有任何先前看到的模式或签名,如误用检测。在机器学习的帮助下建立了一个可靠行为模型,并与新传入的网络数据包的行为进行了比较。进一步解释异常类似于识别一组正常模式并将其与异常模式区分开来。几乎所有形式的入侵都会引发与外界的交流。入侵系统的要求是窃取目标的机密数据,因此有必要以网络为中心进行入侵检测。当与大数据机器学习算法相结合时,有助于做出正确的数据存储和清理决策,
机器学习算法继续处理数据并从数据中获取知识的流程如下所示
收集数据————数据清洗————运行机床————呈现结果
决策树、朴素贝叶斯和随机森林等分类算法可用于处理数据,通过评估参数,我们可以区分数据包。
C. Spark 网络安全的范围
使用传统数据库来跟上海量数据的步伐正在成为一个具有挑战性的问题。在当今不断发展的世界中,数据被赋予了更多的重要性,并为处理数据提供了许多机会,其中一种方式就是大数据。大数据基本上是在处理海量、种类和速度的数据。大数据还提供了支持检测安全威胁的分析工具 [11]。 Spark [12] 将跨集群的分布式程序与用于访问数据和执行流程的优雅模型相结合。 Spark 在处理海量数据方面比其他大数据技术更快、更高效。然而,大数据 [13] 出现在必须在特定时间范围内处理和管理大量数据的情况下,收取低成本并有助于为组织利益做出更好的决策。 Spark 还为我们提供了帮助使用机器学习算法而无需为这些算法编写代码的库。它提供了一个名为 MLLIB 的 API,可帮助直接调用算法并申请数据集。 Python 语言和 Spark 集群框架的协作可以通过 pyspark 编程来评估 [14]。在网络系统中,入侵者试图淹没网络中的系统以获取对系统的未授权访问。其中很少有遵循模式或已知行为。一些幼稚的模式试图访问系统,系统可以使用带有 spark [15] 的机器学习来检测并将它们分类为正常或未经授权的系统。

在第三节中,我们提供了有关我们实验中使用的数据集的详细信息。在第四节中,我们讨论了使用 Spark、Python 和机器学习算法的实现。在第五节中,我们展示了我们论文的结果。结论在第六节中给出。
我们在本文中的贡献是
• 实现基于 Pyspark 的决策树、朴素贝叶斯、SVM 和随机森林分类算法,将网络流量分类为正常或攻击。
•实施基于 Pyspark 的决策树、朴素贝叶斯和随机森林分类算法,将网络流量分类为 9 种攻击类别之一。
• 评估决策树、朴素贝叶斯和随机森林分类算法在UNSW-NB 15 数据集上的性能。
• 将数据集随机拆分为测试和训练实例并计算准确度参数。

二、相关工作

在[16]中,提出了处理大规模网络数据包的基于异常的入侵检测系统。为了执行这个过程,作者使用了 SVM 聚类方法。 [16] 中所做的工作侧重于根据准确性构建系统。在这里,他们试图通过将其放入 Spark 中来涵盖发生的不同类型的攻击以及不断上传到网络的恶意数据。这项工作分析了数据库中存在的数据。决定本文产生的结果可以用于改进 UNSW [17] 数据集中的决策。
[19] 中的论文描述了对 UNSW-NB15 [18] 和 KDD99 [20] 数据集的分析和评估。 [19] 中所做的工作将数据划分为测试集和训练集以分析数据集。数据分析分为三个特征,即统计分析阶段、特征相关阶段和复杂度评估阶段。 UNSW-NB15 数据集被认为是复杂的,因为它反映了当代攻击和典型网络流量的行为。因此,[19] 中提到 UNSW-NB15 数据集可用于以可靠的方式评估现有的和新的入侵检测方法。
[21]中的论文通过将网络中用户的安全威胁理解为网络系统的进步来分析IDS的需求。安全问题包括网络和数据安全。网络安全应维护在计算机网络的所有层,并维护真实性、机密性和网络审计。这项研究有助于了解 IDS 等技术在防止恶意攻击和确保网络安全方面的重要性。
在论文 [22] 中,介绍了使用 Spark 对网络监控系统的重要性。 Spark 帮助我们以更快的速度以更少的内存使用率提取特征。
[23] 中所做的工作主要集中在理解机器学习及其在网络分析中用于入侵检测的应用。确定并总结了许多方法。在 [23] 中,对从天然气管道收集的 MODBUS 数据评估了四种机器学习算法。使用机器学习算法对不同的攻击进行了分类,并对每种算法的性能进行了评估。
论文[16]没有对实例的攻击类别进行分类。所做的工作 [16] 仅给出了网络数据包是攻击还是正常。训练和测试实例数据集的拆分以恒定速率完成,因为它们已经分离了用于测试数据集和训练数据集的文件。训练和检测时间也可以减少。在我们的工作中,我们设计了一个网络入侵检测系统,将网络流量实例分类为攻击类型,如 Fuzzers、DOS、后门、分析、漏洞利用、通用、侦察、蠕虫和 Shellcode,如果数据包是攻击数据包,则结果显示数据包的攻击类别。我们还为用于分类的机器学习模型构建了一个混淆矩阵。训练数据和测试数据是随机拆分的。我们评估了不同分类机器学习算法(如决策树、随机森林、支持向量机 (SVM) 和朴素贝叶斯)在准确度、灵敏度、精确度、召回率和特异性方面的性能。

三、系统架构

本节介绍我们系统的设计架构并解释流程和顺序。图 1 给出了我们系统设计的概述。我们系统的工作从访问数据集、分析数据集和理解它开始。提取的数据集可能包含未处理的单元格,因此对数据集进行了预处理。预处理有助于找到在使用时可能使用垃圾值的任何空单元格。数据类型可以更改为我们需要的格式。由于数据集具有许多特征,因此需要对特征进行索引,并在此步骤中完成。这是使用 StringIndexer、VectorAssembler 和 OneHotEncoder 等少数概念完成的。接下来,数据集被转发以对使用 pandas 库的特征进行归一化,并将所有特征放入一个类似数据类型的数组中并用于预测
在这里插入图片描述

然后,将数据随机分成训练数据集和测试数据集。然后,将相同的训练数据集输入不同的机器学习算法来构建模型。模型建立后,用于将测试数据集中的网络流量分类为正常流量或攻击流量。如果网络流量是攻击流量,那么我们再次使用机器学习算法将流量分类为九种攻击类别之一。

四。执行

在本节中,我们将介绍在将数据集输入分类算法之前对数据集进行的操作。然后将数据集分为训练和测试。最后将训练实例加载到模型中并建立机器学习模型,然后使用测试实例来预测目标。然后,使用我们获得准确性的结果评估模型 [24]。我们还可以为不同的算法构建混淆矩阵并比较它们的结果。我们使用了两个精度模型来计算精度。
a) 二元评估器:
该评估器给出 ROC [25] 曲线下的面积。 ROC曲线是评价机器学习算法判断的主要工具。曲线下面积是衡量参数区分两个诊断组(攻击/正常)的程度。绘制的曲线描述了分类器系统通过改变阈值的能力。它在 TPR 与 FPR 之间绘制图表
b) 多类分类器评估器:
该评估器使用公式给出准确度。
准确度=(正确预测/总预测)x 100 — (1)
A. 数据集
数​​据集是从由澳大利亚网络安全中心的 Cyber​​ Range 实验室创建的 [18] 下载的。该数据集具有实时活动和当代攻击行为。 IXIA PerfectStorm 工具用于创建 UNSW-NB 数据集的 PCAP 格式的原始数据包。 UNSW-NB15 数据集文件 [26] 有不同的格式,PCAP 文件、BRO 文件、Argus 文件和 CSV 文件。数据集的源文件分别根据模拟日期 22-1-2015 和 17-2-2015 进行划分。在我们的论文中,我们使用数据集的 CSV 文件来执行我们的实验。数据集被划分并存储在单独的文件中,分别为 Dataset-training-set.csv testing-set.csv。准备集中的一些和Datasetof记录是175,341条记录的训练集和82,332条记录的测试集,分别来自不同种类、突击和正常。使用 pyspark [14] 和机器学习算法 [8] 使用和处理 CSV 文件的数据集。这些特征分为5个不同的特征表,即流特征表、基本特征表、内容特征表、时间特征表和[19]中描述的附加一般特征。
B. 特征预处理
由于我们的特征是分类数据类型,我们使用 StringIndexer 将文本数据转换为数字数据分类上下文。由于我们的数据集具有分类数据类型的特征,我们使用了 OneHotEncoder。在 OneHotEncoder 中,特征使用称为标签编码的数字标签进行编码,然后 OneHotEncoder 将每个实例的列拆分为多个列。数字被替换为 1 和 0,对于一个实例,该实例满足的特征列将具有 1,其余列的值为 0。为了组合处理后的分类特征和数值特征,我们使用了 VectorAssembler。 VectorAssembler 是一个转换器,它通过维护上下文将多个特征列合并为一个特征列。对于具有由不同特征转换器生成的原始特征和特征的实例,VectorAssembler 会将输入列的值连接到单个特征向量列中。为了进一步处理我们使用管道的原始数据。 Pipeline 从源中获取非结构化数据并临时存储在数据处理系统中,可以对其进行分析以做出数据驱动的决策。它将多个转换器和估计器合并在一起,以帮助开发 OneHotEncoder。在 OneHotEncoder 中,特征使用称为标签编码的数字标签进行编码,然后 OneHotEncoder 将每个实例的列拆分为多个列。数字被替换为 1 和 0,对于一个实例,该实例满足的特征列将具有 1,其余列的值为 0。为了组合处理后的分类特征和数值特征,我们使用了 VectorAssembler。 VectorAssembler 是一个转换器,它通过维护上下文将多个特征列合并为一个特征列。对于具有由不同特征转换器生成的原始特征和特征的实例,VectorAssembler 会将输入列的值连接到单个特征向量列中。为了进一步处理我们使用管道的原始数据。 Pipeline 从源中获取非结构化数据并临时存储在数据处理系统中,可以对其进行分析以做出数据驱动的决策。它将多个转换器和估算器合并在一起,以帮助进行机器学习工作并保持其流程。
C. 测试和训练实例
组合的测试和训练 csv 文件从 UNSW 网站下载 [17]。我们使用描述模型基础的种子值来拆分数据,系统或模型就是从这个值开始的。组合后,选择百分比将组合数据集划分为训练和测试集,如表 I 所示。此外,该算法随机拆分并随机选择训练和测试实例,这与论文中看到的工作不同 [16]
D. 基于决策树的 IDS,用于将网络流量实例分类为正常或攻击
用于将数据包分类为攻击或正常的决策树 [27] 的编程代码如图 2 所示。为了更好地理解,流程可以分为 5 个部分,如获取数据、数据处理、数据拆分、构建模型、评估。前 3 个部分已在前面的实施小节中讨论过。接下来,建立模型,包括使用训练数据训练模型并对目标数据进行预测。最后,在评估部分,使用二元类评估器和多类评估器对构建的模型进行评估,结果有助于理解模型,也可以通过构建混淆矩阵来参考。在图 2 中,第 48 行用于构建模型,参数 maxDepth 确定树何时停止构建新节点。在调整这些参数时,我们必须小心避免过度拟合我们的数据。在我们的例子中,我们使用参数值作为 20,因为在这个值之后精度变化不大。
表 I. 训练和测试拆分表
在这里插入图片描述
E. 基于随机森林的 IDS,用于将网络实例分类为正常或攻击
用于将数据包分类为攻击或正常的随机森林 [29] 的代码如图 3 所示。我们可以通过更改图 2 所示的几行决策树代码来构建随机森林模型,这些行如图 3 所示,参数numTress 是模型使用的树序列的限制。当使用更多的树木时,就会占用更多的存储空间,并且必须经常清理。当更少的树使用时间来构建将更多以计算。在我们的例子中,我们使用参数值作为 10,因为在这个值之后精度变化不大。
F.基于朴素贝叶斯的 IDS,用于将网络流量实例分类为正常或攻击
用于将数据包分类为攻击或正常的朴素贝叶斯 [30] 代码如图 4 所示。我们可以通过更改图 2 所示的几行决策树代码来构建朴素贝叶斯模型,这些行如图 4 所示而参数平滑通常见于NB。 NB 具有简单概率、多类分类器的特点,也使用贝叶斯定理。朴素贝叶斯使用贝叶斯定理,朴素地假设每个特征在所有其他特征中都是独立的。朴素贝叶斯只对训练数据进行单次传递,并且效率很高。朴素是一个概率分类器,这意味着朴素贝叶斯使用贝叶斯定理测量每个类别的概率,以及给定标签的所有特征的条件概率。
G. 基于 SVM 的 IDS,用于将网络流量实例分类为正常或攻击
用于将数据包分类为攻击或正常的 SVM 代码如图 5 所示。我们可以通过更改图 2 所示的几行决策树代码来构建 SVM 模型,这些行如图 5 所示。
H. 基于决策树的 IDS,用于将网络流量实例分为 9 个攻击类别
将攻击实例分类为攻击类别的决策树代码如图 6 所示。在类别分类的情况下,预测应该给我们攻击名称,因此模型给出了攻击类别的索引,如表 I 所示
在这里插入图片描述
J. 基于朴素贝叶斯的 IDS
将网络流量实例分类为 9 种攻击类别 将数据包分类为攻击类别之一的朴素贝叶斯代码如图 8 所示。我们可以通过更改几行决策树来构建朴素贝叶斯模型代码如图 6 所示,这些行如图 8 所示,参数被认为与实例预测中的攻击或正常相同。
K. 基于 SVM 的 IDS,用于将网络流量实例分为 9 个攻击类别
Spark MLlib 支持用于分类的线性支持向量机,但只能处理二进制类分类,因此当我们尝试使用 Apache Spark SVM [31] 进行多类分类时,它会导致错误说 SVM 仅支持二进制分类,这表明只有少数机器学习算法可以处理开箱即用的多类问题。因此,在阅读了几篇文章后,我们发现我们可以使用 one vs. rest 策略来实现我们所需的多类功能。 SVM 算法需要扩展来处理多个类,显然它可能没有在 MLlib 中实现。我们可以使用上面提到的 OvR 策略来解决这个问题,但模型性能不会很出色。

五、结果

A. 分类算法在将网络流量实例分类为正常和攻击类别时的性能。

从表 III 可以看出,SVM 的训练时间更多,而朴素贝叶斯的训练时间更少。 SVM 的预测时间更短,而决策树的预测时间更长。然而,决策树的准确率为 93.3%,并且在所有分类器中的准确率方面表现更好。这些是用 39 个数字和 3 个分类特征进行实验时获得的结果,标签决策树给出了最佳精度。
在这里插入图片描述
B. 将网络实例分为 9 个攻击类别的分类算法的性能
从表 IV 可以看出,决策树的训练时间更多,而朴素贝叶斯的训练时间更少。决策树的预测时间更少,而随机森林的预测时间更多。然而,决策树的准确率是 81.7%,并且在所有分类器中的准确率方面表现更好。
这些结果包括以攻击类别列作为预测,试验了 39 个数值特征和 3 个分类特征。决策树提供了最佳的准确性和更少的训练时间。
在这里插入图片描述
C. 混淆矩阵
使用参数得到朴素贝叶斯的混淆矩阵如表 V 所示。我们在预测值的帮助下绘制混淆矩阵表。因此,表 V 中的数字描述了 34185 个数据包是预测为攻击的实际攻击数据包,2852 个数据包是预测为攻击的正常数据包,18167 个数据包是预测为正常攻击,最后 26796 个数据包是正常预测为正常。
在这里插入图片描述
D. 训练和测试数据集中的攻击和正常实例数
观察到的带有攻击包和正常包的数据实例如表VI所示。所以,在测试数据中,82000个包中,52308个是攻击包,29692个是正常包。同样,在训练数据中,175673 个数据包中,112365 个是攻击数据包,63308 个是正常数据包。
在这里插入图片描述

五、结论

在本文中,我们对UNSWNB15数据集采用不同的分类算法进行了分析和评估,旨在建立一个准确率高、执行时间短的分类模型,当数据被随机分割以进行攻击类别分类时,我们发现决策树和f1- score 给出了低值的假阳性和假阴性率。在我们系统中的所有其他模型中,朴素贝叶斯花费的训练时间更少,而决策树花费的预测时间更少。我们得出结论,我们能够从数据集中的这 9 个类别中对攻击类型进行分类。当考虑数据包的攻击类别类别并使用所有特征进行预测时,可以看到上述结果。未来的增强可以使用特征选择技术来减少开发检测模型所需的特征数量。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值