Kishorekumar-2004/Hybrid-ids

GitHub: Kishorekumar-2004/Hybrid-ids

一个基于 Ruby on Rails 构建的 AI 驱动混合入侵检测系统,融合统计异常检测、规则匹配和 GPT-4o-mini 自然语言推理实现自动化威胁狩猎。

Stars: 0 | Forks: 0

# 🛡️ Hybrid IDS — AI 驱动的自动化威胁狩猎混合框架 ## 📌 概述 **Hybrid IDS** 是一个使用 **Ruby on Rails** 构建的全栈入侵检测系统,它将三层威胁情报整合到一个统一的决策引擎中: | 层级 | 方法 | 描述 | |-------|--------|-------------| | 🔢 **统计学** | Z-Score 异常检测 | 使用标准差分析检测异常的数据包大小 | | 📜 **规则** | 特征/启发式规则 | 标记已知的攻击模式(高端口、数据包激增) | | 🤖 **AI 驱动** | 通过 OpenAI API 接入 GPT-4o-mini | 使用自然语言推理对流量进行分类 | **混合引擎** 融合了所有三个层级以得出最终结论——为安全分析师提供更智能、更快捷且更具解释性的威胁狩猎体验。 ## 🚀 功能 - **📊 实时仪表盘** — 实时流量统计、威胁计数器和最新日志表 - **🧠 混合检测引擎** — 结合统计与规则信号进行高置信度分类 - **🤖 AI 威胁分析器** — GPT-4o-mini 对每条流量日志进行分类(具备本地回退机制) - **📈 异常评分** — 为每条日志条目计算 Z-score 并存储以供分析 - **📋 规则警报** — 针对高端口访问和数据包激增自动触发规则 - **📤 JSON 导入** — 通过上传 JSON 批量导入流量日志 - **📄 PDF 导出** — 一键将所有确认的威胁导出为由 Prawn 生成的 PDF 报告 - **🔐 会话认证** — 简单的登录/登出会话管理 - **🐳 Docker 化** — 可通过 Docker 和 Docker Compose 直接运行 ## 🏗️ 系统架构 ``` Network Traffic Logs │ ▼ ┌───────────────────┐ │ Preprocessor │ ← Normalize & validate log entries └────────┬──────────┘ │ ┌────▼────────────────────────────────────┐ │ Detection Service │ │ │ │ ┌──────────────────────────────────┐ │ │ │ StatisticalDetector │ │ │ │ Z-Score vs. Threshold (±3σ) │ │ │ └──────────────┬───────────────────┘ │ │ │ statistical_flag │ │ ┌──────────────▼───────────────────┐ │ │ │ RuleEngine │ │ │ │ High Port (>50000) | Spike │ │ │ └──────────────┬───────────────────┘ │ │ │ rule_flag │ │ ┌──────────────▼───────────────────┐ │ │ │ HybridEngine (Decision Fusion) │ │ │ │ Both → Confirmed Threat │ │ │ │ Stat → Suspicious Activity │ │ │ │ Rule → Known Threat │ │ │ │ None → Normal Traffic │ │ │ └──────────────┬───────────────────┘ │ └─────────────────┼───────────────────────┘ │ ┌────────────▼──────────────┐ │ AiThreatAnalyzer │ │ GPT-4o-mini (OpenAI) │ │ Fallback: local rules │ └────────────┬──────────────┘ │ DetectionResult saved │ Dashboard / PDF Report ``` ## 🔍 检测逻辑 ### 统计异常检测 对所有记录的数据包大小使用 **Z-score 归一化** 进行处理: ``` z = (packet_size - μ) / σ If |z| > 3 → Statistical anomaly flagged ``` 每条日志条目的异常分数都会被存储,以用于审计和可视化。 ### 规则情报 两条特征规则会触发 `RuleAlert` 记录: - **高端口访问** → `port > 50,000` - **数据包大小激增** → `packet_size > 1,500 bytes` ### 混合融合(最终分类) ``` statistical_flag=true + rule_flag=true → "Confirmed Threat" statistical_flag=true + rule_flag=false → "Suspicious Activity" statistical_flag=false + rule_flag=true → "Known Threat" statistical_flag=false + rule_flag=false → "Normal Traffic" ``` ### AI 层 (GPT-4o-mini) 将数据包大小和端口发送给 OpenAI 进行自然语言分类,如果 API 不可用,则会优雅地回退至本地处理。 ## 🧱 技术栈 | 层级 | 技术 | |-------|------------| | 框架 | Ruby on Rails 7.2 | | 数据库 | SQLite3 | | 前端 | Bootstrap 5.3 + Hotwire (Turbo/Stimulus) | | AI | OpenAI GPT-4o-mini (`ruby-openai`) | | 统计 | `descriptive_statistics` gem | | PDF 导出 | `prawn` + `prawn-table` | | Web 服务器 | Puma | | 部署 | Docker + Docker Compose | ## 📁 项目结构 ``` hybrid_ids/ ├── app/ │ ├── controllers/ │ │ ├── dashboard_controller.rb # Main dashboard + AI insights + PDF export │ │ ├── traffic_logs_controller.rb # Log CRUD + JSON import │ │ └── session_controller.rb # Auth │ ├── services/ │ │ ├── hybrid_engine.rb # ⭐ Core decision fusion │ │ ├── statistical_detector.rb # Z-score anomaly detection │ │ ├── rule_engine.rb # Signature-based rules │ │ ├── ai_threat_analyzer.rb # OpenAI GPT-4o-mini classifier │ │ ├── detection_service.rb # Orchestrates all detectors │ │ ├── preprocessor.rb # Log normalization │ │ ├── data_collector.rb # Data pipeline │ │ └── json_import_service.rb # Bulk JSON import │ ├── models/ │ │ ├── traffic_log.rb # Core log model │ │ ├── detection_result.rb # Final verdict store │ │ └── rule_alert.rb # Rule trigger records │ └── views/ │ ├── dashboard/ # Dashboard UI │ └── traffic_logs/ # Log management UI ├── config/ │ └── routes.rb ├── Dockerfile └── Gemfile ``` ## ⚙️ 配置与安装 ### 前置条件 - Ruby 3.x - Bundler - SQLite3 - OpenAI API Key ### 本地设置 ``` # Clone 仓库 git clone https://github.com/YOUR_USERNAME/hybrid_ids.git cd hybrid_ids # 安装依赖 bundle install # 设置数据库 rails db:create db:migrate # 配置环境变量 cp .env.example .env # 将你的 OpenAI API key 添加到 .env: # OPENAI_API_KEY=sk-... # 启动服务器 rails server ``` 访问 `http://localhost:3000` ### Docker 设置 ``` docker-compose up --build ``` ## 🔧 环境变量 在根目录下创建一个 `.env` 文件: ``` OPENAI_API_KEY=your_openai_api_key_here ``` ## 📊 API 端点 | 方法 | 路由 | 描述 | |--------|-------|-------------| | GET | `/` | 仪表盘主页 | | GET | `/traffic_logs` | 列出所有流量日志 | | GET | `/traffic_logs/upload_json` | JSON 上传表单 | | POST | `/traffic_logs/import_json` | 从 JSON 导入流量日志 | | DELETE | `/traffic_logs/reset_all` | 删除所有日志 | | GET | `/generate_ai_insight` | 触发 AI 仪表盘洞察 | | POST | `/dashboard/generate_ai_summary` | 生成 AI 威胁摘要 | | GET | `/export_threats_pdf` | 下载 PDF 威胁报告 | | GET | `/login` | 登录页面 | | POST | `/login` | 身份验证 | | DELETE | `/logout` | 退出登录 | ## 🧪 示例 JSON 导入格式 ``` [ { "source_ip": "192.168.1.10", "destination_ip": "10.0.0.5", "port": 52345, "protocol": "TCP", "packet_size": 1800, "logged_at": "2024-01-15T10:30:00Z" } ] ``` ## 📄 PDF 报告 通过仪表盘将所有 **已确认的威胁** 导出为格式化的 PDF 报告。该报告包含: - 源 IP 和目标 IP - 端口、协议、数据包大小 - 检测时间戳 ## 📜 许可证 本项目基于 MIT 许可证授权。 ## 👨‍💻 作者 本项目作为探索 **机器学习**、**统计方法** 和 **基于规则的情报** 在下一代入侵检测系统中应用的学术/研究项目而构建。
标签:DLL 劫持, Ruby on Rails, 入侵检测系统, 内存转储, 大语言模型, 安全数据湖, 异常检测, 网络安全, 请求拦截, 隐私保护