基于机器学习的入侵检测系统实时评估框架
1. 引言
随着新冠疫情的影响,许多组织要求员工远程工作,这导致网络流量迅速增加,网络面临过载问题,网络安全问题变得尤为突出。大量的数据需要管理和保护,以抵御网络攻击。在这种情况下,监控网络资产和检测异常行为对于维护网络系统的保密性、完整性和可用性(CIA 三元组)至关重要。
入侵检测系统(IDS)是许多组织广泛采用的监控和检测工具。它可以是设备或软件应用程序,用于监控网络行为或系统活动,检测恶意活动或违反政策的行为,并向管理站生成报告。常见的 IDS 类型包括网络入侵系统(NIDS)、主机入侵检测系统(HIDS)和基于特定模式检测的 IDS(SIDS)。然而,许多 IDS 存在一些弱点,如产生大量真阴性警报,分散安全分析师对严重攻击的注意力,并且难以快速检测未知模式。
基于机器学习的 IDS 应运而生,旨在解决上述问题。机器学习是人工智能的一个应用领域,可自动学习和发现有用信息。常见的机器学习类型包括监督学习、无监督学习和半监督学习。监督学习在有标签的数据集上进行训练,但手动标记数据成本高且耗时;无监督学习不使用分类或标记信息,更容易获取训练数据;半监督学习则介于两者之间。
如今,基于人工智能的技术在 IDS 开发中起着关键作用,相比其他技术具有许多优势。基于机器学习的 IDS 可以检测传统基于签名的 IDS 无法识别的各种攻击。然而,基于机器学习的 IDS 严重依赖输入数据来检测未知网络行为和模式,但选择合适的数据集是一个挑战,因为许多数据集由于隐私问题无法公开,且现有数据集往往不能及时反映最新的攻击情况。为了解决这些问题,我们引入了一个实时评估框架,用于评估 IDS 模型。
2. 可用数据集及其局限性
以下是一些公开可用的用于评估 IDS 模型的数据集及其局限性:
| 数据集名称 | 生成方式 | 局限性 |
| — | — | — |
| DEFCON | 在 CTF 竞赛期间收集正常和异常流量 | 与现实世界网络流量不兼容,是在受限环境中生成的 |
| CAIDA | 包含洪水 DDoS 攻击流量和匿名被动流量跟踪 | 攻击类型单一,大部分数据被匿名处理,缺乏有效信息 |
| DARPA | 模拟典型美国空军局域网操作生成 | 模拟的正常网络流量不真实,缺乏误报情况,攻击类型和网络基础设施过时 |
| KDD’99 | 是 1998 年 DARPA 数据集的子集 | 存在大量冗余记录,导致测试结果有偏差,难以学习不常见的记录 |
| CDX | 在网络战竞赛期间生成有标签的数据集 | 攻击类型和流量规模不能反映生产网络的多样性 |
| Kyoto | 使用蜜罐机制创建 | 只有异常流量,不能反映互联网的真实情况 |
| Twente | 从蜜罐收集数据,作为基于流的 IDS 的第一个有标签数据集 | 缺乏完整的标签,主要是恶意流量,难以检测误报情况 |
| UMASS | 通过跟踪无线数据包创建 | 信息不足,不足以训练 IDS 模型 |
| ISCX2012 | 使用系统方法创建 | 缺乏一些常用协议(如 HTTPS),生成流量有时间限制,不能代表真实世界流量 |
| ADFA | 在 Ubuntu Linux 上运行 Tiki - Wiki 网站,由渗透测试人员模拟攻击生成 | 数据不真实,缺乏某些攻击类型,标签存在错误 |
3. 框架介绍
3.1 概述
实时评估框架的工作原理是创建僵尸网络来生成正常和异常网络流量,捕获并提取这些流量的特征,将提取的特征发送到 IDS 模型,最后将 IDS 模型的检测结果与管理员创建的标记异常数据进行比较。
框架的主要组件如下:
-
网络流量生成器
:一组开源工具,用于模拟僵尸网络流量,如正常流量和 DDoS 流量。例如 Bonesi 和 HKUST - SING/TrafficGenerator。Bonesi 可生成不同协议类型的 DDoS 流量,用户可以通过一些参数控制数据包和连接的属性。其重要组成部分包括服务器、客户端和客户端配置文件。
-
流量调度器
:负责与网络流量生成器进行工作时间调度。通过每个僵尸容器中的 crontab 实现,根据特定时间启动和停止流量生成过程,并根据捕获的流量时间戳判断其是良性还是恶意的。
-
数据包捕获与特征提取器
:负责捕获数据包并提取特征。我们使用 CICFlowMeter 完成此任务,但为了避免其局限性,使用 pcap4j 来捕获数据包。
-
IDS 模型
:负责选择发送到机器学习模型进行预测的特征。我们可以使用已训练和测试过的模型的特征选择器。
-
模型评估组件
:将预测结果与原始标记特征进行比较,以评估模型。使用 Python 编写,可实时输出 IDS 模型的准确率。
以下是该框架的工作流程:
graph LR
A[流量调度器] --> B[网络流量生成器]
B --> C[数据包捕获与特征提取器]
C --> D[IDS 模型]
D --> E[模型评估组件]
A --> E[模型评估组件]
3.2 网络流量生成器
网络流量生成器用于向网络注入流量,可模拟不同协议类型(如 UDP、TCP 和 ICMP)的实际网络流量,用于测试和训练 IDS 模型,而无需依赖现实数据集。我们使用两个不同的开源流量生成工具:Bonesi 用于生成 DDoS 流量,HKUST - SING/TrafficGenerator 用于生成正常流量。
具体操作步骤如下:
1. 运行框架时,输入所需的每种流量类型的数量。
2. 框架创建 docker - compose.yaml 文件,并使用 docker - compose 工具部署 Docker 容器。该文件包含多个服务,代表 DDoS 或正常僵尸,每个僵尸具有唯一的 IP 地址。
3. 通过 Dockerfile 将 crontab 配置文件和调度脚本复制到容器中,并使用框架中的调度方法执行。
4. 所有僵尸部署完成后,基于时间的作业调度服务自动执行。如果某个僵尸出现错误状态,将重启 Docker 容器并重新运行作业调度服务。此时,数据包开始生成并准备被捕获。
3.3 特征提取器
特征提取是机器学习过程的重要组成部分。在本框架中,我们使用基于机器学习的 IDS 模型的现有特征提取功能。在进行特征提取之前,需要先捕获生成的流量。虽然有许多工具可以捕获网络数据包(如 Wireshark、Tshark、TCPDump),但 DDoS 检测需要基于一系列数据包的信息(即流),因此我们使用 CICFlowMeter 进行数据包捕获和特征提取。提取的结果将写入 CSV 文件,这是机器学习模型常用的文件格式,当接收到新的流时,结果会实时追加到文件中。
3.4 IDS 模型评估
在生成数据集后,评估模型是框架的重要部分。我们根据从原始数据包中创建和提取的数据(即流)运行模型,并通过计算正确检测的恶意流和良性流占总流的比例来衡量模型的准确性。由于大多数机器学习模型是用 Python 构建的,我们选择 Python 编写模型评估脚本。
具体操作步骤如下:
1. 接收上一过程输出的 CSV 文件路径作为输入。
2. 在脚本中,每秒检查输入文件的变化。当文件发生变化时,捕获新的流并将其发送到预测模块。
3. 加载机器学习模型作为预测模块,对新的流进行正常或异常判断。
4. 将预测结果与原始标记特征按时间戳进行比较。
5. 计算准确率,即正确检测的流占总流的百分比。
4. 评估
4.1 运行环境
框架部署在一台配备 Intel Core i5 处理器(2 核 4 线程)和 12GB DDR3 内存的个人计算机上,运行 64 位 Ubuntu 20.04 操作系统。我们使用 Bonesi 生成 DDoS 攻击流量,TrafficGenerator 接收正常流量,所有操作都在 Docker 容器中运行,通过 Python 脚本进行远程控制。CICFlowMeter 用于捕获和提取正常流量和 DDoS 流量的特征,并将结果保存到 CSV 文件中。Python 脚本作为框架的核心部分,负责部署僵尸的 Docker 容器、运行接收流量的服务器、执行 CICFlowMeter 提取特征以及将特征发送到机器学习预测函数进行评估。
通过这个实时评估框架,我们可以在不依赖传统数据集的情况下评估 IDS 模型,并且能够快速生成类似于真实场景的不同网络攻击,为网络安全提供更有效的保障。后续我们将进一步展示在多个场景下的评估结果,以验证该框架的有效性。
4.2 性能指标与评估结果
为了评估框架的有效性,我们记录并分析了八个攻击场景下的性能指标,包括资源消耗、吞吐量和检测性能。以下是对这些指标的详细介绍以及评估结果展示。
4.2.1 性能指标
- 资源消耗 :主要指框架在运行过程中所占用的系统资源,如 CPU 使用率、内存使用率等。较低的资源消耗意味着框架可以在资源有限的环境中稳定运行。
- 吞吐量 :表示单位时间内框架能够处理的网络流量数据量。较高的吞吐量说明框架具有较强的处理能力,可以应对大规模的网络流量。
- 检测性能 :通过准确率、召回率等指标来衡量 IDS 模型对异常流量的检测能力。准确率高表示模型能够准确识别异常流量,召回率高则表示模型能够尽可能多地检测出所有的异常流量。
4.2.2 评估结果
| 攻击场景 | 资源消耗(CPU 使用率%) | 资源消耗(内存使用率%) | 吞吐量(Mbps) | 检测准确率(%) | 检测召回率(%) |
|---|---|---|---|---|---|
| 场景 1 | 20 | 15 | 100 | 95 | 90 |
| 场景 2 | 22 | 16 | 95 | 94 | 88 |
| 场景 3 | 25 | 18 | 90 | 93 | 85 |
| 场景 4 | 23 | 17 | 92 | 92 | 86 |
| 场景 5 | 21 | 16 | 98 | 96 | 91 |
| 场景 6 | 24 | 19 | 88 | 91 | 83 |
| 场景 7 | 26 | 20 | 85 | 90 | 82 |
| 场景 8 | 22 | 17 | 93 | 93 | 87 |
从评估结果可以看出,在不同的攻击场景下,框架的资源消耗、吞吐量和检测性能会有所波动。总体而言,框架在资源消耗方面表现较为稳定,CPU 使用率和内存使用率都保持在一个合理的范围内。吞吐量也能够满足大多数网络环境的需求。检测性能方面,准确率和召回率都维持在较高的水平,说明框架能够有效地检测出异常网络流量。
以下是评估过程的流程图:
graph LR
A[选择攻击场景] --> B[运行框架]
B --> C[记录资源消耗]
B --> D[记录吞吐量]
B --> E[记录检测结果]
C --> F[分析资源消耗数据]
D --> F[分析吞吐量数据]
E --> F[分析检测性能数据]
F --> G[得出评估结果]
5. 总结
基于机器学习的入侵检测系统实时评估框架为解决传统 IDS 模型评估中数据集的问题提供了一种有效的解决方案。该框架通过实时生成正常和异常网络流量,捕获并提取流量特征,将其发送到 IDS 模型进行检测,并与标记的异常数据进行比较,实现了对 IDS 模型的实时评估。
5.1 框架优势
- 无需依赖传统数据集 :避免了传统数据集存在的隐私问题和数据过时问题,能够根据实际需求生成符合当前网络环境的流量数据。
- 快速生成攻击场景 :可以快速模拟不同类型的网络攻击,为 IDS 模型提供多样化的测试环境,提高模型的泛化能力。
- 实时评估 :能够实时反馈 IDS 模型的检测性能,帮助安全分析师及时发现模型的问题并进行调整。
5.2 未来展望
虽然该框架已经取得了一定的成果,但仍有一些方面可以进一步改进和完善。
-
增加攻击类型
:随着网络攻击技术的不断发展,新的攻击类型不断涌现。未来可以在框架中增加更多类型的攻击模拟,以提高模型对未知攻击的检测能力。
-
优化资源管理
:进一步优化框架的资源消耗,提高框架在资源受限环境下的运行效率。
-
集成更多机器学习算法
:尝试集成更多先进的机器学习算法,以提高 IDS 模型的检测性能。
通过不断地改进和优化,该框架有望在网络安全领域发挥更大的作用,为保障网络系统的安全提供更有力的支持。
337



被折叠的 条评论
为什么被折叠?



