安全运营中心平台

MatchBox是一个专业级的家庭安全运营中心(SOC),运行在轻量级Kubernetes上,专为Mac Mini M4设计,提供SOPS加密、CA验证TLS和默认拒绝网络等功能。

  • by ajokunu
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 ajokunu/MatchBox

使用说明

火柴盒

一个在轻量级Kubernetes上运行的专业级家庭SOC(安全运营中心),专为Mac Mini M4(16GB RAM)设计。SOPS加密的秘密、CA验证的TLS、默认拒绝网络和CI门控的TypeScript代码库——旨在部署,而不仅仅是令人钦佩。

里面有什么

组件 角色 为什么
瓦祖4.14.3 SIEM/XDR 日志收集、威胁检测、文件完整性监控、漏洞扫描
OpenCTI 6.9.5 威胁情报 MITRE ATT&CK映射、IOC管理、威胁馈送聚合
蜂巢+皮质 事件响应 案例管理、自动分析(VirusTotal、AbuseIPDB等)
格拉法纳 监控 SOC仪表板、集群健康状况、合规性可视化
k3s (利马) Kubernetes 所有组件的轻量级编排
MCP服务器 AI集成 Claude Code可以直接查询警报、案例和威胁情报

组件版本、端口和计数在以下方面具有权威性 docs/VERSIONS.md --其他文档遵循它,这样数字就不会漂移。

快速开始

整个生命周期被包裹在 Makefile (make help 列出所有内容)。

先决条件

  • macOS配备苹果Silicon(M1/M2/M3/M4)、Homebrew、16GB+RAM、60GB+可用磁盘
  • brew install lima kubectl helm sops age

部署(仅限最低限度的Wazuh——经过验证的RAM光路)

make up            # start the Lima VM + k3s (minimal: 6GiB / 2 CPU)
make secrets-init  # generate an age key (outside the repo) + encrypt secrets.yaml -> secrets.enc.yaml
make certs         # openssl PKI: root CA + node/admin/dashboard certs (0 extra RAM, no cert-manager)
make deploy        # SOPS-decrypt secrets, install OpenSearch, deploy Wazuh manager + dashboard

然后到达Wazuh仪表板(端口5601仅用于环回,因此端口转发它):

kubectl port-forward -n wazuh svc/wazuh-dashboard 5601:5601   # open https://localhost:5601

这个脚印是 约3GB 在VM中,主机的16GB中有约10GB可用于其他工作。

全栈(TheHive+OpenCTI+Grafana+ingress)

scripts/deploy-stack.sh all 通过Helm显示每个组件,并通过以下方式公开它们 Traefik在 soc.homelab.local (添加 127.0.0.1 soc.homelab.local 到 /etc/hosts).看 docs/runbooks/initial-setup.md 对于订购的runbook, 证书和OpenSearch/Filebeat陷阱。

make teardown      # tear the stack down (Lima VM stays); `make down` stops the VM
make test          # end-to-end smoke test (scripts/test-flow.sh)

安全与加固

MatchBox构建失败,关闭并审核(206发现审查→ 已在v1.6.0/v1.7.0版本中修复):

  • 秘密:SOPS+年龄加密(secrets.enc.yaml 是真理的可靠来源;明文 secrets.yaml 被忽视)。机密参考已失败关闭(否 optional: true),因此缺少凭据会阻止启动(CreateContainerConfigError)而不是空白启动。
  • PKI/TLS:自签名CA(scripts/generate-certs.sh,0 RAM)发出所有内部证书;OpenSearch HTTP仅支持HTTPS,每个消费者都信任SOC CA(否 NODE_TLS_REJECT_UNAUTHORIZED=0,没有 tlsSkipVerify).OpenSearch配置了 定制 internal_users.yml (真实的bcrypt管理员密码通过 scripts/setup-opensearch-users.sh,不是图表默认值)。
  • 网络:34网络策略--默认拒绝入口 和 每个命名空间的出口+作用域允许规则。Pod安全标准标签(restricted 除了 privileged Wazuh代理命名空间)。
  • 代理:基于密码的注册(authd use_password),坚持 client.keys.
  • 仪表盘:服务器端 /api/* 代理需要身份验证(没有未经身份验证的SOC数据);凭据永远不会到达浏览器。
  • 供应链:固定图表 --versions和图像标签;GitHub操作运行 gitleaks,git历史上已经抹去了之前提交的秘密。

MCP服务器集成

三个自定义MCP服务器允许Claude Code与SOC交互。警报/漏洞包括 阅读Wazuh 索引器 (_search),来自服务器API的代理/规则/解码器:

"Show me all critical Wazuh alerts from the last 24 hours"
"Create a TheHive case for the brute-force attack on 192.168.1.50"
"What MITRE ATT&CK techniques are associated with this IP?"

在项目中注册它们 .claude/settings.json (env引用了secrets,从不内联)。看 docs/mcp-servers.md.

仪表盘

这 MatchBox SOC指挥中心 是一个SvelteKit仪表板,它将所有5项服务统一到一个具有实时监控功能的窗格中。

cp dashboard/.env.example dashboard/.env   # set service URLs/creds + NODE_EXTRA_CA_CERTS (SOC CA) + SOC_API_TOKEN
kubectl port-forward -n monitoring svc/monitoring-grafana 3000:80 &   # for embedded Grafana panels
cd dashboard && npm install && npm run dev -- --port 5173            # http://localhost:5173
  • 服务概览 --Wazuh、Grafana、OpenCTI、TheHive、Cortex的健康+关键指标(空与零状态)
  • 实时监控 --带有主题同步的嵌入式Grafana仪表板
  • Wazuh详图 --警报细分、代理状态、CIS基准SCA合规性
  • 日光主题 --在应用程序和嵌入式Grafana中同步亮/暗切换

发展

npm workspaces monorepo(共享MCP库+3台服务器+仪表板)。CI通过以下方式反映这些 .github/workflows/ci.yml:

make build   # build all workspaces (shared first)
make ci      # build + typecheck + Vitest + Biome + svelte-check (mirrors GitHub Actions)
make lint    # Biome check (lint + format)
make test    # end-to-end cluster smoke test (scripts/test-flow.sh; needs a running stack)

节点 >=20.Lint/格式通过 生物群系;清单已通过验证 kubeconform;外壳 shellcheck;秘密扫描 gitleaks.

文档