Vivekkhandekar7483/network_attck_detection

GitHub: Vivekkhandekar7483/network_attck_detection

NetGuard AI 是一个基于 Random Forest 机器学习模型的实时 DDoS 攻击检测与监控框架,通过对网络流量特征的自动分析来识别异常流量并触发分级告警。

Stars: 0 | Forks: 0

# 🛡️ NetGuard AI — 基于 ML 的实时 DDoS 检测框架 [![Python](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python)](https://python.org) [![Scikit-Learn](https://img.shields.io/badge/Scikit--Learn-1.3-orange?logo=scikit-learn)](https://scikit-learn.org) [![Flask](https://img.shields.io/badge/Flask-3.0-black?logo=flask)](https://flask.palletsprojects.com) [![License: MIT](https://img.shields.io/badge/License-MIT-green)](LICENSE) ## 📌 目录 1. [项目概述](#-project-overview) 2. [系统架构](#-system-architecture) 3. [数据集](#-dataset) 4. [ML 模型](#-ml-models) 5. [项目结构](#-project-structure) 6. [快速开始](#-quick-start) 7. [运行项目](#-running-the-project) 8. [仪表板功能](#-dashboard-features) 9. [性能指标](#-performance-metrics) 10. [分阶段指南](#-phase-wise-guide) 11. [DDoS 仿真 (实验室)](#-ddos-simulation-lab) 12. [答辩问答准备](#-viva-qa-preparation) ## 🎯 项目概述 ### 问题描述 设计并开发一个基于机器学习的框架,用于持续监控网络流量, 检测异常的流量激增,并实时识别潜在的 DoS/DDoS 攻击。 ### 系统功能 | 功能 | 描述 | |---|---| | 🔍 **流量分析** | 分析每个数据包的 57 个网络流特征 | | 🤖 **ML 分类** | Random Forest 将流量分类为正常或攻击 | | ⚡ **实时检测** | 在几毫秒内监控并分类每个数据包 | | 🚨 **智能警报** | 四种严重级别:INFO、WARNING、DANGER、CRITICAL | | 📊 **实时仪表板** | 带有实时图表的精美 Web 仪表板 | | 📝 **日志记录** | 完整的 JSON 和文本格式审计追踪 | ### 实际应用场景 - ISP 流量过滤 - 云基础设施保护 (AWS Shield, Cloudflare) - 企业网络安全运营中心 (SOC) - 大学 / 校园网络安全 - 游戏服务器 DDoS 保护 ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ NETGUARD AI — ARCHITECTURE │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ INTERNET / NETWORK │ │ │ │ │ ▼ │ │ ┌─────────────┐ ┌───────────────────────────────────────┐ │ │ │ Network │────▶│ MONITOR MODULE │ │ │ │ Interface │ │ (Scapy / Simulated Packet Stream) │ │ │ └─────────────┘ └──────────────┬────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ Feature Extraction │ │ │ │ (57 flow-level features)│ │ │ └────────────┬────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ StandardScaler │ │ │ │ (Feature Normalization) │ │ │ └────────────┬────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ Random Forest Model │ │ │ │ (Trained Classifier) │ │ │ └────────────┬────────────┘ │ │ │ │ │ ┌────────────────┴────────────────┐ │ │ ▼ ▼ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ ALERT ENGINE │ │ FLASK DASHBOARD │ │ │ │ (4 Severity │ │ (Real-time Web │ │ │ │ Levels) │ │ Charts & Logs) │ │ │ └──────────────────┘ └──────────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ logs/alerts.log │ │ SSE Stream │ │ │ │ logs/alerts.json│ │ (EventSource) │ │ │ └──────────────────┘ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 数据流图 (DFD) ``` [Packets] → [Feature Extraction] → [Scaler] → [ML Model] │ ┌─────────┴──────────┐ │ │ [NORMAL=0] [ATTACK=1] │ │ [Log Normal] [Raise Alert] │ ┌─────────┴─────────┐ │ │ [File Log] [Dashboard] ``` ## 📊 数据集 ### 推荐数据集:CIC-DDoS2019 | 属性 | 详情 | |---|---| | **来源** | Canadian Institute for Cybersecurity | | **下载** | https://www.unb.ca/cic/datasets/ddos-2019.html | | **大小** | ~7 GB (多个 CSV) | | **特征** | 88 个网络流特征 | | **标签** | 12 种攻击类型 + BENIGN | | **最适用于** | 现代 DDoS 攻击检测 | ### 备选数据集 | 数据集 | 特征 | 样本数 | 难度 | |---|---|---|---| | **CICIDS2017** | 80 个特征 | ~2.8M | ⭐⭐ 中等 | | **NSL-KDD** | 41 个特征 | ~125K | ⭐ 简单 | | **UNSW-NB15** | 49 个特征 | ~2.5M | ⭐⭐ 中等 | | **CIC-DDoS2019** | 88 个特征 | ~50M | ⭐⭐⭐ 困难 | ### 使用内置的合成数据集 如果您没有互联网或无法下载真实数据集,项目会自动生成 12,000 个真实的合成样本(8,000 个正常 + 4,000 个攻击)。只需运行 `train.py`。 ### 使用真实数据集 (CIC) 1. 下载任何 CIC CSV 文件(例如,`DrDoS_DNS.csv`) 2. 将其放在 `dataset/` 文件夹中 3. 将其重命名为 `network_traffic.csv` 或者更新 `preprocess.py` 中的 `DATASET_FILE` 4. 运行 `python train.py` ## 🤖 ML 模型 ### 模型对比表 | 模型 | 准确率 | 精确率 | 召回率 | F1 分数 | 速度 | 是否推荐 | |---|---|---|---|---|---|---| | **Random Forest** | **99.2%** | **99.1%** | **99.3%** | **99.2%** | 快 | ✅ **是** | | XGBoost | 99.0% | 98.9% | 99.1% | 99.0% | 中等 | ✅ | | Decision Tree | 98.1% | 97.9% | 98.3% | 98.1% | 非常快 | ⚠️ 容易过拟合 | | KNN | 97.5% | 97.2% | 97.8% | 97.5% | 慢 | ❌ | | Logistic Regression | 94.3% | 93.8% | 94.7% | 94.2% | 非常快 | ❌ 仅限线性 | | SVM | 96.8% | 96.5% | 97.1% | 96.8% | 非常慢 | ❌ | ## 📁 项目结构 ``` network_chekar/ │ ├── 📂 dataset/ ← Place CIC CSV files here │ └── network_traffic.csv ← Generated automatically if missing │ ├── 📂 models/ ← Saved model artifacts │ ├── ddos_model.pkl ← Trained Random Forest model │ ├── scaler.pkl ← StandardScaler │ ├── feature_list.pkl ← Feature column names │ └── model_meta.pkl ← Accuracy, F1, name │ ├── 📂 reports/ ← Evaluation plots & reports │ ├── confusion_matrix.png │ ├── roc_curve.png │ ├── model_comparison.png │ ├── feature_importance.png │ └── evaluation_report.json │ ├── 📂 logs/ ← Alert logs │ ├── alerts.log ← Human-readable log │ └── alerts.jsonl ← Machine-readable JSON log │ ├── 📂 templates/ ← Flask HTML templates │ └── index.html ← Dashboard UI │ ├── 📂 static/ ← CSS / JS (optional) │ ├── preprocess.py ← Data loading, cleaning, scaling ├── train.py ← Model training & evaluation ├── monitor.py ← Real-time packet monitoring ├── alert.py ← Alert engine ├── evaluate.py ← Deep performance evaluation ├── simulate_ddos.py ← Safe DDoS simulator (lab) ├── app.py ← Flask dashboard server ├── requirements.txt ← Python dependencies └── README.md ← This file ``` ## 🚀 快速开始 ### 第一步:安装 Python 3.9+ 从 https://python.org/downloads/ 下载 ### 第二步:克隆 / 设置项目 ``` cd network_chekar ``` ### 第三步:创建虚拟环境 ``` python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # Linux/Mac ``` ### 第四步:安装依赖 ``` pip install -r requirements.txt ``` ### 第五步:训练模型 ``` python train.py ``` ### 第六步:启动仪表板 ``` python app.py ``` ### 第七步:打开浏览器 导航至:**http://localhost:5000** ## 🖥️ 运行项目 ### 命令参考 | 命令 | 用途 | |---|---| | `python preprocess.py` | 生成合成数据集 + 预处理 | | `python train.py` | 训练所有模型,保存最佳模型,生成图表 | | `python evaluate.py` | 深度性能评估 + 所有图表 | | `python monitor.py` | 启动仅限 CLI 的实时监控器 | | `python monitor.py --mode live --interface Wi-Fi` | 实时数据包捕获(需要管理员权限) | | `python app.py` | 启动 Web 仪表板(自动启动监控器) | | `python simulate_ddos.py --attack syn` | 模拟 SYN flood | | `python simulate_ddos.py --attack multi` | 多向量攻击演示 | ### 监控器 CLI 选项 ``` python monitor.py --mode simulate --attack-prob 0.35 --pps 5 python monitor.py --mode live --interface "Wi-Fi" python monitor.py --mode live --interface "Ethernet" ``` ## 📊 仪表板功能 | 功能 | 描述 | |---|---| | **实时流量图表** | 折线图实时显示正常与攻击数据包的速率 | | **流量分类环形图** | 正常与攻击的百分比细分 | | **威胁级别仪表** | 颜色编码的威胁指示器 (LOW/MODERATE/HIGH/CRITICAL) | | **实时数据包信息流** | 表格显示最近的 15 个数据包及其 IP、端口、标签、置信度 | | **警报日志** | 实时警报历史记录,包含严重程度、源 IP、类型 | | **ML 模型信息** | 准确率、F1 分数、特征数量、算法名称 | | **评估报告** | 指向混淆矩阵、ROC、对比图表的链接 | ## 📈 性能指标 ### 每个指标的含义(通俗解释) ``` Let's say 1000 packets → 700 Normal + 300 Attack Model Predictions: TP (True Positive) = 295 → Correctly caught attacks TN (True Negative) = 695 → Correctly identified normal FP (False Positive) = 5 → Normal labeled as attack (false alarm) FN (False Negative) = 5 → Attacks that slipped through Accuracy = (295+695)/1000 = 99.0% ← Overall correctness Precision = 295/(295+5) = 98.3% ← Of flagged attacks, how many real? Recall = 295/(295+5) = 98.3% ← Of real attacks, how many caught? F1 Score = 2×(P×R)/(P+R) = 98.3% ← Balance of Precision & Recall ``` ### 混淆矩阵解读 ``` Predicted Normal Predicted Attack Actual Normal TN (Good ✅) FP (False Alarm ⚠️) Actual Attack FN (Missed! ❌) TP (Caught! ✅) ``` ## 📋 分阶段指南 ### 第一阶段:分析 ✅ - 问题:服务器在 DDoS 攻击下崩溃。ML 能检测出人类忽略的模式。 - 实际应用:Cloudflare、AWS Shield、Akamai 都使用基于 ML 的检测。 ### 第二阶段:设计 ✅ - 系统架构(见上文) - 组件:数据包捕获 → 特征提取 → ML 模型 → 警报/仪表板 ### 第三阶段:数据集 ✅ - 主要:CIC-DDoS2019 - 备选:内置合成生成器(自动运行) ### 第四阶段:ML 模型 ✅ - 已训练:Random Forest、Decision Tree、KNN、Logistic Regression、XGBoost - 最佳:Random Forest(准确率 99%+) ### 第五阶段:实施 ✅ - `preprocess.py` + `train.py` + `monitor.py` + `alert.py` + `app.py` ### 第六阶段:执行 ✅ - 见上文的快速开始部分 ### 第七阶段:评估 ✅ - 运行 `python evaluate.py` — 生成所有图表和 JSON 报告 ## 🧪 DDoS 仿真(实验环境) ``` # SYN Flood 模拟 python simulate_ddos.py --attack syn --count 500 # UDP Flood 模拟 python simulate_ddos.py --attack udp --count 300 # HTTP Flood(针对端口 5000 上的 dashboard) python simulate_ddos.py --attack http --port 5000 # Multi-vector(最适合演示) python simulate_ddos.py --attack multi ``` **大学演示步骤:** 1. 启动 `python app.py` → 打开仪表板 2. 展示正常流量(绿线) 3. 在另一个终端中运行 `python simulate_ddos.py --attack syn` 4. 观察红色的尖峰和警报实时出现! ## 🎤 答辩问答准备 **问:DoS 和 DDoS 有什么区别?** **问:为什么选择 Random Forest 而不是深度学习?** **问:哪些特征对检测最重要?** **问:您的系统如何处理零日攻击?** **问:什么是误报率(FPR),为什么它很重要?** **问:这与传统的 Firewall/IDS 有何不同?** **问:您使用了哪些数据集?** **问:您的模型准确率是多少?** ## 👨‍💻 团队 | 角色 | 职责 | |---|---| | **ML 工程师** | 模型训练、特征工程、评估 | | **后端开发** | Flask API、SSE 流、监控引擎 | | **前端开发** | 仪表板 UI、实时图表 | | **网络专家** | 数据包分析、攻击仿真、协议专长 | ## 📚 参考文献 1. CIC-DDoS2019 数据集 — https://www.unb.ca/cic/datasets/ddos-2019.html 2. Scikit-Learn 文档 — https://scikit-learn.org 3. RFC 4987 — TCP SYN Flooding Attacks and Common Mitigations 4. Akamai DDoS Attack Report 2023 5. "Survey of DDoS Detection Techniques" — IEEE Communications Surveys ## 📄 许可证 MIT 许可证 — 免费用于教育目的。 *计算机网络项目 — CSE (AI/ML) | 2024-25 学年* # network_attck_detection
标签:Apex, DDoS检测, Flask, Python, 无后门, 机器学习, 网络安全, 逆向工具, 随机森林, 隐私保护