Skip to content

Latest commit

 

History

History
730 lines (657 loc) · 58.1 KB

File metadata and controls

730 lines (657 loc) · 58.1 KB

网络安全威胁检测系统 - 项目架构文档

目录


项目概述

本项目是一个基于机器学习、深度学习和开源安全算法的网络安全威胁检测系统,能够识别钓鱼网站、恶意URL、DDoS攻击、端口扫描等多种网络威胁。系统采用模块化设计,集成了多种业界知名的开源检测算法。

核心功能

  • URL特征提取: 自动从URL提取30个安全特征
  • 机器学习检测: 支持8种ML算法自动选优 (RF, XGBoost, SVM等)
  • 深度学习检测: 支持DNN/CNN/LSTM模型
  • Kitsune检测: 基于自编码器集成的在线网络入侵检测 (NDSS'18)
  • LUCID DDoS检测: 基于CNN的轻量级DDoS攻击检测 (IEEE TNSM 2020)
  • Slips行为分析: 基于行为模式的威胁检测
  • RL安全响应: DQN/PPO智能安全响应决策
  • 统一检测管道: 多算法级联融合检测

测试覆盖

  • 298个测试用例通过
  • 2个测试跳过 (可选依赖)

目录结构

Network-Security-Based-On-ML/
│
├── app.py                      # 主应用入口 (FastAPI Web服务)
├── requirements.txt            # Python依赖包
├── demo_algorithms.py          # 算法演示脚本
├── Dockerfile                  # Docker镜像配置
├── docker-compose.yml          # Docker Compose配置
├── deploy.sh                   # 部署脚本
│
├── networksecurity/            # 核心代码包
│   │
│   ├── models/                 # ⭐ 检测模型层 (新增)
│   │   ├── ml/                     # 传统机器学习模型
│   │   │   ├── __init__.py
│   │   │   └── classifiers.py      # RF, XGBoost, SVM, KNN等
│   │   │
│   │   ├── dl/                     # 深度学习模型
│   │   │   ├── __init__.py
│   │   │   └── networks.py         # DNN, CNN, LSTM
│   │   │
│   │   ├── rl/                     # 强化学习模型
│   │   │   ├── __init__.py
│   │   │   └── agents.py           # DQN, PPO基础实现
│   │   │
│   │   ├── kitsune/                # Kitsune算法 (NDSS'18)
│   │   │   ├── __init__.py
│   │   │   ├── afterimage.py       # IncStat, IncStatDB, AfterImage
│   │   │   ├── kitnet.py           # AutoEncoder, KitNET集成
│   │   │   ├── feature_extractor.py # 特征提取器
│   │   │   └── kitsune.py          # 主检测器
│   │   │
│   │   ├── lucid/                  # LUCID算法 (IEEE TNSM 2020)
│   │   │   ├── __init__.py
│   │   │   ├── cnn.py              # LucidCNN (1D卷积)
│   │   │   ├── dataset_parser.py   # FlowSample数据解析
│   │   │   └── detector.py         # LucidDetector
│   │   │
│   │   ├── slips/                  # Slips风格行为分析
│   │   │   ├── __init__.py
│   │   │   ├── behavior_analyzer.py # BehaviorProfile分析
│   │   │   ├── threat_intelligence.py # IPReputation威胁情报
│   │   │   ├── flow_analyzer.py    # FlowFeatures流分析
│   │   │   └── detector.py         # SlipsDetector
│   │   │
│   │   ├── rl_security/            # RL安全响应
│   │   │   ├── __init__.py
│   │   │   ├── environment.py      # NetworkSecurityEnv (15维状态, 7动作)
│   │   │   ├── agents.py           # DQN, DoubleDQN, PPO
│   │   │   └── reward.py           # RewardCalculator
│   │   │
│   │   ├── pipeline/               # 统一检测管道
│   │   │   ├── __init__.py
│   │   │   ├── preprocessor.py     # UnifiedPreprocessor
│   │   │   ├── adapter.py          # ModelAdapter, PipelineStage
│   │   │   └── detector.py         # UnifiedDetector (级联模式)
│   │   │
│   │   ├── pretrained.py           # 预训练模型配置
│   │   └── api.py                  # 模型API路由
│   │
│   ├── stats/                  # 统计模块
│   │   ├── __init__.py
│   │   ├── models.py               # TrafficLog, ThreatType等数据模型
│   │   ├── traffic_logger.py       # 流量日志记录器
│   │   ├── aggregator.py           # StatsAggregator统计聚合
│   │   └── api.py                  # 统计API (/api/v1/stats/*)
│   │
│   ├── firewall/               # 防火墙模块
│   │   ├── __init__.py
│   │   ├── engine.py               # FirewallEngine规则引擎
│   │   ├── rules.py                # FirewallRule规则定义
│   │   └── api.py                  # 防火墙API (/api/v1/firewall/*)
│   │
│   ├── components/             # 核心组件层
│   │   ├── data_ingestion.py       # 数据摄取
│   │   ├── data_validation.py      # 数据验证
│   │   ├── data_transformation.py  # 数据转换
│   │   └── model_trainer.py        # 模型训练器
│   │
│   ├── pipeline/               # 训练管道
│   │   └── training_pipeline.py    # TrainingPipeline
│   │
│   ├── entity/                 # 实体定义
│   │   ├── config_entity.py        # 配置实体类
│   │   └── artifact_entity.py      # 产物实体类
│   │
│   ├── utils/                  # 工具函数
│   │   └── url_feature_extractor.py # URL特征提取
│   │
│   └── logging/                # 日志配置
│
├── deploy/                     # ⭐ 部署配置 (新增)
│   ├── kubernetes/                 # Kubernetes配置
│   │   ├── deployment.yaml         # 部署配置
│   │   ├── service.yaml            # 服务配置
│   │   └── ingress.yaml            # 入口配置
│   └── nginx/                      # Nginx配置
│       └── nginx.conf              # 反向代理配置
│
├── templates/                  # HTML模板
│   ├── index.html                  # 首页 (实时统计)
│   ├── predict.html                # 预测页面
│   ├── model_select.html           # 模型选择页面
│   ├── dashboard.html              # 统计仪表盘
│   └── training.html               # 训练控制台
│
├── tests/                      # 测试文件 (298 passed)
│   ├── test_github_algorithms.py   # GitHub算法集成测试 (19个)
│   ├── test_ml_models.py           # ML模型测试
│   ├── test_dl_models.py           # DL模型测试
│   ├── test_rl_agents.py           # RL智能体测试
│   ├── test_firewall.py            # 防火墙测试
│   ├── test_stats_*.py             # 统计模块测试
│   └── test_data_pipeline.py       # 数据管道测试
│
├── data/                       # 训练数据
├── models/                     # 训练好的模型
├── artifacts/                  # 训练产物
└── logs/                       # 日志文件

系统架构图

┌─────────────────────────────────────────────────────────────────────────────┐
│                              用户界面层 (Frontend)                            │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐           │
│  │  首页   │  │  预测   │  │ 模型选择│  │ 仪表盘  │  │  训练   │           │
│  │ (统计) │  │         │  │         │  │         │  │         │           │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘           │
└───────┼────────────┼────────────┼────────────┼────────────┼─────────────────┘
        │            │            │            │            │
        └────────────┴────────────┴─────┬──────┴────────────┘
                                        │
┌───────────────────────────────────────┼─────────────────────────────────────┐
│                              API网关层 (app.py)                              │
├───────────────────────────────────────┼─────────────────────────────────────┤
│  ┌────────────────────────────────────┴────────────────────────────────┐    │
│  │                         FastAPI Application                          │    │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐  │    │
│  │  │/predict  │ │/api/     │ │/api/v1/  │ │/api/v1/  │ │/api/     │  │    │
│  │  │_live     │ │system-   │ │stats/*   │ │firewall/*│ │models/*  │  │    │
│  │  │          │ │stats     │ │          │ │          │ │          │  │    │
│  │  └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘  │    │
│  └───────┼────────────┼────────────┼────────────┼────────────┼────────┘    │
└──────────┼────────────┼────────────┼────────────┼────────────┼──────────────┘
           │            │            │            │            │
           ▼            ▼            ▼            ▼            ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                              检测模型层 (Models)                             │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                      统一检测管道 (UnifiedDetector)                  │    │
│  │  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐         │    │
│  │  │ Kitsune  │──▶│  LUCID   │──▶│  Slips   │──▶│ RL Agent │         │    │
│  │  │ (异常)   │   │ (DDoS)   │   │ (行为)   │   │ (响应)   │         │    │
│  │  └──────────┘   └──────────┘   └──────────┘   └──────────┘         │    │
│  │       │              │              │              │                │    │
│  │       └──────────────┴──────────────┴──────────────┘                │    │
│  │                              │                                       │    │
│  │                      级联融合决策                                    │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                                                                              │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐    │
│  │   ML模型     │  │   DL模型     │  │   RL模型     │  │  防火墙引擎  │    │
│  │ RF/XGB/SVM  │  │ DNN/CNN/LSTM │  │  DQN/PPO    │  │  规则引擎    │    │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘    │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘
                                        │
                                        ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                              数据访问层 (Data Access)                         │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐    │
│  │   流量日志   │  │   统计聚合   │  │   模型文件   │  │   配置文件   │    │
│  │ TrafficLogger│  │ Aggregator   │  │   models/    │  │   config/    │    │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘

检测模型层

1. Kitsune (NDSS 2018)

论文: Kitsune: An Ensemble of Autoencoders for Online Network Intrusion Detection

┌─────────────────────────────────────────────────────────────────────────────┐
│                         Kitsune 检测架构                                     │
└─────────────────────────────────────────────────────────────────────────────┘

                         网络数据包输入
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      AfterImage 特征提取器                                   │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  IncStat: 增量统计计算器                                               │  │
│  │  - 均值、方差、标准差                                                  │  │
│  │  - 协方差、相关系数                                                    │  │
│  │  - 时间窗口: 100ms, 500ms, 1.5s, 10s, 1min                            │  │
│  │                                                                        │  │
│  │  IncStatDB: 统计数据库                                                 │  │
│  │  - 源IP统计、目标IP统计                                                │  │
│  │  - 源MAC统计、目标MAC统计                                              │  │
│  │  - 通道统计 (IP对、Socket对)                                           │  │
│  │                                                                        │  │
│  │  输出: 115维特征向量                                                   │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼ 115维特征
┌─────────────────────────────────────────────────────────────────────────────┐
│                      KitNET 自编码器集成                                     │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  特征映射层 (Feature Mapper)                                           │  │
│  │  - 将115维特征分组到多个子自编码器                                     │  │
│  │  - 每组10-20个相关特征                                                 │  │
│  │                                                                        │  │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐         │  │
│  │  │   AE1   │ │   AE2   │ │   AE3   │ │   ...   │ │   AEn   │         │  │
│  │  │ (10维)  │ │ (15维)  │ │ (12维)  │ │         │ │ (8维)   │         │  │
│  │  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘         │  │
│  │       │           │           │           │           │               │  │
│  │       └───────────┴───────────┴─────┬─────┴───────────┘               │  │
│  │                                     │                                  │  │
│  │                              ┌──────┴──────┐                           │  │
│  │                              │  输出层AE   │                           │  │
│  │                              │ (集成RMSE)  │                           │  │
│  │                              └──────┬──────┘                           │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                    异常分数 (RMSE > 阈值 → 异常)

核心类:

  • IncStat: 增量统计计算 (均值、方差、协方差)
  • IncStatDB: 统计数据库管理
  • AfterImage: 115维特征提取
  • AutoEncoder: 单个自编码器
  • KitNET: 自编码器集成
  • KitsuneDetector: 主检测器

2. LUCID (IEEE TNSM 2020)

论文: LUCID: A Practical, Lightweight Deep Learning Solution for DDoS Attack Detection

┌─────────────────────────────────────────────────────────────────────────────┐
│                         LUCID DDoS检测架构                                   │
└─────────────────────────────────────────────────────────────────────────────┘

                         网络流数据输入
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      FlowSample 数据解析                                     │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  每个流提取特征:                                                       │  │
│  │  - 包数量、字节数                                                      │  │
│  │  - 流持续时间                                                          │  │
│  │  - 包间隔时间统计                                                      │  │
│  │  - 包大小统计                                                          │  │
│  │  - 协议类型、端口信息                                                  │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      LucidCNN 1D卷积网络                                     │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  输入: (batch, time_steps, features)                                   │  │
│  │           │                                                            │  │
│  │           ▼                                                            │  │
│  │  ┌─────────────────────────────────────────────────────────────────┐  │  │
│  │  │  Conv1D (64 filters, kernel=3) + ReLU + BatchNorm               │  │  │
│  │  └─────────────────────────────────────────────────────────────────┘  │  │
│  │           │                                                            │  │
│  │           ▼                                                            │  │
│  │  ┌─────────────────────────────────────────────────────────────────┐  │  │
│  │  │  Conv1D (128 filters, kernel=3) + ReLU + BatchNorm              │  │  │
│  │  └─────────────────────────────────────────────────────────────────┘  │  │
│  │           │                                                            │  │
│  │           ▼                                                            │  │
│  │  ┌─────────────────────────────────────────────────────────────────┐  │  │
│  │  │  GlobalAveragePooling1D                                         │  │  │
│  │  └─────────────────────────────────────────────────────────────────┘  │  │
│  │           │                                                            │  │
│  │           ▼                                                            │  │
│  │  ┌─────────────────────────────────────────────────────────────────┐  │  │
│  │  │  Dense (64) + ReLU + Dropout (0.5)                              │  │  │
│  │  └─────────────────────────────────────────────────────────────────┘  │  │
│  │           │                                                            │  │
│  │           ▼                                                            │  │
│  │  ┌─────────────────────────────────────────────────────────────────┐  │  │
│  │  │  Dense (1) + Sigmoid → DDoS概率                                 │  │  │
│  │  └─────────────────────────────────────────────────────────────────┘  │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                    DDoS检测结果 (概率 > 0.5 → DDoS攻击)

核心类:

  • FlowSample: 流数据样本
  • LucidCNN: 1D卷积神经网络
  • LucidDetector: DDoS检测器

3. Slips风格行为分析

参考: Stratosphere Linux IPS

┌─────────────────────────────────────────────────────────────────────────────┐
│                         Slips 行为分析架构                                   │
└─────────────────────────────────────────────────────────────────────────────┘

                         网络流量输入
                              │
              ┌───────────────┼───────────────┐
              │               │               │
              ▼               ▼               ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│   行为分析器     │ │   威胁情报       │ │   流分析器       │
│ BehaviorAnalyzer │ │ ThreatIntelligence│ │  FlowAnalyzer   │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│                  │ │                  │ │                  │
│ 检测模式:        │ │ IP信誉评分:      │ │ 流特征提取:      │
│ - 端口扫描       │ │ - 黑名单检查     │ │ - 包统计        │
│ - DDoS攻击       │ │ - 白名单检查     │ │ - 字节统计      │
│ - C2通信         │ │ - 历史行为评分   │ │ - 时间特征      │
│ - 数据外泄       │ │                  │ │ - 协议分析      │
│                  │ │ 威胁类型:        │ │                  │
│ 行为特征:        │ │ - malware        │ │                  │
│ - 连接频率       │ │ - botnet         │ │                  │
│ - 端口分布       │ │ - spam           │ │                  │
│ - 数据量模式     │ │ - scanner        │ │                  │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
         │                    │                    │
         └────────────────────┼────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      SlipsDetector 综合检测                                  │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  融合决策:                                                             │  │
│  │  - 行为分析结果 (权重: 40%)                                            │  │
│  │  - 威胁情报结果 (权重: 35%)                                            │  │
│  │  - 流分析结果   (权重: 25%)                                            │  │
│  │                                                                        │  │
│  │  输出:                                                                 │  │
│  │  - is_malicious: bool                                                 │  │
│  │  - threat_types: List[str]                                            │  │
│  │  - confidence: float                                                  │  │
│  │  - details: dict                                                      │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘

核心类:

  • BehaviorProfile: 行为配置文件
  • BehaviorAnalyzer: 行为分析器
  • IPReputation: IP信誉评分
  • ThreatIntelligence: 威胁情报
  • FlowFeatures: 流特征
  • SlipsDetector: 综合检测器

4. RL安全响应

参考: gym-network_intrusion

┌─────────────────────────────────────────────────────────────────────────────┐
│                         RL安全响应架构                                       │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│                      NetworkSecurityEnv 环境                                 │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  状态空间 (15维):                                                      │  │
│  │  - 流量特征: packet_rate, byte_rate, connection_count                 │  │
│  │  - 威胁指标: threat_level, anomaly_score, attack_type                 │  │
│  │  - 系统状态: cpu_usage, memory_usage, bandwidth_usage                 │  │
│  │  - 历史信息: blocked_count, allowed_count, false_positive_rate        │  │
│  │  - 时间特征: time_of_day, day_of_week, is_peak_hour                   │  │
│  │                                                                        │  │
│  │  动作空间 (7种):                                                       │  │
│  │  0: ALLOW      - 允许流量                                              │  │
│  │  1: BLOCK      - 阻止流量                                              │  │
│  │  2: RATE_LIMIT - 限制速率                                              │  │
│  │  3: QUARANTINE - 隔离处理                                              │  │
│  │  4: ALERT      - 发送告警                                              │  │
│  │  5: LOG        - 仅记录日志                                            │  │
│  │  6: CHALLENGE  - 验证挑战                                              │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      RL智能体                                                │
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐          │
│  │       DQN        │  │    DoubleDQN     │  │       PPO        │          │
│  ├──────────────────┤  ├──────────────────┤  ├──────────────────┤          │
│  │ Q-Network:       │  │ 双网络结构:      │  │ Actor-Critic:    │          │
│  │ - FC(15→128)     │  │ - Online Net     │  │ - Policy Net     │          │
│  │ - FC(128→128)    │  │ - Target Net     │  │ - Value Net      │          │
│  │ - FC(128→7)      │  │ - 软更新         │  │ - GAE优势估计    │          │
│  │                  │  │                  │  │ - Clip目标       │          │
│  │ ε-greedy探索     │  │ 减少过估计       │  │ 熵正则化         │          │
│  └──────────────────┘  └──────────────────┘  └──────────────────┘          │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      RewardCalculator 奖励计算                               │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  奖励函数:                                                             │  │
│  │  - 正确阻止威胁: +10                                                   │  │
│  │  - 正确允许正常: +5                                                    │  │
│  │  - 误报 (False Positive): -8                                          │  │
│  │  - 漏报 (False Negative): -15                                         │  │
│  │  - 资源消耗惩罚: -0.1 * resource_usage                                │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘

核心类:

  • NetworkSecurityEnv: OpenAI Gym兼容环境
  • DQNAgent: 深度Q网络智能体
  • DoubleDQNAgent: 双DQN智能体
  • PPOAgent: PPO智能体
  • RewardCalculator: 奖励计算器

5. 统一检测管道

┌─────────────────────────────────────────────────────────────────────────────┐
│                         统一检测管道架构                                     │
└─────────────────────────────────────────────────────────────────────────────┘

                         原始网络数据
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      UnifiedPreprocessor 统一预处理                          │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │  数据格式转换:                                                         │  │
│  │  - raw → kitsune_format (115维)                                       │  │
│  │  - raw → lucid_format (流特征)                                        │  │
│  │  - raw → slips_format (行为特征)                                      │  │
│  │  - raw → ml_format (30维URL特征)                                      │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      级联检测模式 (Cascade Mode)                             │
│  ┌───────────────────────────────────────────────────────────────────────┐  │
│  │                                                                        │  │
│  │  Stage 1: Kitsune (快速异常检测)                                       │  │
│  │     │                                                                  │  │
│  │     ├── 正常 → 直接放行                                                │  │
│  │     └── 异常 → 进入Stage 2                                             │  │
│  │                    │                                                   │  │
│  │  Stage 2: LUCID (DDoS专项检测)                                         │  │
│  │     │                                                                  │  │
│  │     ├── DDoS → 阻止 + 告警                                             │  │
│  │     └── 非DDoS → 进入Stage 3                                           │  │
│  │                    │                                                   │  │
│  │  Stage 3: Slips (行为深度分析)                                         │  │
│  │     │                                                                  │  │
│  │     └── 综合判定 → RL Agent决策响应                                    │  │
│  │                                                                        │  │
│  └───────────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      检测结果                                                │
│  {                                                                           │
│    "is_threat": true,                                                        │
│    "threat_type": "ddos",                                                    │
│    "confidence": 0.95,                                                       │
│    "action": "block",                                                        │
│    "stages_triggered": ["kitsune", "lucid"],                                │
│    "details": { ... }                                                        │
│  }                                                                           │
└─────────────────────────────────────────────────────────────────────────────┘

核心类:

  • UnifiedPreprocessor: 统一数据预处理
  • ModelAdapter: 模型适配器
  • PipelineStage: 管道阶段
  • UnifiedDetector: 统一检测器

数据流程图

┌─────────────────────────────────────────────────────────────────────────────┐
│                              完整数据流                                      │
└─────────────────────────────────────────────────────────────────────────────┘

用户请求 (URL/流量数据)
         │
         ▼
┌────────────────────────────────────────────────────────────────────────────┐
│  API网关 (app.py)                                                           │
│  - 请求验证                                                                 │
│  - 路由分发                                                                 │
│  - 统计记录 (GlobalStats)                                                   │
└────────────────────────────────────────────────────────────────────────────┘
         │
         ├─────────────────────────────────────────────────────┐
         │                                                     │
         ▼                                                     ▼
┌──────────────────────────┐                    ┌──────────────────────────┐
│  URL特征预测             │                    │  流量检测                │
│  /predict_live           │                    │  /api/v1/firewall/analyze│
├──────────────────────────┤                    ├──────────────────────────┤
│  1. 特征提取 (30维)      │                    │  1. 统一预处理           │
│  2. 预处理器转换         │                    │  2. 级联检测             │
│  3. ML/DL模型预测        │                    │  3. RL响应决策           │
│  4. 返回结果             │                    │  4. 防火墙规则执行       │
└──────────────────────────┘                    └──────────────────────────┘
         │                                                     │
         └─────────────────────────┬───────────────────────────┘
                                   │
                                   ▼
┌────────────────────────────────────────────────────────────────────────────┐
│  统计记录                                                                   │
│  - TrafficLogger: 流量日志                                                  │
│  - StatsAggregator: 统计聚合                                                │
│  - GlobalStats: 全局计数                                                    │
└────────────────────────────────────────────────────────────────────────────┘
         │
         ▼
┌────────────────────────────────────────────────────────────────────────────┐
│  响应返回                                                                   │
│  {                                                                          │
│    "prediction": "危险/安全",                                               │
│    "confidence": 0.95,                                                      │
│    "threat_type": "phishing/ddos/port_scan/...",                           │
│    "action": "allow/block/rate_limit/..."                                  │
│  }                                                                          │
└────────────────────────────────────────────────────────────────────────────┘

API端点参考

系统端点

方法 端点 描述
GET /health 健康检查
GET /api/system-stats 系统统计 (预测次数、准确率)
POST /api/record-prediction 记录预测结果

预测端点

方法 端点 描述
POST /predict_live 实时威胁预测 (30特征)
POST /api/train 启动模型训练
GET /predict_on_test_data 测试集批量预测

统计端点 (/api/v1/stats/*)

方法 端点 描述
GET /api/v1/stats/overview 统计概览
GET /api/v1/stats/threats 威胁分布
GET /api/v1/stats/actions 动作分布
GET /api/v1/stats/sources TOP源IP
GET /api/v1/stats/timeline 时间线统计
GET /api/v1/stats/recent-threats 最近威胁
POST /api/v1/stats/logs 创建日志
POST /api/v1/stats/demo-data 生成演示数据

防火墙端点 (/api/v1/firewall/*)

方法 端点 描述
POST /api/v1/firewall/analyze 流量分析
GET /api/v1/firewall/rules 获取规则列表
POST /api/v1/firewall/rules 创建规则
DELETE /api/v1/firewall/rules/{id} 删除规则

部署架构

Docker部署

# 构建镜像
docker build -t network-security:latest .

# 运行容器
docker run -d -p 8000:8000 network-security:latest

# 使用Docker Compose
docker-compose up -d

Kubernetes部署

# 应用配置
kubectl apply -f deploy/kubernetes/

# 查看状态
kubectl get pods -l app=network-security
kubectl get svc network-security

架构图

┌─────────────────────────────────────────────────────────────────────────────┐
│                              Kubernetes集群                                  │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                         Ingress Controller                           │    │
│  │                    (nginx-ingress / traefik)                         │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                                    │                                         │
│                                    ▼                                         │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                         Service (ClusterIP)                          │    │
│  │                    network-security:8000                             │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                                    │                                         │
│           ┌────────────────────────┼────────────────────────┐               │
│           │                        │                        │               │
│           ▼                        ▼                        ▼               │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐         │
│  │     Pod 1       │    │     Pod 2       │    │     Pod 3       │         │
│  │ network-security│    │ network-security│    │ network-security│         │
│  │   (replica)     │    │   (replica)     │    │   (replica)     │         │
│  └─────────────────┘    └─────────────────┘    └─────────────────┘         │
│                                                                              │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                         PersistentVolume                             │    │
│  │                    (models/, logs/, data/)                           │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
│                                                                              │
└─────────────────────────────────────────────────────────────────────────────┘

快速启动

# 1. 安装依赖
pip install -r requirements.txt

# 2. 启动服务
python app.py

# 3. 访问Web界面
# http://localhost:8000

# 4. 运行算法演示
python demo_algorithms.py

# 5. 运行测试
pytest tests/ -v

版本信息

  • 版本: 2.0.0
  • 更新日期: 2024-12
  • 测试覆盖: 298 passed, 2 skipped
  • 作者: Network Security Team
  • 许可证: MIT