alvinarc/Amelix-Open-Source-SIEM

GitHub: alvinarc/Amelix-Open-Source-SIEM

Amelix 是一个集成了防火墙和入侵检测防御能力的开源 SIEM 平台,通过动态 MITRE ATT&CK 盲区分析实现检测覆盖的持续优化和闭环防御。

Stars: 0 | Forks: 0

Amelix logo

# 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工具, 安全运营, 扫描框架, 搜索引擎查询, 日志审计, 测试用例, 请求拦截, 逆向工具, 防火墙