MuriloChianfa/isp-ddos-auto-detector
GitHub: MuriloChianfa/isp-ddos-auto-detector
基于真实ISP Transit网络NetFlow数据,系统评估四种无监督异常检测算法在高速环境下DDoS检测中的表现。
Stars: 3 | Forks: 0
高速网络中的无监督 DDoS 检测:
基于真实 Transit 提供商数据的评估
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
[](https://creativecommons.org/licenses/by/4.0/)
[](https://www.linux.org/)
[](https://docs.conda.io/)
[](https://www.tensorflow.org/)
[](https://scikit-learn.org/)
在过去的十年中,学术界对分布式拒绝服务攻击的检测进行了广泛的研究。尽管取得了一些进展,但近期的调查表明,由于高速环境的限制,在 Internet Transit Provider (ITP) 等环境中的检测仍然具有挑战性。本研究使用从运营中的 ITP 在确认发生 DDoS 攻击期间收集的三个数据集,评估了四种异常检测算法,即 Autoencoder、Isolation Forest、Local Outlier Factor 和 One Class Support Vector Machine。评估考虑了四个时间聚合窗口和三种特征选择配置,旨在分析算法在不同时间和特征选择设置下的预测能力。结果表明,Autoencoder 在使用最激进的特征选择配置和最短的时间聚合窗口时获得了最佳的检测结果。
## README 结构
1. [**标题与摘要**](#abstract):研究概述与目标
2. [**README 结构**](#agenda):文档组织说明
3. [**基本信息**](#basic-information):硬件与执行环境要求
4. [**申请徽章**](#badges-considered):评审申请的徽章声明
5. [**依赖项**](#dependencies):所需库和工具的完整列表
6. [**安全问题**](#security-concerns):潜在风险与安全操作规程
7. [**安装说明**](#installation):环境配置的分步指南
8. [**最小化测试**](#minimal-test):用于验证安装的简单命令
9. [**实验**](#experiments):复现论文中展示的主要结果
10. [**数据集**](#datasets):实验中使用的数据说明
11. [**致谢**](#acknowledgments):感谢合作机构
12. [**LICENSE**](#license):双重许可(代码采用 MIT / 数据集采用 CC BY 4.0)
### 仓库结构
项目文件和目录的组织结构:
```
isp-ddos-auto-detector/
├── config.py # Configuration and dataset definitions
├── main.py # CLI entry point
├── environment.yml # Conda environment specification
├── framework/ # Core framework modules
│ ├── pipeline.py # Main analysis pipeline
│ ├── models/ # Anomaly detection models
│ │ ├── isolation_forest.py
│ │ ├── one_class_svm.py
│ │ ├── local_outlier_factor.py
│ │ └── autoencoder.py
│ ├── features.py # Feature engineering
│ ├── evaluation.py # Model evaluation metrics
│ ├── optimization.py # Hyperparameter tuning
│ ├── versioning.py # Run versioning and management
│ ├── comparison.py # Run comparison utilities
│ ├── visualization/ # Plotting utilities
│ └── ...
├── datasets/ # NetFlow datasets
│ ├── itp-downstream-http-flood/
│ ├── itp-multivector-udp-100gbps-peak/
│ └── itp-synack-customer-outage/
└── results/ # Evaluation results and plots
├── summary/
├── cross_evaluation/
├── versions/ # Versioned runs for comparison
├── comparisons/ # Comparison reports
└── runs_index.json # Index of all saved runs
```
## 申请徽章
本制品申请:**Available**、**Functional**、**Sustainable** 和 **Reproducible** 徽章。
| 徽章 | 理由 |
|-------|---------------|
| **Available** | 完整的源代码、数据集和结果均在此仓库中公开提供 |
| **Functional** | 可完全执行,附带详细的设置、验证测试和固定版本的依赖项 |
| **Sustainable** | 模块化架构,组件清晰并带有内联文档 |
| **Reproducible** | 提供自动化脚本和详细说明以复现论文的主要结果 |
## 基本信息
### 硬件要求
实验在具有以下规格的机器上执行:
- **处理器**:Dual Intel Xeon E5-2683 v4 @ 2.10 GHz
- **内存 (RAM)**:128 GB DDR4 2133MHz RDIMM ECC
- **显卡 (GPU)**:NVIDIA GeForce GTX 1050 Ti,配备 4 GB VRAM
- **存储**:数据集至少需要 20 GB 的可用空间
- **操作系统**:Linux Debian 12 Kernel 6.1.0-26-amd64
### 软件要求
- **Python**:最新可用版本 3.12.2
- **Conda**:Miniconda 或 Anaconda(用于环境管理)
- **Git 和 Git LFS**:用于克隆仓库并下载衍生数据集
## 依赖项
该框架具有定义明确的依赖项,通过 Conda 进行管理。所有依赖项都会通过 `environment.yml` 文件自动安装,该文件包含:
- 固定版本的包以确保可复现性
- Conda 频道配置(pytorch、nvidia、conda-forge、defaults)
- 针对 Conda 中不可用包的额外 pip 依赖项
## 安全问题
### 潜在风险
1. **计算资源消耗**:
- 模型训练在超参数优化期间会消耗大量 RAM
- 批量执行可能需要数小时(所有 144 个完整场景最多需要 96 小时)
- 建议在执行期间使用 `htop`/`nvidia-smi` 监控 CPU/GPU/RAM 使用情况
2. **大文件下载**:
- `git lfs pull` 命令将下载总容量可能达数 GB 的衍生数据集
- 请确保拥有稳定的连接和足够的磁盘空间
- 在带宽受限的环境中,请考虑仅下载特定的数据集
### 注意事项
- 该框架**绝不**修改项目目录之外的系统文件
- 该框架**绝不**收集或将数据传输到外部服务器
- 所有结果和训练好的模型均保存在本地的 `results/` 和 `cache/` 中
## 安装说明
### 第 1 步:安装 Git LFS
下载衍生数据集(大文件)需要使用 Git LFS。
```
# Ubuntu/Debian
sudo apt install git-lfs
git lfs install
# 验证安装
git lfs version
```
### 第 2 步:克隆仓库
```
git clone https://github.com/MuriloChianfa/isp-ddos-auto-detector.git
cd isp-ddos-auto-detector
```
### 第 3 步:下载衍生数据集
```
# 根据网络连接情况,此命令可能需要几分钟
git lfs pull
```
### 第 4 步:安装 Miniconda
请按照适用于您操作系统的官方安装指南进行操作:
[https://www.anaconda.com/docs/getting-started/miniconda/install/overview](https://www.anaconda.com/docs/getting-started/miniconda/install/overview)