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 主页](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/3d41a93f4f061833.png) ## 项目范围 构建 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, 入侵检测系统, 安全数据湖, 异常检测, 持续学习, 机器学习, 网络安全, 网络流量分析, 逆向工具, 隐私保护