28、机器学习在DDoS攻击检测中的实证性能评估

机器学习在DDoS攻击检测中的实证性能评估

1. 框架架构

1.1 数据生成与处理

首先构建攻击模型来生成数据,数据集生成后,将其按80%和20%的比例划分为训练集和测试集。在训练阶段创建机器学习模型时,会利用可用特征,且数据列包含标签信息。之后将测试特征输入从训练中得到的模型,得到预测结果,并与测试标签进行比较。最终通过与测试数据对比得出模型的准确率,同时还会关注F1分数、准确率、精确率等重要参数。

1.2 数据收集工具

  • Bonesi :DDoS僵尸网络模拟器,可从源IP地址、URL生成ICMP、UDP、TCP(HTTP)洪水攻击,是不同协议的网络流量生成器。能通过发送速率、数据包大小等参数控制创建的数据包和连接属性,甚至在生成TCP流量时会伪造源IP地址。不过,它需要确保响应数据包能路由到运行该工具的主机,因此不能在任意网络基础设施中使用,最先进的流量类型为HTTP请求。
  • CICFlowMeter :网络流量生成器和分析器,可创建双向流,首个数据包指定正向(源到目标)和反向(源到源)方向,具有超过80个网络流量特征,如持续时间、数据包数量、字节数、数据包长度等,且可分别在正向和反向计算。其输出为CSV文件,包含FlowID、SourceIP、DestinationIP、SourcePort、DestinationPort和Protocol等六列标签以及80多个网络流量特征。TCP流通常由FIN数据包终止,UDP流由流超时终止,流超时位置可任意指定,如TCP和UDP均设为600秒。
  • HTTP - ping :一个小型、免费、易于使用的Windows命令行实用程序,用于探测给定URL并显示相关统计信息。它类似于流行的ping实用程序,但通过HTTP/S而非ICMP工作,且使用URL而非计算机名称/IP地址。

1.3 模型搭建机器设置

由于机器配置较弱,使用最少三台机器构建模型,各机器在同一局域网中扮演不同角色,具体信息如下表所示:
| 机器 | OS | IPs |
| — | — | — |
| 攻击机器 | Ubuntu 16.04 | 192.168.243.144 |
| 正常机器 | Windows 8.1 | 192.168.243.143 |
| 受害机器 | Kali linux | 192.168.243.142 |

1.4 攻击流程

  • 攻击设置:攻击者并非持续攻击,而是在指定时间段进行攻击,此时间段将作为特征标签的标记时间。
  • 正常流量建模:前30 - 45分钟为正常流量建模时间,在扮演正常流量角色的机器上运行HTTP - ping,每10秒向受害机器的80端口发送HTTP请求,直至停止输出流量。
  • DDoS攻击:从攻击机器运行Bonesi工具,向受害机器发起DDoS流量攻击。攻击使用TCP协议,输入文件包含50,000个不同生成的IP地址以及浏览器和URL选项。经过至少八次不同标记时间(DDoS攻击间隔)的运行,以pcap文件格式捕获约1400万个数据包。

1.5 数据集收集

运行捕获的攻击模型后,最终数据集包括网络流量(.pcap文件格式)和受害机器上发生的事件日志。使用CICFlowMeter工具从原始数据中提取80多个流量特征并保存为CSV文件,这就是研究中的自创建数据集,后续将使用AI技术对该数据集进行分析。

以下是整个流程的mermaid流程图:

graph LR
    A[构建攻击模型生成数据] --> B[划分数据集(80%训练,20%测试)]
    B --> C[训练机器学习模型]
    C --> D[测试特征输入模型]
    D --> E[比较预测结果与测试标签]
    E --> F[得出准确率等参数]
    G[数据收集工具] --> A
    H[机器设置(攻击、正常、受害机器)] --> A
    I[攻击流程(正常流量、DDoS攻击)] --> A
    J[数据集收集(.pcap文件和日志)] --> K[提取特征保存为CSV]
    K --> A

2. 评估结果

2.1 数据集介绍

  • 自创建数据集 :以CSV格式存在,详细记录了受害机器的攻击流量、正常流量以及受害机器对攻击的响应。包含2079351个条目和80列,其中TCP协议的数据包占99.92%,其余为UDP和HOPORT协议。该数据集有DDoS和Normal两个标签,DDoS数据包占13.87%。
  • NSL - KDD数据集 :训练数据部分有125973行和43列,测试数据有22544行和43列,数据特征从85个减少到43个,DDoS数据包约占36.46%。由于其大小符合树莓派的硬件限制,也常用于在树莓派上进行训练和测试。
  • CICDDoS2019数据集 :重点关注DrDoS_UDP和DrDoS_SNMP两个数据集。
    • DrDoS_UDP数据集:包含200,000行、80个特征,DDoS和Normal数据包的比例分别为1998157和1843。
    • DrDoS_SNMP数据集:包含100,000行、80个特征,DDoS和Normal数据包的比例分别为999296和704。

在标记数据包时,手动将正常数据包标记为0,DDoS数据包标记为1。每个数据集提取20%的记录用于测试,这20%的数据在数据集中随机选取且不参与训练过程。各数据集测试数据部分的维度如下:
| 数据集 | 测试数据集大小 | 列数 |
| — | — | — |
| 自创建数据集 | 415870个条目 | 80 |
| NSL - KDD数据集 | 22544个条目 | 43 |
| DrDoS_UDP | 400000个条目 | 80 |
| DrDoS_SNMP | 200000个条目 | 80 |

2.2 模型选择

使用数据集对多种机器学习模型进行训练和测试,包括决策树、K近邻(KNN)、朴素贝叶斯、随机森林、神经网络、提升树分类器、逻辑分类器和随机梯度下降。此外,还尝试通过sklearn.ensemble库的VotingClassifier方法将这些模型组合起来,以寻找每个数据集的最优模型。
- 集成模型 :包含不同的分类模型,各分类器基于预先提供的训练数据集构建不同的数据模型。
- 多数投票 :是组合分类器的传统且流行的方法,将预测器的输出组合起来,通过多数投票得到组合模型的最终输出。
- 预测标签 :每个关联模型类别会为样本预测标称类标签,最可能的标签将被选为集成模型的输出。

2.3 评估参数

在每个数据集中,使用80%的记录训练模型,20%的记录评估训练模型。通过以下9个参数进行测试评估:
- 真正例(True Positive) :数据点被预测为正,且实际标签也为正。
- 真反例(True Negative) :数据点被预测为负,且实际标签也为负。
- 假反例(False Negative) :数据点被预测为负,但实际标签为正。
- 准确率(Accuracy) :正确预测的数据点数量与测试集中总数据点数量的比率,公式为:$Accuracy = \frac{TPR + TNR}{TPR + FPR + TNR + FNR}$
- 精确率(Precision) :真正例点数量与被预测为正的数据点数量(真正例 + 假正例)的比率,公式为:$Precision(P) = \frac{TP}{TP + FP}$
- 召回率(Recall) :真正例点数量与实际正例点数量(真正例 + 假反例)的比率,公式为:$Recall(R) = \frac{TP}{TP + FN}$
- F1分数(F1 - score) :精确率和召回率的调和平均值(假设这两个量不为零),公式为:$F1 - score = 2 * \frac{Precision * Recall}{Precision + Recall}$
- 误分类器(Mis - Classifier) :预测错误的数据点数量。

2.4 不同数据集的评估结果

自创建数据集
分类器 准确率 精确率 召回率 F1分数 误分类器
决策树 1.00 1.00 1.00 1.00 16
KNN 1.00 1.00 0.99 1.00 63
朴素贝叶斯 0.95 0.94 0.82 0.87 18178
随机森林 1.00 1.00 1.00 1.00 25
神经网络 0.99 0.87 1.00 0.93 6801
逻辑分类器 1.00 1.00 0.96 0.98 2015
随机梯度下降 0.87 0.87 1.00 0.93 89031

从结果可以看出,大多数分类模型具有较高的准确率,尤其是决策树、随机森林和提升树分类器达到了99.99%,且通过F1分数评估的分类效果也约为99.99%,说明检测到的DDoS数据包比例大多正确。相反,朴素贝叶斯和随机梯度下降模型的分类效果较弱。

NSL - KDD数据集
分类器 准确率 精确率 召回率 F1分数 误分类器
决策树(DT) 0.96 0.95 0.91 0.99 799
KNN 0.96 0.96 0.98 0.97 804
朴素贝叶斯(NB) 0.87 0.72 0.81 0.76 2859
随机森林(RF) 0.97 0.97 0.92 0.94 654
神经网络 0.96 0.97 0.93 0.96 879
逻辑分类器 0.95 0.86 0.95 0.90 1206
随机梯度下降 0.87 0.73 0.81 0.77 2829

模型在NSL - KDD数据集上仍表现良好,但准确率和分类水平不如自创建数据集。这是因为自创建数据集有更多的记录和特征(80个特征),为模型训练提供了更多数据。

集成模型(NSL - KDD数据集)
分类器(集成模型) 准确率 精确率 召回率 F1分数 误分类器
RF + KNN + DT + NB 0.96 0.99 0.87 0.93 879
RF + KNN + DT 0.97 0.96 0.92 0.94 646
RF + KNN + DT + NB + NN 0.97 0.97 0.91 0.94 719

并非所有集成模型都比单个模型效果好。从结果来看,集成模型的准确率和F1分数较高,但只有组合随机森林、KNN和决策树的模型比单个性能最高的随机森林模型表现更好,不过两者的性能差异较小(准确率约0.04%,F1分数约0.11%),而训练时间差异较大(随机森林模型为2.96秒,关联模型为15.9秒,约5倍),说明在该数据集上随机森林模型更优。

DrDoS_UDP数据集
分类器 准确率 精确率 召回率 F1分数 误分类器
决策树(DT) 1.00 1.00 1.00 1.00 35
KNN 1.00 1.00 1.00 1.00 90
朴素贝叶斯(NB) 1.00 1.00 1.00 1.00 394
随机森林(RF) 1.00 1.00 1.00 1.00 14
逻辑回归 1.00 1.00 1.00 1.00 467
随机梯度下降 1.00 1.00 1.00 1.00 850

模型在DrDoS_UDP数据集上表现良好,准确率和分类水平高达99.99%,说明大多数DDoS数据包被模型检测到。但当使用在该数据集上训练的模型测试自创建数据集时,模型的准确率大幅降低,部分模型的误分类率超过50%,如决策树、逻辑回归和随机梯度下降模型,KNN模型的误分类率甚至超过75%,朴素贝叶斯模型也存在问题,实际应用中会给出错误的攻击警告。尝试组合模型改善性能,但效果不佳。

DrDoS_SNMP数据集
分类器 准确率 精确率 召回率 F1分数 误分类器
决策树(DT) 1.00 0.97 0.95 0.96 20
KNN 1.00 0.94 0.84 0.89 52
朴素贝叶斯(NB) 1.00 0.53 1.00 0.70 212
随机森林(RF) 1.00 0.97 0.98 0.97 11
逻辑回归 1.00 0.38 0.27 0.32 284
支持向量机 1.00 1.00 0.00 0.01 242
随机梯度下降 1.00 0.36 0.37 0.36 314

在DrDoS_SNMP数据集中,由于正常数据包仅占0.0704%,存在数据不平衡问题。一些模型如朴素贝叶斯、逻辑回归、支持向量机和随机梯度下降虽然准确率较高,但精确率、召回率和F1分数等分类参数不佳。例如,支持向量机模型的精确率为1.00,但召回率仅为0.01,大部分正常数据包被分类为DDoS,忽略正常数据包的比率非常高,这体现了数据不平衡对模型预测结果的影响。

2.5 综合分析与改进

通过对三个数据集和机器学习分类模型的研究,可以发现每个数据集和模型都有优缺点。
- 数据集方面 :自创建数据集以TCP数据包为主,缺乏UDP攻击特征;DrDoS_UDP和DrDoS_SNMP数据集则相反。在这三个数据集上训练的模型在测试集上的评估结果较高,但使用其他数据集的数据时结果较差,这表明模型存在过拟合现象,原因是训练数据集数量不平衡且数据复杂度高(85个特征)。
- 训练模型方面 :随机森林模型在不同网络数据集中表现较好,准确率高,误预测点的比率低于其他模型。

为解决数据不平衡问题,将自创建数据集和DrDoS_UDP数据集组合,创建一个包含TCP和UDP两种协议DDoS攻击样本的数据集,该数据集有200,000个条目、80个特征,其中UDP协议的数据包有1000823个,其余为TCP,DDoS数据包有821515个。在这个聚合数据集上训练机器学习分类模型,并使用自创建数据集和DrDoS_UDP的测试数据集进行测试,确保测试部分不参与建模过程。

以下是聚合数据集测试结果:
| 分类器 | 准确率 | 精确率 | 召回率 | F1分数 | 误分类器 |
| — | — | — | — | — | — |
| 决策树 | 1.00 | 0.96 | 1.00 | 0.98 | 648 |
| KNN | 0.99 | 0.92 | 0.08 | 0.15 | 12940 |
| 朴素贝叶斯 | 0.98 | 0.64 | 0.08 | 0.14 | 13493 |
| 随机森林 | 1.00 | 0.98 | 1.00 | 0.99 | 270 |
| 逻辑回归 | 0.69 | 0.00 | 0.03 | 0.00 | 273660 |
| 随机梯度下降 | 0.98 | 0.68 | 0.08 | 0.15 | 13390 |

从结果可以看出,大多数模型在TCP和UDP数据包上的性能都有显著提高,这表明平衡每个类别中标签数量的数据集更适合数据训练。在网络数据集的模型调查中,决策树和随机森林模型取得了最佳效果。

3. 不同数据集和模型的深入分析

3.1 数据集特性对模型的影响

不同数据集的特性差异显著影响了模型的性能。自创建数据集以TCP数据包为主,这使得基于该数据集训练的模型对TCP相关的DDoS攻击检测效果较好,但在处理UDP攻击时表现不佳。而DrDoS_UDP和DrDoS_SNMP数据集则以UDP数据包为主,在这些数据集上训练的模型对UDP攻击检测效果好,但当应用到以TCP为主的自创建数据集时,准确率大幅下降。

这种现象的根源在于数据集的分布和特征。自创建数据集的80个特征可能更偏向于TCP协议的特征,而DrDoS_UDP和DrDoS_SNMP数据集的特征则更适合UDP攻击的检测。当模型在训练时过度依赖于特定数据集的特征和分布,就会出现过拟合现象,导致在其他数据集上的泛化能力变差。

3.2 模型性能对比

在不同数据集上,各个模型的表现各有优劣。随机森林模型在多个数据集上都展现出了较好的性能,具有较高的准确率和较低的误分类率。这是因为随机森林通过集成多个决策树,能够减少单个决策树的过拟合风险,同时利用多个决策树的投票机制提高预测的稳定性。

决策树模型在部分数据集上也表现出色,如在自创建数据集和DrDoS_UDP数据集上达到了近乎完美的准确率。决策树的优点在于其直观性和可解释性,能够清晰地展示决策过程,但容易受到数据噪声和过拟合的影响。

相比之下,朴素贝叶斯和随机梯度下降模型在多个数据集上的表现较弱。朴素贝叶斯基于简单的概率假设,在复杂的数据分布下可能无法准确建模;随机梯度下降则可能在优化过程中陷入局部最优解,导致模型性能不佳。

3.3 集成模型的效果

集成模型通过组合多个分类器,试图提高模型的性能。然而,并非所有的集成模型都能取得比单个模型更好的效果。在NSL - KDD数据集上,只有部分集成模型(如RF + KNN + DT)比单个性能最高的随机森林模型表现稍好,但性能提升幅度较小,而训练时间却大幅增加。

这说明集成模型虽然能够综合多个分类器的优势,但也增加了模型的复杂度和训练成本。在选择是否使用集成模型时,需要权衡性能提升和训练成本之间的关系。

4. 数据不平衡问题的解决与效果验证

4.1 数据平衡的重要性

数据不平衡是影响模型性能的一个重要因素。在DrDoS_SNMP数据集中,由于正常数据包仅占0.0704%,导致部分模型虽然准确率较高,但精确率、召回率和F1分数等分类参数不佳。这种情况下,模型可能会偏向于预测数量较多的类别(DDoS数据包),而忽略数量较少的类别(正常数据包),从而给出错误的攻击警告。

因此,解决数据不平衡问题对于提高模型的泛化能力和分类准确性至关重要。

4.2 数据集组合的效果

为了解决数据不平衡问题,将自创建数据集和DrDoS_UDP数据集组合,创建了一个包含TCP和UDP两种协议DDoS攻击样本的数据集。从组合数据集的测试结果来看,大多数模型在TCP和UDP数据包上的性能都有显著提高。

例如,决策树和随机森林模型在组合数据集上的准确率和F1分数都保持在较高水平,误分类率也较低。这表明通过组合不同特性的数据集,能够平衡数据分布,为模型提供更丰富的样本和特征,从而提高模型的泛化能力和分类准确性。

以下是组合数据集对模型性能提升的mermaid流程图:

graph LR
    A[数据不平衡的数据集] --> B[组合数据集(自创建+DrDoS_UDP)]
    B --> C[平衡数据分布]
    C --> D[训练模型]
    D --> E[提高模型泛化能力]
    E --> F[改善模型分类准确性]

5. 总结与建议

5.1 总结

通过对不同数据集和机器学习模型的研究,我们发现数据集的特性和数据平衡对模型性能有显著影响。自创建数据集、DrDoS_UDP和DrDoS_SNMP数据集各有优缺点,模型在不同数据集上的表现也各不相同。随机森林模型在多个数据集上表现较好,而集成模型的效果需要根据具体情况权衡。数据不平衡问题会导致模型的分类参数不佳,通过组合数据集可以有效解决这一问题。

5.2 建议

  • 数据集选择 :在进行DDoS攻击检测时,应尽量选择包含多种协议和攻击类型的数据集,以提高模型的泛化能力。如果数据集存在数据不平衡问题,可以考虑采用数据组合或数据采样等方法进行处理。
  • 模型选择 :随机森林和决策树模型在DDoS攻击检测中表现较好,可以作为首选模型。同时,可以尝试使用集成模型,但需要注意权衡性能提升和训练成本。
  • 模型评估 :在评估模型性能时,不能仅仅关注准确率,还应综合考虑精确率、召回率和F1分数等分类参数,以全面评估模型的分类能力。

以下是一个简单的选择模型和处理数据集的决策列表:
1. 检查数据集的协议分布和数据平衡情况。
2. 如果数据集以单一协议为主,考虑组合其他协议的数据集。
3. 优先选择随机森林或决策树模型进行训练和测试。
4. 尝试使用集成模型,但评估其性能提升和训练成本。
5. 综合评估模型的准确率、精确率、召回率和F1分数。

通过以上建议,可以提高DDoS攻击检测模型的性能和可靠性,更好地应对复杂多变的网络攻击。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值