SharadKesariMN/siem-dashboard
GitHub: SharadKesariMN/siem-dashboard
一个 AI 驱动的全栈 SIEM 仪表板,能够采集多源日志并实时检测攻击,结合 MITRE ATT&CK 映射与 Claude 大模型生成事件分析报告。
Stars: 0 | Forks: 0
# AI 驱动的 SIEM 仪表板
一个全栈的安全信息和事件管理 (SIEM) 平台,能够从多个来源摄取日志,将其标准化为统一的 schema,运行实时的关联规则来检测攻击,将检测结果映射到 MITRE ATT&CK 技术,并使用 Claude API 生成 AI 驱动的事件摘要。
本项目作为作品集构建,旨在展示与德国网络安全就业市场相关的 SOC 分析师和安全工程技能——SIEM 操作、威胁检测、MITRE ATT&CK、AI/自动化以及云原生部署。




## 概述
中小型企业通常无力承担商业 SIEM 许可证(Splunk Enterprise、Microsoft Sentinel)。本项目提供了一个轻量级、可自托管的替代方案,涵盖了端到端的核心 SIEM 工作流:
**摄取 → 标准化 → 关联 → 检测 → 解释 (AI) → 可视化**
它可以完全独立运行,或者通过 HTTP Event Collector (HEC) 将日志转发到现有的 Splunk 部署中,以实现混合部署架构。
## 架构

## 功能
- **多源摄取** — syslog (UDP) 接收器和 REST API endpoint
- **日志标准化** — 基于正则表达式的解析器从原始日志中提取结构化字段(用户、IP、事件类型)
- **实时关联引擎** — 检测:
- SSH 暴力破解 / 凭据填充 (MITRE T1110)
- 端口扫描 / 网络侦察 (MITRE T1046)
- 通过有效账号进行权限提升 (MITRE T1078)
- **MITRE ATT&CK 富化** — 每个告警都标记了技术、战术和官方参考信息
- **AI 生成的事件摘要** — Claude API 为每个告警提供通俗易懂的英文解释和响应建议
- **Splunk HEC 转发** — 可选,同时转发到现有的 Splunk 实例
- **实时仪表板** — 按严重程度分类的告警源、图表(严重程度分布、主要源 IP、告警时间线)、可搜索的日志探索器,以及详细的逐告警调查页面
## 技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Python, FastAPI, SQLAlchemy |
| 数据库 | PostgreSQL |
| 实时流处理 | Redis |
| 前端 | React, Vite, Recharts |
| AI | Claude API (claude-sonnet-4-6) |
| 日志转发 | Splunk HTTP Event Collector (HEC) |
| 部署 | Docker Compose (本地) → Vercel (前端) + Railway/Render (后端) |
## 截图
### 告警仪表板
包含严重程度分布、主要源 IP 和告警数量图表的实时告警流。

### 告警详情
完整的 MITRE ATT&CK 上下文、AI 生成的分析报告,以及每个告警背后的原始日志事件。

### 日志探索器
针对每个已摄取日志事件的可搜索、可过滤视图。

## 快速开始
### 前置条件
- Docker Desktop
- 用于 AI 摘要功能的 [Anthropic API 密钥](https://console.anthropic.com)
### 设置
1. 克隆代码库:
\`\`\`bash
git clone https://github.com/SharadKesariMN/siem-dashboard.git
cd siem-dashboard
\`\`\`
2. 复制环境变量模板并添加您的 Anthropic API 密钥:
\`\`\`bash
cp .env.example .env
Edit .env and set ANTHROPIC_API_KEY=sk-ant-...
\`\`\`
3. 启动整个技术栈:
\`\`\`bash
docker compose up --build
\`\`\`
4. 使用在 `.env` 中设置的凭据登录仪表板(`DASHBOARD_USERNAME` / `DASHBOARD_PASSWORD`,默认为 `admin` / `changeme` — 在任何实际部署之前请务必更改这些设置)。
5. 打开仪表板:
- 前端:[http://localhost:5173](http://localhost:5173)
- 后端 API:[http://localhost:8000](http://localhost:8000)
- API 健康检查:[http://localhost:8000/health](http://localhost:8000/health)
## 测试检测引擎
要查看整个 pipeline 的实际运行情况——摄取、标准化、关联、MITRE 标记和 AI 摘要——请运行附带的攻击模拟脚本。它会从单个模拟的攻击者 IP 重放真实的 3 阶段入侵链(侦察 → 暴力破解 → 权限提升):
\`\`\`bash
./scripts/simulate-attack.sh
\`\`\`
在大约 20 秒内,三个关联告警将出现在 `localhost:5173` 的仪表板上:
| 阶段 | 技术 | 严重程度 |
|---|---|---|
| 端口扫描(探测 11 个端口) | T1046 - Network Service Discovery | 中危 |
| SSH 暴力破解(7 次失败登录) | T1110 - Brute Force | 高危 |
| 权限提升 | T1078 - Valid Accounts | 严重 |
每个告警都包含 Claude 生成的通俗英文摘要以及具体的建议响应措施。
要重置演示数据(在重新运行前清除所有告警和日志):
```
DASHBOARD_USERNAME= DASHBOARD_PASSWORD= ./scripts/reset-demo.sh
```
这两个脚本都接受一个可选的 `SIEM_API_URL`,以便将目标指向已部署的实例而不是 localhost:
```
SIEM_API_URL=https://your-backend.onrender.com DASHBOARD_USERNAME=... DASHBOARD_PASSWORD=... ./scripts/reset-demo.sh
SIEM_API_URL=https://your-backend.onrender.com ./scripts/simulate-attack.sh
```
## 项目结构
\`\`\`
siem-dashboard/
├── backend/
│ ├── app/
│ │ ├── ingestion/ # syslog + API 日志摄取
│ │ ├── normalization/ # 原始日志 -> 结构化字段提取
│ │ ├── correlation/ # 检测规则 + MITRE 参考数据
│ │ ├── ai/ # Claude API 集成
│ │ ├── splunk/ # 可选的 Splunk HEC 转发器
│ │ ├── models/ # SQLAlchemy 模型 (log_events, alerts)
│ │ └── routes/ # FastAPI 端点
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── components/ # AlertCard, 图表, 布局外壳
│ │ ├── pages/ # 告警, 告警详情, 日志探索器
│ │ └── App.jsx
│ └── Dockerfile
├── scripts/
│ └── simulate-attack.sh # 一键攻击链演示
├── docker-compose.yml
└── .env.example
\`\`\`
## 路线图
- [x] 日志摄取(syslog + REST API)
- [x] 标准化引擎
- [x] 关联规则(暴力破解、端口扫描、权限提升)
- [x] MITRE ATT&CK 标记
- [x] AI 生成的事件摘要
- [x] Splunk HEC 转发
- [x] 带有图表和日志探索器的 React 仪表板
- [ ] 云端部署(Vercel + Railway/Render)
- [ ] 具有基于角色的访问控制的多用户身份验证(JWT,用户管理)
- [ ] 针对日志和告警的可配置数据保留策略
- [ ] 额外的检测规则(数据外发、不可能的旅行)
## 许可证
MIT
## 作者
Sharad Kesari — 网络安全硕士生,致力于在德国市场寻求 SOC 分析师 / 安全工程师职位。
标签:AMSI绕过, AV绕过, DLL 劫持, Docker, FastAPI, React, SIEM平台, Syscalls, 大语言模型, 威胁检测, 安全运营, 安全防御评估, 扫描框架, 插件系统, 搜索引擎查询, 测试用例, 版权保护, 逆向工具