alvinarc/Amelix-Open-Source-SIEM
GitHub: alvinarc/Amelix-Open-Source-SIEM
Amelix 是一个集成了防火墙和入侵检测防御能力的开源 SIEM 平台,通过动态 MITRE ATT&CK 盲区分析实现检测覆盖的持续优化和闭环防御。
Stars: 0 | Forks: 0
# Amelix
**Amelix** 是一个开源的安全信息与事件管理 (SIEM) 平台,
集成了防火墙 (nftables)、入侵检测/防御 (Suricata),以及一个
**动态的 MITRE ATT&CK 用例生成器**,该生成器会根据你当前的覆盖盲区持续推荐新的检测
规则。
**新来的?** [GETTING_STARTED.md](GETTING_STARTED.md) 是从全新的代码库检出到在屏幕上确认
告警正常运行的最快路径。
## 为什么选择 Amelix
大多数开源 SIEM 只是为你提供一个倾倒日志并手动编写检测
内容的地方。Amelix 添加了大多数技术栈开箱即用所缺乏的两点:
1. **闭环防御** — 来自关联引擎的告警可以触发真实的
防火墙 (nftables) 和 IDS/IPS (Suricata) 动作,而不仅仅是仪表盘上的提示。
2. **MITRE ATT&CK 盲区分析器/生成器** — Amelix 不是使用静态的规则包,而是
追踪你实际拥有检测覆盖的 ATT&CK 技术(基于加载到关联
引擎中的规则),并为你未覆盖的技术生成 Sigma 风格的用例草稿,
根据你选择的威胁画像(例如勒索软件、云凭证窃取、内部威胁)进行优先级排序。
## 架构
```
┌─────────────────────┐
agents/syslog ───▶ │ ingestion (Go) │──▶ Redis Streams ──▶ OpenSearch (raw logs)
Suricata eve.json ▶ │ normalize + enrich │
└─────────┬────────────┘
│ normalized events
▼
┌─────────────────────┐ ┌─────────────────────────┐
│ correlation (Go) │◀──────▶│ mitre-generator (Python) │
│ rule engine + MITRE │ │ ATT&CK coverage + Sigma │
│ tagging, alerting │ │ use-case generation │
└───────┬─────────┬────┘ └─────────────────────────┘
│ │
alerts/events │ │ block / drop / rate-limit actions
▼ ▼
┌───────────┐ ┌─────────────────────┐ ┌──────────────────────┐
│ Postgres │ │ firewall-manager(Go) │ │ ids-manager (Go) │
│ (alerts, │ │ wraps nftables │ │ wraps Suricata │
│ cases) │ └─────────────────────┘ │ (rules + suricatasc) │
└─────┬─────┘ └──────────────────────┘
│
▼
┌─────────────────┐
│ api-gateway (Go)│──▶ frontend (React/TS dashboard)
└─────────────────┘
```
## 组件
| 服务 | 语言 | 角色 |
|---|---|---|
| `services/ingestion` | Go | Syslog (UDP) + HTTP/JSON 收集器,agent API-key 认证 + 上线注册,标准化,发布到 Redis Streams 并索引到 OpenSearch |
| `services/agent` | Go | 安装在上线机器上的轻量级进程:追踪日志文件,转发至 ingestion,发送心跳 |
| `services/correlation` | Go | 有状态/无状态规则引擎,MITRE 技术标记,告警生成,分发防御动作 |
| `services/mitre-generator` | Python | 加载 MITRE ATT&CK Enterprise 数据,计算相对于已加载规则的覆盖率,针对盲区生成新的 Sigma 风格检测用例 |
| `services/firewall-manager` | Go | 围绕 `nftables` 的轻量级、可审计封装,用于动态封禁/允许/限速规则 |
| `services/ids-manager` | Go | 管理 Suricata 规则文件,通过 `suricatasc` 控制运行实例,将 `eve.json` 追踪进入 pipeline |
| `services/api-gateway` | Go | 为前端和外部集成提供 REST API + 认证 |
| `frontend` | React/TypeScript | 告警分诊,MITRE 覆盖热力图,防火墙/IDS 规则管理 UI |
原始日志存入 **OpenSearch**(按日期滚动的 `amelix-logs-*` 索引)用于
搜索/保留;结构化告警存入 **Postgres**;Postgres 中的 **agents**
表是机器上线注册表。有关完整的上线演练
和示例日志查询,请参见
[docs/onboarding.md](docs/onboarding.md)。
## Amelix Proxy(可选,可独立运行)
`services/ai-proxy` + `services/ai-proxy-cli` 是一个独立的轻量级
正向代理(类似于 Squid),带有 GUI 和 CLI,它会记录流量并
定期让 Claude 总结活动、标记可疑模式,
并建议添加黑名单 — 外加按需的“解释此
连接”查询。它**不会**解密 HTTPS(无 TLS 拦截)—
有关完整的演练、范围边界说明,以及如何选择性地将其日志
转发到主 Amelix SIEM,请参见 [docs/ai-proxy.md](docs/ai-proxy.md)。有关从零开始编译和
部署它(包括 SQLite 存储的工作原理),请参见
[services/ai-proxy/RUNNING.md](services/ai-proxy/RUNNING.md)。有关 GUI 和 CLI 中
每个功能的逐步演练,请参见
[services/ai-proxy/USAGE.md](services/ai-proxy/USAGE.md)。
## 为什么选择这个技术栈
- **Go** 用于关键路径上的任何事物(ingestion、关联、防火墙/IDS 控制) —
低开销并发,单一静态二进制文件,易于容器化和审计
(对于安全产品至关重要)。
- **Python** 用于 MITRE 生成器 — ATT&CK 生态系统(STIX bundles、`mitreattack-python` 风格的
工具、Sigma 规则约定)是 Python 优先的,并且该组件属于
分析/生成,而非关键路径。
- **Postgres** 用于告警/案例管理(关系完整性,易于进行案例管理的关联查询)。
- **OpenSearch** 用于原始日志存储/搜索(专为此构建;还通过 OpenSearch Dashboards 免费为你提供类似 Kibana 的
仪表盘)。
- **Redis Streams** 作为 ingestion 和关联之间的事件总线 — 易于运行,
如果你需要多节点吞吐量,可在 `docker-compose.yml` 中替换为 Kafka/NATS。
## 快速开始
```
cp .env.example .env
docker compose up --build
```
这将启动:Postgres、OpenSearch(+ Dashboards)、Redis、ingestion、关联、
mitre-generator、firewall-manager、ids-manager(需要 `--privileged`/`NET_ADMIN` 和
真实的 Suricata 安装 — 参见 `docs/architecture.md`)、api-gateway 和 frontend。
有关本地逐步演练(发送测试事件、上线
机器、生成 MITRE 用例),请参见 [RUNNING.md](RUNNING.md)。有关 GUI 仪表盘和通过 CLI
(针对 API 的 curl)进行每项功能的全面
演练,请参见 [USAGE.md](USAGE.md)。要将此扩展
超越单一开发主机 — TLS、密钥、真实的边界
执行、HA 注意事项、上线检查清单 — 请参见
[docs/PRODUCTION.md](docs/PRODUCTION.md),以及用于到达该状态的
直接可复制粘贴的命令,请参见 [docs/CONFIGURATION.md](docs/CONFIGURATION.md)。
如果某些功能无法正常工作,[docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)
将逐步梳理 pipeline 以找出问题所在。
发送测试事件:
```
curl -X POST http://localhost:8080/ingest -H 'Content-Type: application/json' -d '{
"source": "test",
"event_type": "auth_failure",
"src_ip": "203.0.113.5",
"user": "admin",
"message": "Failed SSH login"
}'
```
为专注于勒索软件的威胁画像生成 MITRE 用例:
```
curl -X POST http://localhost:8090/generate \
-H 'Content-Type: application/json' \
-d '{"profile": "ransomware", "max_use_cases": 10}'
```
## 仓库结构
```
amelix/
├── docker-compose.yml
├── services/
│ ├── ingestion/
│ ├── correlation/
│ ├── mitre-generator/
│ ├── firewall-manager/
│ ├── ids-manager/
│ └── api-gateway/
├── frontend/
├── deploy/systemd/
├── scripts/
└── docs/architecture.md
```
## 许可证
Apache License 2.0 — 参见 [LICENSE](LICENSE)。欢迎贡献。
## 作者
Adl Arc
## 安全提示
Amelix 的 firewall-manager 和 ids-manager 执行特权主机操作
(`nft`、`suricatasc`)。请在锁定容器中运行它们,仅授予其所需的特定
权限(`CAP_NET_ADMIN`),切勿以不受限制的 root 进程运行,并
在将 API 网关暴露到 localhost 之外之前,将其置于适当的 authn/authz 之后。
标签:Go, Metaprompt, Ruby工具, 安全运营, 扫描框架, 搜索引擎查询, 日志审计, 测试用例, 请求拦截, 逆向工具, 防火墙