Vivekkhandekar7483/network_attck_detection
GitHub: Vivekkhandekar7483/network_attck_detection
NetGuard AI 是一个基于 Random Forest 机器学习模型的实时 DDoS 攻击检测与监控框架,通过对网络流量特征的自动分析来识别异常流量并触发分级告警。
Stars: 0 | Forks: 0
# 🛡️ NetGuard AI — 基于 ML 的实时 DDoS 检测框架
[](https://python.org)
[](https://scikit-learn.org)
[](https://flask.palletsprojects.com)
[](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, 无后门, 机器学习, 网络安全, 逆向工具, 随机森林, 隐私保护