基于深度学习的网络流量异常检测系统

基于深度学习的网络流量异常检测系统

1. 项目概述

本项目旨在构建一个基于深度学习的高效网络流量异常检测系统。系统采用 B/S 架构 ,前后端分离设计。后端基于 Django 框架,前端采用 Vue 3 + Element Plus 。核心检测引擎利用 PyTorch 构建深度学习模型(MLP 和 1D-CNN),能够对网络流量数据进行实时或离线分析,精准识别良性流量及多种类型的网络攻击(如 DoS, PortScan, Web Attack 等)。

1.1 技术栈

  • 前端: Vue 3, Vite, Element Plus, ECharts, Axios
  • 后端: Django 5.x, Django REST Framework (DRF)
  • 算法: PyTorch, Scikit-learn, Pandas, NumPy
  • 数据库: SQLite (开发/测试) / MySQL (生产)
  • 环境: Anaconda, Python 3.9+

1.2 系统架构

系统整体分为三层:

  1. 展示层 (Frontend): 提供用户交互界面,负责数据可视化和操作指令发送。
  2. 业务逻辑层 (Backend API): 处理 HTTP 请求,进行用户认证、数据验证、任务调度。
  3. 核心计算层 (Core Engine): 执行数据预处理、模型加载、推理预测和训练任务。

2. 核心算法与模型

2.1 数据集与特征工程

2.1.1 数据集

使用 CICIDS2017 网络入侵检测数据集,该数据集模拟了真实的良性和攻击网络流量,包含最新的常见攻击类型。

2.1.2 特征选择

为了提高检测效率并减少噪声,系统从原始数据的 80+ 个特征中筛选出 20 个核心特征

  1. Flow Duration (流持续时间)
  2. Bwd Packet Length Max (反向数据包最大长度)
  3. Bwd Packet Length Mean (反向数据包平均长度)
  4. Bwd Packet Length Std (反向数据包长度标准差)
  5. Flow IAT Std (流到达间隔标准差)
  6. Flow IAT Max (流到达间隔最大值)
  7. Fwd IAT Total (正向到达间隔总和)
  8. Fwd IAT Std (正向到达间隔标准差)
  9. Fwd IAT Max (正向到达间隔最大值)
  10. Min Packet Length (最小数据包长度)
  11. Max Packet Length (最大数据包长度)
  12. Packet Length Mean (数据包平均长度)
  13. Packet Length Std (数据包长度标准差)
  14. Packet Length Variance (数据包长度方差)
  15. PSH Flag Count (PSH 标志计数)
  16. Average Packet Size (平均数据包大小)
  17. Avg Bwd Segment Size (平均反向段大小)
  18. Idle Mean (空闲平均时间)
  19. Idle Max (空闲最大时间)
  20. Idle Min (空闲最小时间)
2.1.3 数据预处理
  1. 缺失值与异常值处理 : 使用 np.nan_to_num 处理 NaNInfinity 值,防止模型训练崩溃。
  2. 标签编码与归纳 :
    • 原始标签映射为 5 大类:
      • Benign: 正常流量
      • DoS: 拒绝服务攻击 (包含 DoS Hulk, GoldenEye, Slowloris 等)
      • Probe: 探测攻击 (PortScan)
      • R2L: 远程到本地攻击 (FTP-Patator, SSH-Patator, Web Attack)
      • U2R: 用户到根攻击 (Infiltration)
    • 使用 LabelEncoder 将文本标签转换为数值 [0, 1, 2, 3, 4]。
  3. 特征标准化 : 使用 MinMaxScaler 将所有特征值缩放到 [0, 1] 区间,公式为 Xnorm=X−XminXmax−XminX_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}Xnorm=Xmax−XminX−Xmin。

2.2 模型架构

2.2.1 多层感知机 (MLP)

MLP 是一种前馈神经网络,适用于处理结构化的表格数据。

  • 输入层: 20 节点 (对应 20 个特征)。
  • 隐藏层 1: 128 节点,ReLU 激活,Dropout (0.2)。
  • 隐藏层 2: 64 节点,ReLU 激活,Dropout (0.2)。
  • 输出层: 5 节点 (对应 5 个类别)。
  • 特点: 结构简单,参数较少,推理速度极快,适合实时性要求高的场景。
2.2.2 一维卷积神经网络 (1D-CNN)

1D-CNN 能够捕捉序列特征中的局部相关性,虽然通常用于时间序列,但在特征排列具有某种逻辑关联时也表现优异。

  • 输入层 : 20 维特征向量,通过 unsqueeze 增加通道维度。
  • 卷积层 1: 32 个卷积核,核大小 3,Padding 1,ReLU 激活。
  • 池化层: MaxPool1d,核大小 2,步长 2 (特征图尺寸减半)。
  • 卷积层 2: 64 个卷积核,核大小 3,Padding 1,ReLU 激活。
  • 全连接层: 展平后连接 64 节点全连接层,Dropout (0.5)。
  • 输出层: 5 节点。
  • 特点: 能够自动提取更高级的抽象特征,抗噪能力较强。

2.3 模型训练与评估

训练配置
  • 损失函数 : 交叉熵损失 (CrossEntropyLoss),适用于多分类问题。
  • 优化器 : Adam (lr=0.001),自适应学习率优化算法。
  • Batch Size: 1024 (大数据集下提高训练吞吐量)。
  • Epochs: 默认 10-20 轮,根据 Loss 曲线早停。
评估指标
  1. Accuracy (准确率): 正确分类样本占总样本的比例。
  2. Precision (精确率): 预测为攻击的样本中实际为攻击的比例 (减少误报)。
  3. Recall (召回率): 实际为攻击的样本中被正确预测的比例 (减少漏报,安全领域最重要)。
  4. F1-Score: 精确率和召回率的调和平均数,综合评价指标。
算法效果展示

1. 攻击类型分布

图解 : 此饼图展示了数据集中各类别流量的比例。由于正常流量 (Benign) 通常远多于攻击流量,这反映了网络数据的类别不平衡特性,模型训练时需注意这一点。

2. MLP 模型训练过程

图解:

  • 蓝色曲线 (Loss): 随着迭代次数增加,Loss 迅速下降并趋于平稳,表明模型有效地学习到了数据特征。
  • 红色/绿色曲线 (Accuracy) : 训练集和验证集准确率同步上升,且差距较小,说明模型未出现明显的过拟合

3. CNN 模型训练过程

图解: CNN 的收敛曲线通常比 MLP 更平滑。如果验证集 Loss 在后期开始上升而训练集 Loss 继续下降,则可能存在过拟合,需要调整 Dropout 或 Early Stopping。

4. 混淆矩阵 (Confusion Matrix)

图解:

  • 纵轴: 真实标签 (True Label)
  • 横轴: 预测标签 (Predicted Label)
  • 对角线: 正确分类的数量。颜色越深代表数量越多。
  • 非对角线 : 误分类的数量。例如,如果有大量 DoS 被预测为 Benign,则说明模型对 DoS 攻击的漏报率较高。

3. 数据库设计

系统数据库设计遵循规范化原则,确保数据的一致性和完整性。主要包含以下数据表:

3.1 用户表 (auth_user)

Django 内置的用户认证表,用于管理系统用户。

字段名 类型 长度 非空 唯一 说明
id Integer - 主键,自增ID
username Varchar 150 用户名,登录凭证
password Varchar 128 - PBKDF2 加密存储的密码哈希
email Varchar 254 - 电子邮箱
is_superuser Boolean - - 是否为超级管理员
is_staff Boolean - - 是否拥有后台管理权限
date_joined DateTime - - 账户创建时间
last_login DateTime - - 最后登录时间

3.2 数据集表 (api_dataset)

用于存储用户上传的训练/测试数据集元数据。

字段名 类型 长度 非空 唯一 说明
id Integer - 主键
name Varchar 255 - 数据集显示名称
file FileField - - 文件在服务器上的相对路径 (media/datasets/...)
uploaded_at DateTime - - 上传时间,自动添加
description Text - - 数据集备注说明

3.3 训练模型表 (api_trainedmodel)

存储训练完成的模型文件、Scaler文件及性能评估结果。

字段名 类型 长度 非空 唯一 说明
id Integer - 主键
name Varchar 255 - 模型自定义名称
file FileField - - .pt 模型权重文件路径
model_type Varchar 50 - 模型架构类型 ('MLP' 或 'CNN')
accuracy Float - - 测试集准确率 (0.0-1.0)
precision Float - - 加权精确率
recall Float - - 加权召回率
f1_score Float - - 加权 F1 分数
training_history JSON - - 存储 Loss/Acc 随 Epoch 变化的列表数据
confusion_matrix JSON - - 存储混淆矩阵的二维数组
is_active Boolean - - 是否为当前系统默认使用的检测模型
created_at DateTime - - 训练完成时间

3.4 检测日志表 (api_detectionlog)

记录每一次入侵检测的请求与结果,用于审计和历史回溯。

字段名 类型 长度 非空 唯一 说明
id Integer - 主键
timestamp DateTime - - 检测发生时间
status Varchar 50 - 总体结果 ('Normal' 或 'Attack Detected')
result JSON - - 详细结果数据 (包含各类别概率、统计分布等)
attack_type_distribution JSON - - 批量检测时的攻击类型分布统计
execution_time Float - - 推理耗时 (秒),用于性能监控
input_file FileField - - 批量检测时上传的原始流量 CSV 文件

4. 系统功能与界面展示

系统前端采用 Element Plus 暗黑主题组件库,结合 ECharts 实现丰富的数据可视化,提供沉浸式的用户体验。

4.1 登录与注册

提供安全的用户认证入口。

  • 功能点 : 表单验证、Token 获取、登录状态持久化。

4.2 系统仪表盘 (Dashboard)

系统运行状态的指挥中心。

  • 功能点 :
    • 系统资源 : 实时展示服务器 CPU 和内存使用率 (使用 psutil 获取)。
    • 模型状态: 显示当前激活的检测模型及其准确率。
    • 统计概览 : 展示历史总检测次数及异常流量检出率。

4.3 数据管理

数据集的统一管理中心。

  • 功能点 :
    • 上传: 支持拖拽上传 CSV 格式流量数据。
    • 预览: 前端分页展示 CSV 内容,支持大文件预览。
    • 统计 : 调用后端接口计算并展示数据的统计特征。

4.4 模型管理

系统的核心大脑,负责模型的训练与迭代。

  • 功能点 :
    • 在线训练: 用户选择数据集和算法,后端异步执行训练任务。
    • 可视化评估: 训练完成后自动绘制 Loss/Accuracy 曲线和混淆矩阵。
    • 模型切换: 一键激活指定模型,立即应用于入侵检测模块。
    • 导入/导出 : 支持下载 .pt 模型文件或上传已有模型。

4.5 异常检测 (核心业务)

提供灵活的检测方式,满足不同场景需求。

4.5.1 单条检测 (实时分析)

适用于对单条疑似恶意流量进行快速研判。

  • 中文特征映射 : 将晦涩的专业术语 (如 Flow IAT Std) 映射为中文 (如 流到达间隔标准差),降低使用门槛。
  • 快速示例: 提供"正常流量"和"DDoS攻击"的一键填充功能,方便演示。
  • 智能解释 : 根据检测结果自动生成中文分析报告,解释判定依据和建议措施。
4.5.2 批量检测 (离线审计)

适用于对历史流量日志进行批量审计。

  • 文件上传: 上传 PCAP 转出的 CSV 文件。
  • 全量分析: 后端批量推理,计算整体的安全态势。
  • 可视化报告 : 生成攻击类型分布饼图,直观展示主要威胁类型。

4.6 检测历史

全量记录检测日志,支持追溯。

  • 功能点 :
    • 状态标签: 清晰区分"正常"与"发现攻击"记录。
    • 详细信息 : 点击可查看该次检测的完整耗时、威胁分布等细节。

4.7 个人设置

用户个性化配置中心。

  • 功能点 : 修改个人资料、查看账户信息。

5. 总结

本系统成功实现了一个端到端的网络流量异常检测解决方案。通过深度学习算法 (CNN/MLP) 有效解决了传统基于规则的检测系统难以识别未知攻击的问题。系统界面友好,功能完善,具备从数据管理、模型训练到实时检测的完整闭环能力,具有较高的实用价值和扩展潜力。

相关推荐
Cherry的跨界思维2 小时前
27、Python压缩备份安全指南:从zipfile到AES-256加密,生产级自动化备份全方案
人工智能·python·安全·自动化·办公自动化·python自动化·python办公自动化
说私域2 小时前
开源AI智能名片链动2+1模式商城小程序在淘宝首页流量生态中的应用与影响研究
人工智能·小程序·开源
Blossom.1182 小时前
基于MLOps+LLM的模型全生命周期自动化治理系统:从数据漂移到智能回滚的落地实践
运维·人工智能·学习·决策树·stable diffusion·自动化·音视频
墨染星辰云水间2 小时前
Extracting Latent Steering Vectors from Pretrained Language Models
人工智能·语言模型·自然语言处理
牙牙要健康2 小时前
【YOLOv8-Ultralytics】 【目标检测】【v8.3.235版本】 模型专用训练器代码train.py解析
人工智能·yolo·目标检测
~央千澈~2 小时前
如何用AI处理音乐音频消除作品信息里的 AI 痕迹-程序员音乐人卓伊凡
人工智能
爱学习的小牛2 小时前
人工智能管理体系—ISO/IEC 42001 Foundation
人工智能·it管理·iso42001·ai管理
Mintopia2 小时前
🚀 技术并购视角:AIGC领域的 Web 生态整合与资源重组
人工智能·llm·aigc
般若Neo2 小时前
AI视频生成技术原理与行业应用 - AI视频概览
人工智能·aigc·ai视频