ns7523/Network-attacks-detection
GitHub: ns7523/Network-attacks-detection
基于机器学习的网络攻击检测系统,通过混合特征提取将网络流量分类为 DDoS、Probe、R2L、U2R 和正常等多种安全状态。
Stars: 2 | Forks: 0
DDoS 流量洪泛 |
Probe 侦察 |
R2L 远程访问 |
U2R 权限提升 |
Normal 良性流量 |
## 01 · 概述
|
### 基于 ML 的网络入侵分类
本仓库实现了一个基于机器学习的网络攻击检测系统,并带有 Flask 推理接口。它将流量分类为多种安全状态,包括 DDoS、Probe、R2L、U2R 和 Normal。
该项目旨在作为一个轻量级的研究工程原型,用于基于特征的网络威胁分析和基于浏览器的预测。
|
```
┌──────────────────────────────┐
│ NETWORK DETECTION CONSOLE │
├──────────────────────────────┤
│ Input Traffic Features │
│ Process Feature Vector │
│ Model ML Classifier │
│ Output Attack Class │
│ UI Flask App │
└──────────────────────────────┘
```
|
## 02 · 检测流水线

## 03 · 系统架构
```
flowchart TD
A[Network Traffic Features] --> B[Input Form]
B --> C[Flask Application]
C --> D[Feature Vector Builder]
D --> E[Serialized ML Model]
E --> F{Prediction}
F --> G[DDoS]
F --> H[Probe]
F --> I[R2L]
F --> J[U2R]
F --> K[Normal]
C --> L[SQLite Auth Layer]
```
## 04 · 核心功能
| 功能 | 用途 |
|---|---|
| 多分类分类 | 检测 DDoS、Probe、R2L、U2R 和 Normal 流量状态。 |
| Flask 推理 UI | 提供基于浏览器的流量特征预测界面。 |
| 序列化模型运行时 | 加载已训练的模型 artifact 进行推理。 |
| 身份验证流程 | 包含基于 SQLite 的注册/登录工作流。 |
| 研究工作流 | 支持 ML 实验、特征分析和分类验证。 |
| 聚焦安全的输出 | 将数值化的流量输入转换为人类可读的威胁状态。 |
## 05 · 威胁分析流程
```
flowchart LR
A[Traffic Record] --> B[Feature Extraction]
B --> C[Model Inference]
C --> D[Threat Class]
D --> E[Security Interpretation]
```
| 类别 | 含义 |
|---|---|
| DDoS | 旨在破坏服务可用性的大流量行为。 |
| Probe | 用于发现网络弱点的侦察式行为。 |
| R2L | 远程到本地 (Remote-to-local) 的访问尝试模式。 |
| U2R | 用户到 Root (User-to-root) 的权限提升模式。 |
| Normal | 良性流量行为。 |
## 06 · ML 工作流
```
flowchart TD
A[Raw Dataset] --> B[Preprocessing]
B --> C[Encoding]
C --> D[Feature Selection]
D --> E[Model Training]
E --> F[Evaluation]
F --> G[Exported Model]
G --> H[Flask Prediction Runtime]
```
| 阶段 | 输出 |
|---|---|
| 预处理 | 清洗和标准化的网络特征。 |
| 特征提取 | 可用于检测的数值向量。 |
| 训练 | 用于攻击类别预测的监督学习模型。 |
| 评估 | 准确率、精确率、召回率、F1分数、混淆矩阵。 |
| 推理 | 通过 Flask 进行基于浏览器的预测。 |
## 07 · 安装说明
```
git clone https://github.com/ns7523/Network-attacks-detection.git
cd Network-attacks-detection
python -m venv .venv
source .venv/bin/activate
pip install flask pandas numpy scikit-learn joblib matplotlib seaborn
```
## 08 · 使用说明
运行 Flask 应用程序:
```
python app.py
```
打开本地接口:
```
http://127.0.0.1:5000
```
通过预测表单提交所需的网络流量特征值。模型将返回流量分类结果。
## 09 · 项目结构
```
.
├── assets/
│ └── brand/
│ ├── hero.svg
│ └── pipeline.svg
├── app.py
├── model.sav
├── signup.db
├── templates/
├── static/
└── README.md
```
建议的生产环境结构:
```
docs/ · src/ · models/ · data/ · results/ · notebooks/ · assets/screenshots/ · requirements.txt
```
## 10 · 视觉资源
|
### 预测界面
`assets/screenshots/prediction-form.png`
流量特征输入界面。
|
### 分类结果
`assets/screenshots/classification-result.png`
显示预测出的网络状态的输出视图。
|
|
### 指标视图
`assets/screenshots/model-metrics.png`
混淆矩阵、精确率、召回率和 F1 分数。
|
### 系统架构
`assets/screenshots/system-architecture.png`
检测系统的清晰视觉映射图。
|
## 11 · 安全提示
- 将凭据和邮件配置迁移到环境变量中。
- 在任何类似生产环境的部署之前,对存储的密码进行哈希处理。
- 在模型推理之前验证表单输入。
- 通过 `requirements.txt` 添加依赖固定。
## 12 · 未来改进
- [ ] 添加可复现的训练 notebook。
- [ ] 添加 `requirements.txt`。
- [ ] 将 ML 和 Flask 代码移至 `src/`。
- [ ] 添加混淆矩阵和分类报告。
- [ ] 添加 Docker 支持以实现隔离的运行时。
- [ ] 在 `assets/screenshots/` 下添加截图。
- [ ] 添加正式的开源许可证。
标签:Apex, Flask, Python, Web报告查看器, 后端开发, 插件系统, 无后门, 机器学习, 流量分类, 网络安全, 逆向工具, 隐私保护