开源也能做企业级 XDR/SIEM:拆解 Wazuh 的 Agent-Server-Indexer-Dashboard 四件套与 Docker 落地
中小团队想上安全监控,常见两条路:买商业 SIEM(授权贵、二次开发慢),或自己拼 ELK + 一堆脚本(能跑,但规则、合规报表、Agent 生命周期全靠人肉)。Wazuh(wazuh/wazuh,GPLv2)走第三条路:把 端点 Agent + 分析服务器 + 索引存储 + 可视化控制台收成一套开源 XDR/SIEM 平台,覆盖日志分析、入侵检测、文件完整性(FIM)、漏洞发现、配置评估(SCA)、主动响应与合规看板。
本文按官方文档与 wazuh/wazuh-docker v4.14.8 编排深度改写——源微信页常遇验证码时,以 documentation.wazuh.com 与仓库为准,不臆造能力。

一、它到底解决什么问题?
安全团队每天面对的不是「缺不缺日志」,而是:
1. 采集散:主机、容器、云 API、网络设备各说各话;
2. 分析断:有日志没规则,或规则有了却对不上资产与 CVE;
3. 响应慢:发现异常后还要手工改防火墙、查进程;
4. 合规虚:PCI DSS / GDPR / CIS 等要求报表,临时 Excel 对不上审计。
Wazuh 的定位是:轻量多平台 Agent 采集 + 中心 Manager 解码规则化告警 + Indexer 近实时检索 + Dashboard 运营与合规视图。它继承自 OSSEC 一脉,但已经演进成含漏洞情报关联、云与容器可见性、集群扩展的完整平台。
| 能力域 | Agent / 中心侧职责 | 典型产出 |
|---|---|---|
| 日志分析 | Agent 读 OS/应用日志;也可 Syslog 无 Agent 接入 | 规则命中告警、误配与策略违规提示 |
| 入侵检测 | 端点异常扫描 + 服务器签名/正则引擎 | Rootkit、隐蔽进程、可疑监听等线索 |
| 文件完整性 FIM | 监控内容/权限/属主变化并关联用户与进程 | 关键路径变更审计 |
| 漏洞检测 | Agent 库存(syscollector)→ Server 关联 CVE 源 | 脆弱软件清单与修复优先级 |
| 配置评估 SCA | 周期性对照加固基线 | 不合规项与整改建议 |
| 主动响应 | 满足条件时阻断源、远程取证命令 | 缩短「发现→处置」窗口 |
| 云与容器 | 云 API 拉取 + Docker 引擎集成 | 特权容器、镜像/卷异常等 |
📌 边界:Wazuh 是检测与响应平台,不是「一键免疫」。规则质量、资产覆盖率与告警运营流程,仍决定最终效果。
二、四组件架构与数据流

官方「Agent → Server → Indexer → Dashboard」模型可以画成:

1. Wazuh Agent
部署在笔记本、服务器、云主机、虚拟机;支持 Linux / Windows / macOS 等。职责包括日志转发、FIM、库存采集、SCA、与 Docker 引擎集成(容器可见性)等。通信默认走 TCP 1514(可配),注册走 TCP 1515。
⚠️ 容器化 Agent 的坑:把 Agent 跑在 Docker 里很方便做集成/Syslog,但默认看不到宿主机真实进程与文件系统。要监控宿主机,需挂载必要路径(如
/var/log、/var/run/docker.sock),否则看板里只是「容器视角」。
2. Wazuh Server(Manager)
中心分析与 Agent 管理:enrollment、连接鉴权加密、Analysis engine(解码器 + 规则)、REST API(默认 55000)、集群 daemon。单机可扛成百上千 Agent,也可水平扩展成 Manager 集群。
3. Wazuh Indexer
基于 OpenSearch 一脉的全文检索与分析引擎,存告警与事件 JSON,近实时可搜。Dashboard 主要向它查可视化数据;Server 通过 Filebeat 等以 TLS 写入(常见 9200)。
4. Wazuh Dashboard
运营入口:威胁狩猎、合规模块(PCI DSS、GDPR、CIS、HIPAA、NIST 800-53 等)、漏洞、FIM、SCA、云事件,以及 Agent/集群状态管理。它连 Indexer 取数据,连 Server API 做管理。
关键端口速查:
| 端口 | 方向 | 用途 |
|---|---|---|
| 1514/TCP | Agent → Server | 事件上报(默认可) |
| 1515/TCP | Agent → Server | Agent 注册 |
| 55000/TCP | Dashboard/CLI → Server | 管理 REST API |
| 9200/TCP | Server/Dashboard → Indexer | 索引与查询 |
| 443→5601 | 用户 → Dashboard | Web 控制台(Docker 单节点常见映射) |
三、能力深挖:FIM、漏洞、SCA 与主动响应

文件完整性(FIM)
对关键路径做内容与元数据监控,并能关联「谁改的、哪个进程改的」。配合威胁情报,可把「系统文件被改」提升为「疑似沦陷」线索;PCI 等合规也常要求 FIM。
漏洞检测
两段式:
1. Agent 侧 syscollector 周期性采集软件包/OS/端口等库存;
2. Server 侧将库存与持续更新的 CVE 源(含 CTI 服务相关能力)关联,生成可修复清单。
这不是替代补丁管理系统,而是让「哪台机器还挂着高危包」对运营可见。
配置评估(SCA)
按策略/加固指南扫描错误配置,告警可带整改建议与合规映射。可按组织基线定制检查项。
主动响应与合规
命中规则后可自动执行阻断类动作,或远程下发查询辅助取证。Dashboard 把控制能力映射到合规报表,减少「审计前两周狂补材料」。
四、Docker 单节点落地:官方推荐路径(v4.14.8)
官方仓库:wazuh/wazuh-docker。Single-node 把 manager / indexer / dashboard 各跑一个容器,适合试验与中小规模;Multi-node 才是 500+ Agent、高可用方向。
主机门槛(写进变更单)
- 架构:AMD64 或 ARM64;
- CPU ≥ 4 核,内存 ≥ 8GB,磁盘 ≥ 50GB(单节点);多节点更高;
- Linux 内核需:
# 官方强制:Indexer 需要足够的 mmap 区域
sysctl -w vm.max_map_count=262144
# 持久化请写入 /etc/sysctl.conf
不设够 vm.max_map_count,Indexer 容易启动失败或中途崩溃。
证书与启动
git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.8
cd wazuh-docker/single-node
# 生成栈内 TLS 证书(可用官方 generator 镜像)
docker compose -f generate-indexer-certs.yml run --rm generator
# 拉起三件套
docker compose up -d
浏览器访问 https://<DOCKER_HOST_IP>。自签证书会有浏览器告警,属预期。默认仪表盘账号以官方 compose 为准——上线后立刻改密,勿把演示口令带进生产。
启动期 Dashboard 反复连 Indexer 9200 失败、Wazuh dashboard server is not ready yet 很常见;Indexer 冷启动大约一分钟量级,属正常抖动。
⚠️ 不要在同一 Docker 主机同时跑 single-node 与 multi-node:容器名、端口、卷会冲突,甚至数据损坏。
本机结构存证(未拉起全栈)
为避免与流水线争抢内存,本轮对官方 v4.14.8 single-node/docker-compose.yml 做结构校验(镜像与端口映射真实存在):
contains[wazuh/wazuh-manager:4.14.8]=True
contains[wazuh/wazuh-indexer:4.14.8]=True
contains[wazuh/wazuh-dashboard:4.14.8]=True
contains[1514:1514]=True
contains[1515:1515]=True
contains[55000:55000]=True
contains[9200:9200]=True
contains[443:5601]=True
HOST_REQ: vm.max_map_count>=262144
HOST_REQ: single-node 至少 4核/8GB RAM/50GB 磁盘
Agent 侧最小环境变量思路(官方 agent 镜像):
services:
wazuh.agent:
image: wazuh/wazuh-agent:4.14.8
environment:
- WAZUH_MANAGER=<MANAGER_IP>
# 可选:WAZUH_REGISTRATION_PASSWORD / WAZUH_AGENT_GROUP
volumes:
- ./config/wazuh-agent-conf:/wazuh-config-mount/etc/ossec.conf
# 若要监控宿主机,再按需挂载 /var/log、docker.sock 等
兼容性铁律:Manager 版本 ≥ Agent 版本。
五、生产避坑清单
1. 资源低估:Indexer 吃内存与磁盘;把试验机 2GB 硬刚单节点,基本是自虐。
2. 证书与改密:演示栈自签 + 默认口令,公网裸奔等于请人扫。

3. Agent 覆盖率:只装跳板机 = 看板假繁荣;按业务域分组(WAZUH_AGENT_GROUP)更利于运营。
4. 规则与噪声:默认规则要本地调优,否则告警疲劳;主动响应务必白名单,避免误封办公出口。
5. 配置持久化:改 /var/ossec/etc/ossec.conf 应走官方挂载的 host 配置文件,容器重建才不丢。
6. 无 Agent 设备:防火墙/交换机用 Syslog 接入时,记得时区与解析器,否则规则全空窗。
7. 安全合规表述:平台「提供控件与报表能力」≠「自动拿到认证」;审计仍看你的流程与证据链。
⚠️ 本文只讨论合法部署与防御向安全监控,不提供攻击利用、漏洞武器化或绕过防护的步骤。
六、小结
Wazuh 把「采集—分析—存储—可视化—合规」收成可私有化的开源 XDR/SIEM 底座。对想摆脱纯商业授权、又不想从零拼 ELK 的团队,Docker 单节点是最低摩擦的实验入口;真正上生产,再按 Agent 规模走向多节点、改密、持久化与规则治理。
仓库与文档:
- 平台源码:github.com/wazuh/wazuh
- Docker 编排:github.com/wazuh/wazuh-docker
- 官方文档:documentation.wazuh.com
💻 配套实训环境与动手练习
本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验: