本项目是一个基于机器学习、深度学习和开源安全算法的网络安全威胁检测系统,能够识别钓鱼网站、恶意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/ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
论文: 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: 主检测器
论文: 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检测器
参考: 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: 综合检测器
参考: 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: 奖励计算器
┌─────────────────────────────────────────────────────────────────────────────┐
│ 统一检测管道架构 │
└─────────────────────────────────────────────────────────────────────────────┘
原始网络数据
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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/..." │
│ } │
└────────────────────────────────────────────────────────────────────────────┘
| 方法 | 端点 | 描述 |
|---|---|---|
| GET | /health |
健康检查 |
| GET | /api/system-stats |
系统统计 (预测次数、准确率) |
| POST | /api/record-prediction |
记录预测结果 |
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | /predict_live |
实时威胁预测 (30特征) |
| POST | /api/train |
启动模型训练 |
| GET | /predict_on_test_data |
测试集批量预测 |
| 方法 | 端点 | 描述 |
|---|---|---|
| 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 |
生成演示数据 |
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | /api/v1/firewall/analyze |
流量分析 |
| GET | /api/v1/firewall/rules |
获取规则列表 |
| POST | /api/v1/firewall/rules |
创建规则 |
| DELETE | /api/v1/firewall/rules/{id} |
删除规则 |
# 构建镜像
docker build -t network-security:latest .
# 运行容器
docker run -d -p 8000:8000 network-security:latest
# 使用Docker Compose
docker-compose up -d# 应用配置
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