使用说明
火柴盒
一个在轻量级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除了privilegedWazuh代理命名空间)。 - 代理:基于密码的注册(
authduse_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.
