indrasena001/Data-Engineering-Anomaly-Analysis-and-Detection-
GitHub: indrasena001/Data-Engineering-Anomaly-Analysis-and-Detection-
基于 CICIDS2017 数据集构建的端到端网络入侵检测数据管线,集成 ETL、机器学习异常检测与实时可视化 dashboard。
Stars: 0 | Forks: 0
# 🛡️ NetSentinel — 网络入侵与系统日志异常检测器
一个完整的**数据工程 pipeline**,通过 ETL、基于 ML 的异常检测和可视化来处理 CICIDS2017 入侵检测数据集——并将结果馈送至实时网络安全 dashboard。
## 📋 项目结构
```
network-anomaly-detector/
├── data/
│ ├── raw/ # Place CICIDS2017 CSVs here
│ ├── processed/ # Cleaned & transformed data
│ └── results/ # ML outputs & dashboard JSON
├── src/
│ ├── config.py # Centralized configuration
│ ├── data_ingestion.py # Load & merge raw CSVs
│ ├── data_cleaning.py # Handle nulls, inf, duplicates
│ ├── data_transformation.py # Feature engineering & scaling
│ ├── anomaly_detection.py # Isolation Forest + Random Forest
│ ├── analysis.py # Statistical analysis
│ ├── visualization.py # Chart generation (8 PNGs)
│ └── export_dashboard.py # JSON export for web dashboard
├── dashboard/ # Web-based real-time dashboard
│ ├── index.html
│ ├── style.css
│ └── app.js
├── output/charts/ # Generated visualization PNGs
├── main.py # Pipeline orchestrator
├── requirements.txt
└── README.md
```
## 🚀 快速开始
### 1. 安装依赖项
```
pip install -r requirements.txt
```
### 2. 下载 CICIDS2017 数据集
从以下来源之一下载 **MachineLearningCSV** 文件:
- **Kaggle**:
- **UNB CIC**:
将所有 `.csv` 文件放入 `data/raw/` 目录中。
### 3. 运行 Pipeline
```
python main.py
```
该 pipeline 将执行 7 个步骤:
1. **数据提取 (Data Ingestion)** — 加载并合并所有 CSV 文件(约 280 万行)
2. **数据清洗 (Data Cleaning)** — 移除 inf、NaN、重复项,修复类型
3. **特征工程 (Feature Engineering)** — 选择特征、缩放、划分训练/测试集
4. **异常检测 (Anomaly Detection)** — 训练 Isolation Forest + Random Forest
5. **统计分析 (Statistical Analysis)** — 计算摘要和分布
6. **可视化 (Visualization)** — 生成 8 张出版级质量的图表
7. **Dashboard 导出** — 创建 `dashboard_data.json`
### 4. 查看结果
在浏览器中打开 `dashboard/index.html`。如果 pipeline 数据可用,dashboard 将自动加载真实的分析结果。
## 📊 数据集:CICIDS2017
| 属性 | 值 |
|----------|-------|
| 来源 | Canadian Institute for Cybersecurity |
| 记录 | 约 280 万条网络流 |
| 特征 | 78 个数值列 + 1 个标签列 |
| 攻击类型 | DoS, DDoS, Brute Force, Web Attack, PortScan, Botnet, Infiltration, Heartbleed |
| 格式 | CSV (MachineLearningCSV) |
## 🤖 ML 模型
### Isolation Forest (无监督)
- 无需标签即可检测统计异常值
- Contamination 参数已根据攻击比例进行调优
- 输出每个网络流的异常分数
### Random Forest Classifier (有监督)
- 针对所有攻击类型的多分类
- 使用平衡的 class weights 处理类别不平衡问题
- 提供 feature importance 排名
## 📈 生成的可视化
以下是 pipeline 生成的出版级质量的可视化图表,位于 `output/charts/` 目录中:
### 1. 分类与模型性能
| 攻击类型分布 | 混淆矩阵 |
|:---:|:---:|
|  |  |
| *网络流量类别分布(Benign vs. 攻击)* | *Random Forest 多分类混淆矩阵* |
| ROC 曲线 (One-vs-Rest) | Feature Importance |
|:---:|:---:|
|  |  |
| *多分类的 ROC 曲线* | *Random Forest 中排名前 20 的特征重要性* |
### 2. 异常分析与数据洞察
| Isolation Forest 异常分数 | 特征相关性热力图 |
|:---:|:---:|
|  |  |
| *每个流的异常分数分布* | *特征相关性矩阵热力图* |
| 严重程度分布 | 协议与攻击细分 |
|:---:|:---:|
|  |  |
| *攻击严重程度级别分布* | *按协议划分的攻击类别细分* |
## 🖥️ Web Dashboard
内置的 web dashboard 提供:
- 实时网络流量可视化
- 带有动态攻击弧线的全球威胁地图
- 带有严重程度过滤的实时系统日志信息流
- 活跃威胁表
- 协议和严重程度分布图
- 最常受攻击的端口
当 pipeline 结果存在时,dashboard 会将真实的 CICIDS2017 分析数据与模拟数据一同展示。
## ⚙️ 配置
所有设置都集中在 `src/config.py` 中:
- 文件路径
- 特征选择列表
- 攻击类别映射
- 模型超参数
- 训练/测试集划分比例
- 子采样阈值
## 📝 许可证
本项目使用由 University of New Brunswick 的 Canadian Institute for Cybersecurity 创建的 CICIDS2017 数据集。
标签:Apex, Python, 多模态安全, 异常检测, 数据可视化, 数据工程, 无后门, 机器学习, 网络安全, 逆向工具, 隐私保护