derekxmartin/SentinelSIEM
GitHub: derekxmartin/SentinelSIEM
基于 Go 和 Elasticsearch 构建的单二进制 SIEM 平台,支持 Sigma 规则、ECS 标准化和跨源关联检测。
Stars: 0 | Forks: 0
# SentinelSIEM
一个使用 Go 构建并由 Elasticsearch 支持的安全信息与事件管理(SIEM)概念验证平台。设计作为 Sentinel 安全产品组合的核心检测与调查大脑。
## 为什么选择 SentinelSIEM?
大多数 SIEM 平台要么是内部机制不透明的昂贵商业产品,要么是需要将十几个松散耦合的工具拼凑在一起的开源项目。SentinelSIEM 采用了一种不同的方法:
- **单二进制文件的简洁性。** 每个组件都是一个独立的 Go 二进制文件 —— 无需 JVM,无需 Python 运行时,无需容器编排。构建它,复制它,运行它。
- **原生 Sigma 支持。** 检测规则使用 [Sigma](https://github.com/SigmaHQ/sigma),这是全球数千名检测工程师使用的开放标准。首日即附带 3000 多条社区规则。无需学习专有的规则语言。
- **ECS 优先的标准化。** 来自每个来源的每个事件在进入存储之前都会被标准化为 [Elastic Common Schema](https://www.elastic.co/guide/en/ecs/current/index.html)。跨源关联之所以有效,是因为数据模型是一致的,而不是因为您编写了自定义连接。
- **跨产品组合关联。** SentinelSIEM 原生关联 EDR、AV、DLP、Windows 和 syslog 来源。在一台主机上的恶意软件检测加上同一用户在 15 分钟内的 DLP 策略违规?那是一个警报,而不是两个控制台中的两个工单。
- **内置案例管理。** 警报升级、可观测对象跟踪、分析师协作和解决指标,无需 TheHive 或 ServiceNow 等外部工具。
- **透明且可定制。** 整个代码库是可读的 Go 代码,依赖项极少。如果您想添加解析器,请编写一个实现了一个接口的结构体。如果您想添加检测,请编写一个 YAML 文件。
SentinelSIEM 专为那些想要理解其工具而不仅仅是操作它们的安全团队而设计。
## 它的功能
SentinelSIEM 从多个安全来源摄取遥测数据,将事件标准化为 ECS,实时评估 Sigma 检测规则,并提供用于威胁狩猎的查询接口 —— 所有这些都通过具有内置案例管理的基于 React 的仪表板实现。
### 数据源
| Source | Protocol | Status | Description |
|--------|----------|--------|-------------|
| SentinelEDR | JSON/HTTP | 已实现 | 端点行为遥测(进程、网络、注册表、文件事件) |
| Sentinel AV | JSON/HTTP | 已实现 | 恶意软件扫描结果、隔离操作、实时拦截 |
| Sentinel DLP | JSON/HTTP | 已实现 | 数据分类、策略违规、可移动媒体事件 |
| Windows Event Logs | WEF/HTTP | 已实现 | 通过 XML 或 Winlogbeat JSON 的 Security、Sysmon 和系统事件 |
| Syslog | TCP/UDP/TLS | 已实现 | 防火墙、Linux auditd、网络设备(RFC 5424 & 3164) |
### 摄取管道
- **HTTP 端点** (`/api/v1/ingest`) — NDJSON 和 JSON 数组批处理支持,API 密钥认证,单 IP 限速
- **WEF 端点** (`/api/v1/ingest/wef`) — Windows Event Forwarding,自动检测 XML 与 JSON 负载,BOM 处理,批量 XML 拆分
- **Syslog 监听器** — 可配置端口上的 TCP(换行符分隔 + 八位字节计数帧)、UDP 和 TLS,具有连接限制和空闲超时
- **标准化引擎** — 在启动时注册的按源类型解析器,通过 `source_type` 字段路由。可通过 `normalize.Parser` 接口扩展
- **Syslog 子解析器** — 用于结构化字段提取的 YAML 驱动正则表达式配置(附带 iptables、auditd、通用 KV)。正则表达式在启动时使用 Go 的 RE2 引擎预编译(线性时间,无 ReDoS)
### 检测引擎
- **Sigma 规则** — 开放标准 YAML 检测格式的原生解析和评估
- **单事件规则** — 具有完整修饰符支持的字段匹配(`contains`、`re`、`cidr`、`base64`、`all` 等)
- **关联规则** — 多事件模式:`event_count`(阈值)、`value_count`(不同值)、`temporal`(时间窗口内的有序序列)
- **跨产品组合检测** — 关联 EDR + AV + DLP 来源以检测多阶段攻击链的规则
- **热重载** — 文件监视器 + CLI 触发器,用于零停机规则更新
### 案例管理
内置事件响应工作流:警报升级、可观测对象提取(IP、哈希、域、用户名)、通过时间轴进行的分析师协作、MITRE ATT&CK 标记以及带有检测效能指标(MTTD/MTTR)的解决跟踪。
## 架构
```
[SentinelEDR] ─┐
[Sentinel AV] ─┤
[Sentinel DLP] ─┤─→ [sentinel-ingest] → [sentinel-normalize] → [sentinel-store (ES)]
[Windows WEF] ─┤ ↓
[Syslog] ─┘ [sentinel-correlate]
↓
[alerts + cases in ES]
↓
[sentinel-query / dashboard]
```
| Component | Description |
|-----------|-------------|
| `sentinel-ingest` | HTTP/syslog/WEF 监听器,API 密钥认证,NDJSON 批处理支持,TLS syslog |
| `sentinel-normalize` | ECS 标准化引擎,具有按源类型解析器和 YAML 子解析器 |
| `sentinel-store` | Elasticsearch 客户端 —— 索引模板、ILM、批量索引 |
| `sentinel-correlate` | 具有关联状态管理的实时 Sigma 规则引擎 |
| `sentinel-query` | REST API 服务器,查询语言 → ES DSL 转换,为仪表板提供服务 |
| `sentinel-cli` | 用于规则、来源、密钥、健康检查和临时查询的管理 CLI |
| `sentinel-dashboard` | React SPA —— 警报分类、案例、威胁狩猎、规则管理、源健康状况 |
## 项目结构
```
├── cmd/
│ ├── sentinel-ingest/ # HTTP/syslog ingestion server
│ ├── sentinel-correlate/ # Sigma rule evaluation engine
│ ├── sentinel-query/ # Query API + dashboard server
│ └── sentinel-cli/ # Management CLI
├── internal/
│ ├── common/ # Shared types (ECS event, auth, metrics)
│ ├── config/ # TOML config loading
│ ├── store/ # Elasticsearch client wrapper
│ ├── ingest/ # HTTP/syslog/WEF listeners, pipeline
│ ├── normalize/parsers/ # Per-source-type ECS parsers
│ ├── correlate/ # Sigma rule engine + logsource mapping
│ ├── query/ # Query parser, ES translator, REST API
│ ├── cases/ # Case management service
│ ├── sources/ # Source configuration + snippets
│ └── alert/ # Alert pipeline
├── rules/ # Sigma detection rules
│ ├── sigma_curated/ # Curated SigmaHQ community rules
│ └── sentinel_portfolio/ # Cross-source correlation rules
├── parsers/ # Logsource maps + syslog sub-parser YAML configs
├── scripts/ # Helper scripts (ES wait, cert gen)
├── web/ # React dashboard
└── tests/ # Integration + benchmark tests
```
## 技术栈
**后端:** Go 1.22+,使用 `go-elasticsearch`、`chi`(路由)、`zap`(日志记录)、`gopkg.in/yaml.v3`
**存储:** Elasticsearch 8.x,具有符合 ECS 的索引模板和 ILM 策略
**前端:** React、Tailwind CSS、TanStack Table + Query、Recharts、Nivo(ATT&CK 热力图)、CodeMirror 6(查询编辑器)、Zustand、Headless UI
## 入门指南
### 前置条件
- Go 1.22+
- Docker & Docker Compose(用于 Elasticsearch)
- Node.js 18+(用于仪表板开发)
- Make
### 构建
```
make build # Compiles all binaries to bin/
make test # Runs tests
make lint # Runs go vet
```
### 运行
```
docker-compose up -d # Start Elasticsearch
make run-ingest # Start ingestion server
make run-correlate # Start correlation engine
make run-query # Start query API + dashboard
```
### Syslog TLS 设置
```
./scripts/gen-certs.sh # Generate self-signed certs for development
# 然后在 sentinel.toml 中设置 tls_port、tls_cert、tls_key
```
## 实现阶段
| Phase | Description | Tasks | Depends On | Status |
|-------|-------------|-------|------------|--------|
| P0 | 脚手架 —— Go module、Docker Compose、ECS 结构体、配置、ES 客户端 | 5 | — | 完成 |
| P1 | HTTP 摄取 + SentinelEDR 解析器 | 4 | P0 | 完成 |
| P1a | Sentinel AV & DLP 解析器 + 跨产品组合规则 | 4 | P1 | 完成 |
| P2 | Windows 事件日志摄取(XML + Winlogbeat JSON) | 4 | P1 | 完成 |
| P3 | Syslog 摄取(TCP/UDP/TLS,RFC 5424 & 3164) | 4 | P1 | 完成 |
| P4 | Sigma 单事件检测引擎 | 5 | P1 | 待定 |
| P5 | Sigma 关联规则(event_count, value_count, temporal) | 5 | P4 | 待定 |
| P6 | 查询语言 + REST API | 4 | P0, P1 | 待定 |
| P7 | React 仪表板 + 源配置 | 10 | P6 | 待定 |
| P8 | CLI 管理工具 | 4 | P0–P7 | 待定 |
| P9 | 案例管理(升级、可观测对象、时间轴) | 7 | P4, P7 | 待定 |
| P10 | 集成测试(55 条规则,700 个事件,跨源关联) | 5 | 全部 | 待定 |
| P11 | 加固(指标、负载测试、DLQ、优雅关闭) | 4 | 全部 | 待定 |
| P12 | AI 调查助手 | 10 | P6, P7, P9 | 待定 |
有关完整规范和任务细分,请参阅 `REQUIREMENTS.md`。
## 许可证
专有 —— Sentinel Security Portfolio。
标签:AMSI绕过, ECS, EDR, Elasticsearch, EVTX分析, Go, Ruby工具, Sigma规则, Terraform, 威胁检测, 安全信息与事件管理, 安全关联分析, 安全运营, 扫描框架, 搜索引擎爬取, 数据规范化, 日志审计, 目标导入, 端点安全, 网络安全, 脆弱性评估, 补丁管理, 请求拦截, 隐私保护