solomonneas/soc-stack

GitHub: solomonneas/soc-stack

这是一个一键部署完整安全运营中心(SOC)的工具包,集成了多种安全工具并自动化配置,解决了手动部署复杂性的难题。

Stars: 1 | Forks: 0

SOC Stack deployment launch bay banner

SOC 堆栈

用于构建完整安全运营中心的一键 Proxmox 安装程序。

Proxmox VE LXC Wazuh TheHive and Cortex MISP Zeek and Suricata MCP servers Docker Compose stacks Bash installers MIT License

在 Proxmox 主机上运行一条命令(或让代理执行),大约 30 分钟后,您将获得 Wazuh (SIEM)、TheHive + Cortex (案件管理 + SOAR)、MISP (威胁情报)、Zeek + Suricata (NSM + IDS)、自定义仪表板以及 9 个相互连接并通信的 MCP 服务器。默认非交互式。幂等设计。为代理提供 JSON 输出。专为复制部署而构建。 ## 快速开始 **完整堆栈**(所有组件,合理默认配置): ``` curl -sSL https://raw.githubusercontent.com/solomonneas/soc-stack/main/install.sh | sudo bash ``` **自定义子集:** ``` curl -sSL https://raw.githubusercontent.com/solomonneas/soc-stack/main/install.sh | sudo bash -s -- \ --components wazuh,thehive-cortex,misp \ --preset standard \ --bridge vmbr0 --storage local-lvm ``` **代理驱动**(完全非交互式,结构化输出): ``` curl -sSL https://raw.githubusercontent.com/solomonneas/soc-stack/main/install.sh | sudo bash -s -- \ --components all \ --preset minimal \ --bridge vmbr0 --storage local-lvm --ip-mode dhcp \ --json-out /root/soc-stack.json \ --mcp-config-out /root/mcp-clients.json ``` 安装后: - `/root/soc-stack.json` 列出了每个组件及其 LXC VMID、IP、端口、端点和轮换后的凭据。 - `/root/mcp-clients.json` 是一个可直接粘贴的 `mcpServers` 配置块,适用于 Claude Desktop、OpenClaw 或任何 MCP 客户端。 - `/var/lib/soc-stack/state/` 包含用于幂等重新运行的按组件状态文件。 - `/var/lib/soc-stack/secrets/` 包含所有生成的凭据(模式 0600,仅限 root),用于审计恢复。 使用 `--force` 重新运行相同命令以重新部署已完成的组件,或使用 `--components <组件名>` 向现有安装添加单个组件。 ## 组件 | 组件 | 服务 | LXC 预设(最小) | 端口 | |---|---|---|---| | **wazuh** | Wazuh Manager, Indexer, Dashboard | 2 vCPU, 2 GB RAM, 30 GB | 443, 1514, 1515, 55000 | | **thehive-cortex** | TheHive 5.4, Cortex 3.1.8, Elasticsearch 7.17, Cassandra 4.1 | 2 vCPU, 4 GB RAM, 30 GB | 9000, 9001 | | **misp** | MISP, MariaDB 10.11, Redis 7, misp-modules | 1 vCPU, 2 GB RAM, 20 GB | 443 | | **zeek-suricata** | Zeek (NSM), Suricata (IDS/IPS) | 1 vCPU, 2 GB RAM, 20 GB | 47760 | | **dashboards** | Bro Hunter + Playbook Forge (nginx 后端) | 1 vCPU, 1 GB RAM, 10 GB | 80, 5174, 5177 | | **mcp** | 9 个 MCP 服务器 (wazuh, thehive, cortex, misp, zeek, suricata, mitre, rapid7, sophos),通过 `mcp-proxy` 封装为 SSE | 1 vCPU, 1 GB RAM, 10 GB | 3001-3009 | 每个组件在其专属的 LXC 中运行。组件可以独立部署或一起部署。编排器处理 VMID 分配、网络设置、幂等性和跨组件集成布线。 ## 跨组件集成 所有组件部署后自动配置: - **Wazuh → TheHive**: Wazuh 级别 8+ 的告警通过自定义 Python 集成 (`/var/ossec/integrations/custom-thehive.py`) 作为告警转发到 TheHive。 - **TheHive ↔ Cortex**: TheHive 的 Cortex 连接器使用组织范围内的 API 密钥指向本地 Cortex。 - **MISP → Suricata**: 每小时 cron 任务从 MISP 的 `restSearch` 端点拉取 Snort/Suricata 规则到 Suricata 的 update.d 目录。 - **Zeek → Wazuh**: Wazuh 代理在 zeek-suricata LXC 中运行,并将 conn.log、dns.log、http.log、ssl.log、notice.log 转发到 Wazuh 管理器。 - **MCP 服务器 ← 所有对等节点**: 每个 MCP 服务器的环境文件都填充了其对应工具的 URL 和来自对等节点状态的 API 密钥。 ## 状态 **v1.0.0**(当前版本,2026-05-16):所有 6 个组件 + 5 个跨组件集成已在 Proxmox VE 上端到端验证。自托管 CI 在每个 PR 上运行(shellcheck、bats、清单验证、按组件集成矩阵)并在合并到 main 时运行(全栈集成)。完整历史请参见 [更新日志](CHANGELOG.md)。 ## 代理友好契约 设计用于让 AI 代理能够通过 SSH 登录到 Proxmox 主机并一键部署 SOC。完整的代理接口: - 在 `curl | sudo bash` 下**标准输入关闭**;安装程序自动检测此情况并启用 `--non-interactive` 模式。每个提示都变为一个标志,每个默认值都变为一个答案。 - **退出代码**稳定:0 = 成功,1 = 预检(主机问题),2 = 验证(标志问题),3 = 组件失败,4 = 集成失败,5 = 混合状态。 - **结果 JSON 模式**记录在 [`docs/superpowers/specs/2026-05-15-soc-stack-unification-design.md`](docs/superpowers/specs/2026-05-15-soc-stack-unification-design.md) 中。 - **幂等性**:使用相同标志重新运行时,如果一切均已部署(状态中 `status: "deployed"`),则几秒钟内退出。`--force` 触发重新部署。 - **清单模式**:无需使用数十个标志,而是编写一个 JSON 清单并传递 `--manifest <路径>`。CLI 标志会覆盖清单中的各个字段。 ## 标志参考 ``` --components LIST CSV of components or "all" (default: all) --preset NAME minimal | standard | production (default: standard) --bridge NAME Proxmox bridge (default: vmbr0) --storage NAME Storage pool (default: auto-detect) --ip-mode MODE dhcp or static (default: dhcp) --ip-range CIDR Required if --ip-mode=static (e.g., 10.0.50.10/24) --vlan TAG Optional VLAN tag --vmid-start N First VMID to allocate (default: next free) --manifest PATH JSON manifest (alternative to flags) --state-dir PATH State directory (default: /var/lib/soc-stack) --json-out PATH Result JSON path (default: /root/soc-stack.json) --mcp-config-out PATH MCP client config (default: /root/mcp-clients.json) --log-file PATH Install log (default: /var/log/soc-stack-install.log) --dry-run Validate + plan only, no deploy --force Redeploy components already marked deployed --no-integrate Skip cross-component wiring phase --non-interactive Hard-fail on prompts (auto when stdin is not a TTY) --version Print version and exit ``` ## 仓库结构 ``` soc-stack/ ├── install.sh # repo-root wrapper for curl|bash ├── scripts/ │ ├── install.sh # orchestrator (~430 lines) │ ├── lib/ # 8 shared bash modules (bats-tested) │ │ ├── logging.sh │ │ ├── secrets.sh │ │ ├── json-out.sh │ │ ├── idempotency.sh │ │ ├── network.sh │ │ ├── manifest.sh │ │ ├── preflight.sh │ │ └── lxc.sh │ └── components/ │ ├── wazuh/ # manifest.jsonc + 5 scripts per component │ ├── thehive-cortex/ │ ├── misp/ │ ├── zeek-suricata/ │ ├── dashboards/ │ └── mcp/ # 9 MCP servers + mcp-proxy SSE bridge ├── tests/ │ ├── unit/ # 78 bats tests, mocked Proxmox binaries │ └── integration/ # per-component + cross-component assertions ├── docs/ │ ├── superpowers/ │ │ ├── specs/ # design specs │ │ └── plans/ # implementation plans │ ├── gotchas.md │ ├── adding-a-stack.md # to be renamed adding-a-component.md in v1.0.0 │ └── architecture/ ├── playbooks/ # incident response playbooks ├── cases/ # case study evidence └── mcp-servers/ └── README.md # index of the 9 MCP servers (each in its own repo) ``` ## 工作原理 每个组件都是 `scripts/components/<名称>/` 下的一个自包含文件夹,具有固定的接口: | 文件 | 运行位置 | 用途 | |---|---|---| | `manifest.jsonc` | (声明性) | 预设、端口、依赖项、提供项 | | `lxc-spec.sh` | Proxmox 主机 | 根据预设输出 `pct create` 标志 | | `deploy.sh` | LXC 内部 | 幂等安装程序;写入状态 JSON | | `verify.sh` | LXC 内部 | 健康检查;健康则退出 0 | | `integrate.sh` | Proxmox 主机 | 将此组件连接到对等节点(读取对等节点状态) | | `destroy.sh` | Proxmox 主机 | 拆除 LXC + 状态 | 编排器 (`scripts/install.sh`) 仅通过此接口与组件通信。添加新组件只需放入一个新文件夹;无需更改其他内容。 `/var/lib/soc-stack/state/<名称>.json` 中的状态文件是幂等性的事实来源。重新运行 `install.sh` 会检查每个组件的状态并跳过任何已部署的组件(除非使用 `--force`)。失败时,状态文件记录 `status: "failed"` 和一个 `error` 字符串;编排器继续处理剩余的独立组件并报告混合状态退出代码 5。 ## 前置条件 - Proxmox VE 7.x 或 8.x 或 9.x 主机 - Proxmox 主机的 root 访问权限 - 一个桥接网络(默认:`vmbr0`)和一个存储池(默认:自动检测,回退到 `local-lvm`) - 安装程序下载需要出站 HTTPS(Docker、Wazuh 安装程序、MCP 服务器仓库等) - 完整堆栈使用 `--preset minimal` 时需要约 12 GB 可用内存和约 150 GB 可用磁盘 如果缺少,安装程序会自动安装 `jq`、`curl`、`wget` 和 `openssl`。 ## 操作 **重新运行单个组件:** ``` sudo bash install.sh --components misp --force ``` **仅重新运行集成阶段(修复对等节点后):** ``` sudo bash install.sh --components all --no-integrate=false ``` **验证而不部署:** ``` sudo bash install.sh --components all --dry-run ``` **拆除所有内容:** ``` for comp in mcp dashboards zeek-suricata misp thehive-cortex wazuh; do sudo bash scripts/components/${comp}/destroy.sh done ``` ## 添加新组件 请参阅 [docs/adding-a-stack.md](docs/adding-a-stack.md) 了解组件契约演练,以及 [docs/superpowers/specs/2026-05-15-soc-stack-unification-design.md](docs/superpowers/specs/2026-05-15-soc-stack-unification-design.md) 了解完整设计。 ## 许可证 MIT
标签:Docker Compose, Hyper-V, meg, Metaprompt, NIDS, NSM, Proxmox, SOAR, SOC部署, Windows内核驱动, 一键安装, 信息安全, 威胁情报, 安全响应, 安全运营中心, 容器化, 工具包, 幂等性, 应用安全, 开发者工具, 无人值守, 版权保护, 特权提升, 网络安全, 网络映射, 自动化部署, 虚拟化技术, 隐私保护, 集群部署, 非交互式