Ate329/IDS
GitHub: Ate329/IDS
一个基于Django的入侵检测系统,利用机器学习实现网络流量异常检测与可视化监控。
Stars: 7 | Forks: 1
# 入侵检测系统 (IDS)
## **介绍**
本项目是一个基于 Django 的**入侵检测系统 (IDS)**,用于监控、分析和检测网络流量中的异常。它使用机器学习进行异常检测,并提供 Web 界面用于实时监控、配置和分析。
IDS 利用 **[NSL-KDD 特征提取器](https://github.com/Ate329/NSL-KDD-feature-extractor)** 从实时网络流量中提取与 NSL-KDD 数据集兼容的特征。该特征提取器已包含在本项目中,无需单独下载。
用于训练机器学习模型的数据集是 **[NSL-KDD 数据集](https://www.kaggle.com/datasets/hassan06/nslkdd/data)**。
**当前 Web 界面无法正常工作,任何能够修复的人都可以尝试提交 PR。我现在将尝试开发一个简单的 CLI**
## **功能**
1. **实时流量监控**
- 使用 `scapy` 捕获实时网络流量。
- 使用集成的 [NSL-KDD 特征提取器](https://github.com/Ate329/NSL-KDD-feature-extractor) 提取详细的流量特征。
2. **机器学习集成**
- 使用基于 NSL-KDD 数据集预训练的随机森林模型。
- 使用预训练的缩放器对特征进行归一化。
3. **基于 Web 的界面**
- 交互式仪表板,显示总流量、正常流量和异常流量的指标。
- 协议和标志分布的可视化,以及 24 小时流量趋势。
4. **可配置设置**
- 选择网络接口。
- 启用/禁用内部流量检测。
- 设置异常邮件告警。
5. **日志与数据导出**
- 查看并下载流量日志。
- 将网络流量数据导出为 CSV 文件以便离线分析。
6. **维护工具**
- 清除日志、数据库记录和流量数据。
- 管理缩放器和机器学习模型文件。
## **工作原理**
### **工作流程图**
```
+------------------+
| Network Traffic|
+------------------+
|
v
+-------------------------------+
| Packet Capturing |
| (Using Scapy Framework) |
+-------------------------------+
|
v
+----------------------------------------+
| Feature Extraction |
| (via Integrated NSL-KDD Feature Extractor) |
+----------------------------------------+
|
v
+----------------------------------------+
| Feature Scaling and Alignment |
| (Using Pre-trained Scaler and Feature |
| Names) |
+----------------------------------------+
|
v
+----------------------------------------+
| Machine Learning Model |
| (NSL-KDD Random Forest Classifier) |
+----------------------------------------+
| |
Normal Traffic Anomalous Traffic
| |
+---------------+ +------------------+
| Logs to CSV | | Raise Alert |
| (traffic_data)| | (Email Notification|
+---------------+ +------------------+
|
v
+----------------------------------------+
| Web Interface (Django Application) |
| - Dashboard: Real-time Visualization |
| - Logs: View Detailed Logs |
| - Traffic: Analyze Captured Data |
| - Settings: Configure IDS |
+----------------------------------------+
```
## **安装**
### **前提条件**
- **Python 3.11** 或更高版本
- **Django 框架**
- **Scapy** 用于数据包捕获
- **Joblib** 用于模型和缩放器管理
- **Pandas** 和 **NumPy** 用于数据处理
### **安装**
下载 setup_and_run.py 并运行该文件
```
python setup_and_run.py
```
### **手动安装(不推荐)**
1. 克隆仓库:
git clone https://github.com/Ate329/IDS.git
cd IDS
2. 安装依赖:
pip install -r requirements.txt
3. 迁移数据库:
python ids_project/manage.py migrate
4. 启动开发服务器:
python ids_project/manage.py runserver
5. 在浏览器中访问应用:
http://127.0.0.1:8000
## **使用**
### **Web 应用功能**
1. **仪表板**
- 显示总流量、正常流量和异常流量的实时指标。
- 包含协议和标志分布的图表,以及 24 小时流量摘要。
2. **流量日志**
- 查看网络活动日志。
- 下载流量数据为 CSV 文件以便离线分析。
3. **设置**
- 选择用于流量捕获的网络接口。
- 启用或禁用内部流量检测。
- 配置邮件设置以接收告警。
4. **维护工具**
- 清除日志、流量数据或数据库记录。
- 重置或更新预训练的缩放器和机器学习模型。
## **数据集与特征提取**
1. **数据集**
- 机器学习模型在 **[NSL-KDD 数据集](https://www.kaggle.com/datasets/hassan06/nslkdd/data)** 上训练,这是一个广泛用于网络入侵检测研究的经典数据集。
2. **特征提取**
- 集成的 **[NSL-KDD 特征提取器](https://github.com/Ate329/NSL-KDD-feature-extractor)** 直接从实时网络流量中提取特征,确保与基于 NSL-KDD 数据集训练的模型兼容。
## **开发说明**
- 项目集成了 **NSL-KDD 特征提取器** 用于特征提取,该提取器已包含在本仓库中。
- 替换或更新 `models/NSL-KDD-RF-model.joblib` 中的机器学习模型以适应不同的数据集或需求。
## **贡献**
如果您希望扩展功能或报告错误,请随时提交 Pull Request 或打开 Issue。
## **许可证**
本项目采用 MIT 许可证授权。详细信息请参阅 [LICENSE](LICENSE) 文件。
标签:Apex, Django, NSL-KDD, OISF, Scapy, SEO: 入侵检测, SEO: 异常检测系统, SEO: 网络安全监控, Web界面, 交互式仪表盘, 入侵检测系统, 协议分布可视化, 安全数据湖, 异常检测, 数据导出, 数据库清理, 数据归一化, 日志管理, 机器学习, 标志分布可视化, 模型管理, 流量趋势分析, 特征提取, 维护工具, 网络安全, 网络接口配置, 网络流量分析, 逆向工具, 邮件告警, 随机森林, 隐私保护