sultan9723/ai-siem-network-threat-detection
GitHub: sultan9723/ai-siem-network-threat-detection
一个结合 AI 大模型增强告警研判的全栈 SIEM 系统,旨在帮助安全团队实时可视化监控网络威胁、自动化关联事件并降低安全分析门槛。
Stars: 0 | Forks: 0
# AI SIEM Dashboard — 实时网络威胁检测系统
一个全栈安全信息和事件管理 (SIEM) 平台,利用 AI 驱动的威胁检测和事件响应引擎,实时获取、分析和可视化网络安全事件。
## 问题描述
现代网络基础设施持续面临各种网络安全威胁,包括暴力破解、端口扫描、未授权访问尝试以及侦察活动。传统的监控工具缺乏实时智能、自动化威胁分类以及可操作的事件管理能力。安全团队需要一个集中化的平台,将自动化检测、AI 增强的分析和直观的仪表板结合起来,以实现快速响应。
## 目标
- 从原始日志流中实时检测和分类网络威胁
- 通过外部 LLM 提供可选的 AI 分析,以增强基于规则的检测
- 自动化事件关联、评分和生命周期管理
- 提供用于安全运营可视化的现代仪表板
- 实施基于角色的访问控制和 JWT 身份验证
- 构建适用于 SOC 环境的、生产就绪的安全全栈应用程序
## 系统架构
```
┌─────────────────────────────────────────────────────────────────────┐
│ AI SIEM SYSTEM ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Log │───▶│ Ingestion │───▶│ Pipeline │ │
│ │ Sources │ │ Layer │ │ Engine │ │
│ │ │ │ (JSONL) │ │ │ │
│ └──────────┘ └──────────────┘ └─────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ AI │◀───│ AI Analyzer │ │ Incident │ │
│ │ (LLM) │ │ (Optional) │ │ Engine │ │
│ └──────────┘ └──────────────┘ └─────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Storage │ │
│ │ (JSON File) │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ FastAPI │ │
│ │ REST API │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ JWT Auth │ │
│ │ Middleware │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Frontend │ │
│ │ (Next.js) │ │
│ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
```
### 数据流
1. **日志来源** — Wazuh、防火墙或 JSONL 格式的应用程序日志
2. **摄取** — 文件监视器流式传输新的日志条目,并将其规范化为告警对象
3. **管道** — 通过基于规则的检测和可选的 AI 分析来路由每个告警
4. **事件引擎** — 根据源 IP 关联事件,计算风险评分,创建或更新事件
5. **存储** — 将事件连同完整的事件历史记录持久化到 JSON 文件中
6. **API** — FastAPI 提供 REST 端点和受 JWT 保护的路由
7. **前端** — Next.js 仪表板显示事件、分析结果和事件管理界面
### 组件职责
| 组件 | 职责 |
|-----------|---------------|
| 摄取 | 读取日志流,解析 JSON,规范化为结构化告警 |
| AI 分析器 | 基于规则的分类,并通过 OpenRouter 提供可选的 LLM 增强 |
| 事件引擎 | 事件关联、风险评分、事件生命周期管理 |
| 存储 | 针对事件数据的 CRUD 操作,具备错误处理和日志记录功能 |
| API | REST 端点、JWT 身份验证、CORS、请求验证 |
| 前端 | 仪表板 UI、实时轮询、事件操作、基于角色的视图 |
## 技术栈
### 后端
- **Python 3.11+** — 核心运行时
- **FastAPI** — 高性能 REST API 框架
- **Uvicorn** — ASGI 服务器
- **python-jose** — JWT token 生成与验证
- **passlib[bcrypt]** — 密码哈希与验证
- **python-dotenv** — 环境变量管理
- **Pydantic** — 请求/响应验证
### 前端
- **Next.js 16** — 带有 App Router 的 React 框架
- **TypeScript** — 类型安全的前端代码
- **Tailwind CSS v4** — 实用优先的样式框架
- **Lucide React** — 图标库
- **react-hot-toast** — 通知系统
### DevOps 与基础设施
- **Render** — 后端 API 托管
- **Vercel** — 前端托管
- **Git** — 版本控制
## 功能特性
### 威胁检测
- 从 JSONL 文件实时摄取日志流
- 基于规则的事件分类(暴力破解、端口扫描、未知)
- 通过 OpenRouter LLM 提供 AI 增强的威胁分析(可选,具备平滑降级)
- 根据源 IP 自动关联事件
- 基于事件类型和严重程度的动态风险评分
### 事件管理
- 事件的创建、更新和生命周期跟踪
- 状态管理:active、resolved、escalated、false_positive
- 事件计数跟踪和时间分析 (first_seen, last_seen)
- 生成人类可读的事件报告
### 仪表板与可视化
- 带有风险评分指示器的实时事件网格
- 带有颜色编码卡片的严重程度分类
- 具有汇总威胁统计数据的分析页面
- 带有完整事件历史和分析的事件详情视图
- 用于系统配置的设置页面
### 身份验证与访问控制
- 具有自动 token 过期机制的 JWT 身份验证
- 通过 bcrypt 进行密码哈希(无明文存储)
- 带有 token 验证中间件的受保护 API 路由
- 基于角色的访问:Admin(完全访问权限)和 Viewer(只读权限)
## 安全特性
### 密码安全
- 所有密码均使用带有随机盐值的 bcrypt 进行哈希处理
- 零明文密码存储或比较
- 哈希后的凭据存储在环境变量中,而非源代码中
- `verify_password()` 使用 passlib 的时序安全比较
### 身份验证
- 具有可配置过期时间的 JWT token(默认:60 分钟)
- 每次受保护的 API 请求都会验证 token
- token 过期时自动使会话失效
- 通过 HTTP Authorization 头部进行 Bearer token 身份验证
### API 安全
- CORS 仅限特定的前端域名
- 对所有路由参数进行输入验证(事件 ID 正则表达式,IP 格式)
- 通过前端渲染时的 HTML 转义防止 XSS
- 全局异常处理程序防止堆栈跟踪信息泄露
### 环境安全
- 所有密钥均从环境变量加载
- JWT 签名需要 `SECRET_KEY` — 生产环境中无硬编码的回退值
- `.env` 和 `.env.local` 已排除在版本控制之外
- 提供单独的 `.env.example` 文件作为配置参考
## 用户角色
### Admin
- 完全的系统访问权限
- 通过登录页面进行身份验证
- 查看、解决和升级事件
- 访问分析仪表板和设置
- 完整的 API 访问权限,包括对事件的 PATCH 操作
### Viewer(只读)
- 查看仪表板和事件列表
- 查看事件详情和报告
- 查看分析页面
- 无操作权限(无法解决、升级或修改事件)
- 只读的 API 访问权限(仅限 GET 端点)
## 身份验证流程
```
┌──────────┐ POST /login ┌──────────┐
│ │ ───────────────────▶ │ │
│ Client │ │ Server │
│ │ ◀─────────────────── │ │
└──────────┘ {access_token} └──────────┘
│
▼
┌──────────────┐
│ Verify │
│ credentials │
│ (bcrypt) │
└──────┬───────┘
│
▼
┌──────────────┐
│ Generate │
│ JWT token │
│ (exp: 60m) │
└──────────────┘
```
### 流程说明
1. 客户端发送 `POST /login` 请求,附带 `{username, password}`
2. 服务器验证用户名,并根据存储的 bcrypt 哈希值验证密码
3. 验证成功后,服务器生成包含 payload `{sub: username, exp: }` 的 JWT
4. 客户端将 token 存储在 `localStorage` 中
5. 所有后续请求都包含 `Authorization: Bearer ` 头部
6. 服务器中间件在受保护的路由上解码并验证 token
7. 过期或无效的 token 返回 `401 Unauthorized`,触发客户端注销
## 项目结构
```
ai-siem-network-threat-detection/
├── README.md
├── .gitignore
├── .env.example
├── .env.local # Frontend env (gitignored)
├── package.json
├── tsconfig.json
├── next.config.ts
├── tailwind.config.ts
├── postcss.config.js
├── next-env.d.ts
├── LICENSE
│
├── backend/ # Python SIEM backend
│ ├── main.py # Entry point (uvicorn)
│ ├── requirements.txt
│ ├── .env.example
│ │
│ ├── api/ # API layer
│ │ ├── __init__.py
│ │ ├── app.py # FastAPI app + routes
│ │ └── schemas.py # Pydantic models
│ │
│ ├── core/ # Core utilities
│ │ ├── __init__.py
│ │ ├── config.py # Logging, constants
│ │ └── security.py # Auth, JWT, password hashing
│ │
│ ├── services/ # Business logic
│ │ ├── __init__.py
│ │ ├── ai_analyzer.py # Rule-based + AI analysis
│ │ ├── incident_engine.py # Incident correlation & scoring
│ │ ├── ingestion.py # Log stream ingestion
│ │ ├── pipeline.py # Alert processing pipeline
│ │ ├── reporting.py # Report generation
│ │ └── storage.py # Data persistence
│ │
│ ├── data/ # Data files
│ │ └── incidents.json
│ │
│ └── tests/ # Backend tests
│ ├── __init__.py
│ ├── test_analyzer.py
│ └── test_pipeline.py
│
├── frontend/ # Next.js frontend (source at root)
│ ├── src/
│ │ ├── app/ # Next.js App Router pages
│ │ │ ├── layout.tsx
│ │ │ ├── page.tsx # Dashboard
│ │ │ ├── globals.css
│ │ │ ├── login/
│ │ │ ├── incidents/
│ │ │ ├── analytics/
│ │ │ └── settings/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── IncidentCard.tsx
│ │ │ ├── Navbar.tsx
│ │ │ └── Sidebar.tsx
│ │ ├── lib/ # Utilities and API client
│ │ │ ├── api.ts
│ │ │ └── useAuth.ts
│ │ └── hooks/ # Custom React hooks
│ │ └── useAuth.ts # (symlink or copy from lib)
│ └── .env.local.example
│
└── docs/ # Documentation
└── ARCHITECTURE.md # Detailed architecture guide
```
## 安装说明
### 前置条件
- Python 3.11 或更高版本
- Node.js 18 或更高版本
- npm 或 yarn
### 后端设置
```
# 1. 导航到 backend 目录
cd backend
# 2. 创建 virtual environment
python -m venv venv
# 3. 激活 virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 4. 安装依赖
pip install -r requirements.txt
# 5. 配置 environment variables
cp .env.example .env
# 使用你的值编辑 .env(参见 Environment Variables 部分)
# 6. 启动服务器
python main.py
# 或
uvicorn api.app:app --host 0.0.0.0 --port 8000 --reload
```
API 将在 `http://localhost:8000` 上可用。
### 前端设置
```
# 1. 安装依赖(从项目根目录)
npm install
# 2. 配置 environment variables
cp .env.local.example .env.local
# 使用你的 backend API URL 编辑 .env.local
# 3. 启动 development server
npm run dev
```
仪表板将在 `http://localhost:3000` 上可用。
### 默认凭据
| 用户名 | 密码 |
|----------|----------|
| admin | admin123 |
## 环境变量
### 后端
| 变量 | 必填 | 默认值 | 描述 |
|----------|----------|---------|-------------|
| `SECRET_KEY` | 是 | — | JWT 签名密钥(请使用强随机字符串) |
| `ALGORITHM` | 否 | `HS256` | JWT 算法 |
| `ACCESS_TOKEN_EXPIRE_MINUTES` | 否 | `60` | token 过期时间 |
| `ADMIN_USERNAME` | 否 | `admin` | Admin 用户名 |
| `ADMIN_PASSWORD_HASH` | 是 | — | admin 密码的 bcrypt 哈希值 |
| `FRONTEND_URL` | 否 | `http://localhost:3000` | 允许的 CORS 来源 |
| `OPENROUTER_API_KEY` | 否 | — | 用于 AI 分析的 OpenRouter API 密钥 |
| `PORT` | 否 | `8000` | 服务器端口 |
### 前端
| 变量 | 必填 | 默认值 | 描述 |
|----------|----------|---------|-------------|
| `NEXT_PUBLIC_API_URL` | 是 | — | 后端 API 基础 URL |
## 部署
### 后端
1. 在 Render 上创建一个新的 Web Service
2. 连接你的 GitHub 存储库
3. 配置构建和启动命令:
- **构建命令:** `pip install -r backend/requirements.txt`
- **启动命令:** `uvicorn api.app:app --host 0.0.0.0 --port $PORT`
4. 在 Render 仪表板中设置环境变量:
- `SECRET_KEY`(生成一个强随机字符串)
- `ADMIN_PASSWORD_HASH`(admin 密码的 bcrypt 哈希值)
- `OPENROUTER_API_KEY`(可选,用于 AI 分析)
- `FRONTEND_URL`(你的 Vercel 前端 URL)
5. 将根目录设置为 `backend`
### 前端
1. 将你的存储库导入 Vercel
2. 配置构建设置:
- **框架预设:** Next.js
- **构建命令:** `next build`
- **输出目录:** `.next`
3. 设置环境变量:
- `NEXT_PUBLIC_API_URL`(你的 Render 后端 URL)
4. 部署
### 部署后检查清单
- 验证 CORS 允许你的前端域名
- 使用 admin 凭据测试登录
- 确认 API 健康检查端点能够响应
- 验证 `.env` 文件未包含在存储库中
- 测试事件创建和仪表板显示
## 未来改进
### 安全
- 在 API 中间件级别实施基于角色的访问控制 (RBAC)
- 为登录和 API 端点添加速率限制
- 实现用于延长会话的 refresh token 轮换
- 为所有 admin 操作添加审计日志
- 使用 PostgreSQL 或 MongoDB 替换 JSON 文件存储
- 添加 HTTPS 强制使用和安全响应头
### 检测
- 与真实的 SIEM 数据源集成(Wazuh API、Elastic SIEM、Splunk)
- 添加更多检测规则(SQL 注入、XSS、DDoS 模式)
- 使用统计模型实现异常检测
- 添加威胁情报源集成(MITRE ATT&CK 映射)
### 平台
- 支持 WebSocket 以进行实时事件流传输
- 针对关键事件的 Email/Slack 通知
- 事件分配和团队协作功能
- 导出 PDF 格式的报告
- 深色/浅色主题切换
- 改进移动端响应式仪表板体验
### DevOps
- 使用 docker-compose 进行 Docker 容器化
- 具备自动化测试的 CI/CD 管道
- 用于监控的健康检查端点
- 带有关联 ID 的结构化日志
- API 版本控制策略
## 关键收获
- **安全工程:** 在全栈应用程序中实现了 bcrypt 密码哈希、JWT 身份验证、CORS 配置、输入验证和 XSS 防范
- **威胁检测管道:** 构建了一个模块化检测系统,具备基于规则的分类、可选的 AI 增强以及自动事件关联功能
- **API 设计:** 设计了具有适当错误处理、通过 Pydantic 进行请求验证以及基于中间件的身份验证的 RESTful API
- **实时系统:** 通过 JSONL 解析和自动事件更新实现了基于文件的日志流传输
- **全栈集成:** 将 Next.js 前端与 FastAPI 后端连接,管理身份验证流程和实时数据同步
- **生产就绪:** 采用基于环境的配置构建项目,以便在 Render 和 Vercel 上部署
## 项目状态
| 领域 | 状态 |
|------|--------|
| 核心检测管道 | 完成 |
| 事件管理 | 完成 |
| REST API | 完成 |
| JWT 身份验证 | 完成 |
| 仪表板 UI | 完成 |
| AI 分析(可选) | 完成 |
| 密码安全 | 完成 |
| 环境配置 | 完成 |
| 基于角色的访问控制 (RBAC) | 已文档化(待实现) |
| 数据库 | 已规划 |
| 实时 WebSocket | 已规划 |
| CI/CD 管道 | 已规划 |
**当前版本:** 1.0.0
**最后更新:** 2026-05-04
## 许可证
本项目基于 MIT 许可证授权。详情请参见 [LICENSE](LICENSE) 文件。
标签:AI安全分析, DLL 劫持, JWT认证, LLM安全应用, PE 加载器, RBAC, 事件响应引擎, 企业级安全, 信息收集自动化, 免杀技术, 基于角色的访问控制, 大语言模型, 安全事件管理, 安全事件评分, 安全仪表盘, 安全信息和事件管理, 安全告警富化, 安全运营中心, 实时威胁检测, 实时日志分析, 密码管理, 插件系统, 日志流处理, 暴力破解检测, 未授权访问检测, 现代仪表盘, 端口扫描检测, 网络侦察检测, 网络威胁情报, 网络安全, 网络映射, 网络流量分析, 自动化威胁分类, 自定义检测规则, 逆向工具, 隐私保护