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, 入侵检测系统, 内存转储, 大语言模型, 安全数据湖, 异常检测, 网络安全, 请求拦截, 隐私保护