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界面, 交互式仪表盘, 入侵检测系统, 协议分布可视化, 安全数据湖, 异常检测, 数据导出, 数据库清理, 数据归一化, 日志管理, 机器学习, 标志分布可视化, 模型管理, 流量趋势分析, 特征提取, 维护工具, 网络安全, 网络接口配置, 网络流量分析, 逆向工具, 邮件告警, 随机森林, 隐私保护