Mazen2004212/Holmes-IDS-Helwan
GitHub: Mazen2004212/Holmes-IDS-Helwan
HOLMES IDS 是一个结合特征规则与机器学习异常检测的混合入侵检测系统原型,提供可解释性、持续学习和实时流量分析等功能。
Stars: 0 | Forks: 0
# HOLMES IDS
**用于增强安全的混合在线学习模型**
HOLMES IDS 是一个混合入侵检测系统(Intrusion Detection System)毕业设计项目,它在一个 Web 应用程序中结合了基于特征的检测、基于异常的机器学习、可解释性、持续学习、仪表盘分析以及基于角色的访问控制。

## 项目范围
构建 HOLMES IDS 旨在探索一种实用的混合 IDS 工作流:
- 使用特征规则检测已知攻击。
- 使用训练好的机器学习模型检测行为异常。
- 分析上传的 CSV 流记录和 PCAP 文件。
- 在安装了数据包捕获驱动程序并具有相应权限时,监控实时流量。
- 使用 SHAP/LIME 风格的特征贡献视图解释异常警报。
- 通过打标签、重新训练、模型提升和回滚支持人机协同的持续学习。
- 为分析师提供针对警报、规则、分析、用户和重训练数据的仪表盘。
## 主要功能
| 领域 | HOLMES IDS 提供的功能 |
| --- | --- |
| 特征 IDS | 使用内置的默认规则对已知攻击模式进行基于规则的匹配。 |
| 异常 IDS | 使用训练好的模型、缩放器、标签编码器和特征顺序文件,进行基于流的异常预测。 |
| CSV 分析 | 对上传的 CSV 样本进行批量预测。 |
| PCAP 分析 | 对上传的数据包捕获文件进行特征检测,可选通过 `tshark` 支持 TLS 元数据。 |
| 实时捕获 | 接口选择、捕获启动/停止控制、特征检查、异常检查以及警报存储。 |
| 可解释性 | 针对已存储的异常警报特征提供警报解释视图。 |
| 持续学习 | 支持人工打标签、候选模型重训练、模型评估、模型提升和回滚。 |
| 数据分析 | 针对警报、日志、规则、用户和训练数据的查询构建器。 |
| 安全控制 | 身份验证、会话处理、支持 CSRF 防护的 API 流程以及基于角色的访问控制。 |
## 修正后的评估总结
学位论文及答辩材料使用了以下修正后的第 4 章数值:
| 指标 | 结果 |
| --- | ---: |
| Stacking Classifier 准确率 | 92.74% |
| Stacking Classifier 精确率 | 92.74% |
| Stacking Classifier 召回率 | 92.74% |
| Stacking Classifier F1分数 | 92.74% |
| 完整混合 pipeline 准确率 | 94.40% |
| 完整混合 pipeline 精确率 | 92.74% |
| 完整混合 pipeline 召回率 | 92.85% |
| 完整混合 pipeline F1分数 | 92.02% |
| 良性误报率 | 约 7.65% |
| 模拟分布外 (OOD) 检测 | 100 个样本中检测出 92 个 |
这些结果仅描述了本项目的评估设置,不应将其理解为可保证实现零日漏洞检测或具备生产环境部署条件。
## 架构概览
```
React + Vite Frontend
|
| /api/*
v
Flask Backend
|
+-- Authentication and RBAC
+-- Signature Detection Engine
+-- Anomaly Detection Engine
+-- Live Capture Service
+-- Explainability Module
+-- Continual Learning Module
+-- Analytics Query Engine
|
v
SQLite Database + Model Artifacts + Rule Files
```
## 仓库结构
```
Holmes-IDS-Helwan/
├── frontend/ React + Vite web interface
├── tests/ pytest test suite
├── Rules/ bundled default signature rules
├── Models/ trained models, scaler, encoders, feature order, and datasets
├── DB/ local SQLite database folder
├── uploads/ runtime upload folder
├── docs/screenshots/ README screenshots
├── UML/ original UML/design assets
├── UI.py Flask backend entry point
├── api_auth.py authentication API routes
├── api_routes.py main JSON API routes
├── auth.py users, roles, password hashing, access control
├── DB.py SQLite connection and table creation
├── signature_IDS.py signature detection engine
├── anomaly_IDS.py anomaly detection engine
├── live_capture.py live packet capture workflow
├── explainability.py alert explanation support
├── continual_learning.py relabeling, retraining, promotion, rollback
├── analytics.py analytics query builder
├── requirements.txt Python dependencies
├── start_backend.bat Windows backend launcher
└── start_frontend.bat Windows frontend launcher
```
## 环境要求
- 推荐使用 Python 3.10
- Node.js 18 或更高版本
- npm
- 在 Windows 上使用 Npcap,或在 Linux 上使用 libpcap,用于实时捕获
- 仅当需要 TLS 分析时才需安装 Wireshark/tshark
## 全新克隆快速入门
克隆仓库:
```
git clone https://github.com/Mazen2004212/Holmes-IDS-Helwan.git
cd Holmes-IDS-Helwan
```
创建并激活虚拟环境:
```
python -m venv .venv
.\.venv\Scripts\activate
```
如果 PowerShell 阻止了激活操作:
```
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
.\.venv\Scripts\activate
```
安装后端依赖:
```
python -m pip install --upgrade pip
pip install -r requirements.txt
```
启动后端:
```
python UI.py
```
后端运行地址:
```
http://127.0.0.1:8000
```
在第二个终端中启动前端:
```
cd frontend
npm install
npm run dev
```
前端配置地址:
```
http://127.0.0.1:5174
```
## 默认演示登录
```
username: admin
password: admin
```
默认账号仅供本地学术/演示使用。在进行任何实际部署或公开演示环境之前,请务必更改该账号。
## 常用工作流
| 工作流 | 路由 |
| --- | --- |
| 特征仪表盘 | `/` |
| 异常仪表盘 | `/anomaly` |
| CSV 异常检测 | `/csv` |
| PCAP 特征检测 | `/upload_pcap` |
| 实时捕获 | `/live` |
| 规则仪表盘 | `/rules` |
| 分析查询构建器 | `/analytics` |
| 持续学习 | `/retrain` |
| 用户管理 | `/admin` |
## 运行测试
激活 Python 环境后:
```
python -m pytest tests -v
```
## 实时捕获注意事项
实时数据包捕获取决于操作系统的驱动程序和权限。
在 Windows 上:
- 安装 Npcap。
- 安装后重启计算机。
- 以管理员身份运行终端、VS Code 或 PowerShell。
- 在应用程序内选择正确的网络接口。
在 Linux 上:
- 安装 libpcap。
- 以合适的数据包捕获权限运行,或在需要时使用 `sudo`。
## TLS 分析注意事项
与 TLS 相关的 PCAP 功能需要安装 Wireshark/tshark,并确保其可从系统的 `PATH` 环境变量中调用。
使用以下命令检查可用性:
```
tshark -v
```
## 故障排除
| 问题 | 解决方案 |
| --- | --- |
| 后端无法启动 | 激活 `.venv`,安装 `requirements.txt`,然后运行 `python UI.py`。 |
| 前端无法启动 | 在 `frontend/` 目录下运行 `npm install`,然后执行 `npm run dev`。 |
| 前端无法调用 API | 确保后端正在 `http://127.0.0.1:8000` 上运行。 |
| Windows 上实时捕获立即停止 | 安装 Npcap,重启 Windows,并以管理员身份运行终端。 |
| 未显示捕获接口 | 重新安装 Npcap,并根据需要启用 WinPcap API 兼容模式。 |
| TLS 分析失败 | 安装 Wireshark 并确认 `tshark -v` 命令可正常运行。 |
| 数据库缺失 | 启动一次后端。系统会在本地创建 `DB/IDS.db`。 |
## Git 卫生管理
本项目不应提交本地运行时文件,例如:
- `.venv/`
- `node_modules/`
- `__pycache__/`
- 本地 `.env` 文件
- 生成的前端构建产物
- 本地日志
- 运行时上传的文件
- 本地 SQLite 运行时数据库
## 学术免责声明
HOLMES IDS 是一个毕业设计原型。它专为学术演示、受控实验和 IDS 工作流探索而设计。在进行任何实际的安全应用之前,必须先对其进行强化、审计、在更广泛的数据集上进行测试,并在部署时采取安全的操作控制措施。
标签:Apex, 入侵检测系统, 安全数据湖, 异常检测, 持续学习, 机器学习, 网络安全, 网络流量分析, 逆向工具, 隐私保护