Wazuh Manager 备份与恢复:client.keys、global.db 和共享配置怎么备份?
【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh
当你需要升级 Wazuh Manager、做重大配置变更,或者单纯为灾难恢复留后路时,必须先备份 Manager 上的关键数据。Wazuh 官方备份文档(backup-restore)列出的核心对象包括:/var/wazuh-manager/etc/client.keys(所有已注册 agent 的加密密钥)、/var/wazuh-manager/var/db/global.db(agent 注册信息、元数据与分组归属),以及/var/wazuh-manager/etc/shared/下的各 agent 组共享配置目录。三者缺任何一个,恢复后 agent 都可能出现身份丢失或配置漂移。
本文只覆盖 Linux 上的 Wazuh Manager 单机场景:如何备份这三项数据、如何校验备份完整性、以及如何恢复。集群部署的差异在文末单独说明。
备份前确认三件事
按文档的 Pre-Backup Checklist,创建备份前确认:
- 备份目标位置有足够磁盘空间;
- 备份目标位置可访问;
- 你对备份命令有相应权限(命令均使用
sudo)。
文档还指出可以「考虑停止 Manager 以获得一致性的备份(可选)」:如果追求完全一致的数据快照,使用后文的「停止服务备份」变体;否则推荐在生产环境使用不停机方式。
备份哪些文件
| 数据 | 路径 | 作用 |
|---|---|---|
| 主配置 | /var/wazuh-manager/etc/wazuh-manager.conf | Manager 主配置文件 |
| 内部选项 | /var/wazuh-manager/etc/wazuh-manager-internal-options.conf | 内部配置覆盖项 |
| Agent 密钥 | /var/wazuh-manager/etc/client.keys | 注册 agent 的加密密钥,agent 通信的关键 |
| 证书 | /var/wazuh-manager/etc/certs/ | Manager 证书、私钥与根 CA |
| 全局数据库 | /var/wazuh-manager/var/db/global.db | agent 注册信息、分组分配数据 |
| 共享配置 | /var/wazuh-manager/etc/shared/ | 各组的agent.conf与分发给 agent 的共享文件 |
其中共享配置目录按 agent 组组织,每个组一个子目录,例如/var/wazuh-manager/etc/shared/default/agent.conf(所有 agent 默认属于default组)。这些文件会被 Manager 自动分发给组内 agent,详见 agent 组文档与集中配置文档。
日志目录/var/wazuh-manager/logs/属于可选备份项:文件可能很大,文档建议按保留策略处理,本文不将其纳入主备份。
主路径:不停机备份
以下命令来自官方文档的 Option 1(推荐用于生产环境,备份期间 Manager 继续运行)。命令中的BACKUP_DIR指向备份目标目录,示例使用/backup/下的时间戳目录,如果你的备份位置不同,替换整个BACKUP_DIR赋值即可,前提是文档中要求的「备份目标可访问、空间足够」。
# 创建带时间戳的备份目录 BACKUP_DIR="/backup/wazuh-manager-$(date +%Y%m%d-%H%M%S)" sudo mkdir -p $BACKUP_DIR # 备份整个 etc/ 目录(包含 wazuh-manager.conf、client.keys、certs/ 以及 shared/ 各组的 agent.conf) sudo tar -czf $BACKUP_DIR/wazuh-etc.tar.gz -C /var/wazuh-manager etc/ # 备份 global.db:用 SQLite 官方在线备份保证一致性 sudo mkdir -p $BACKUP_DIR/db sudo sqlite3 /var/wazuh-manager/var/db/global.db ".backup '$BACKUP_DIR/db/global.db'" # 将备份目录归属设为当前用户 sudo chown -R $(whoami):$(whoami) $BACKUP_DIR这条主路径一次性覆盖了标题中的三类对象:client.keys和shared/都在etc/内被 tar 打包,global.db则单独用sqlite3 .backup在线复制(文档特意要求用 SQLite backup 而非直接拷文件,以保证一致性)。
如果这次备份是为了关键操作(文档称为 critical operations),改用 Option 2:先sudo systemctl stop wazuh-manager,把etc/与var/db/global.db一起 tar 打包,再sudo systemctl start wazuh-manager并用sudo systemctl status wazuh-manager确认服务恢复。这种方式停机时间稍长,但数据完全一致。
只备份单项时的替代命令
如果只想单独备份某一项,文档给出了三个独立命令:
# 仅配置(含 client.keys 与 shared/) sudo tar -czf wazuh-manager-config-$(date +%Y%m%d).tar.gz -C /var/wazuh-manager etc/ # 仅 agent keys sudo cp /var/wazuh-manager/etc/client.keys wazuh-client-keys-$(date +%Y%m%d).backup # 仅全局数据库 sudo sqlite3 /var/wazuh-manager/var/db/global.db ".backup 'wazuh-global-db-$(date +%Y%m%d).db'"验证备份完整性
备份完成后,用以下命令校验,不要跳过:
# 校验 tar 归档可读 tar -tzf $BACKUP_DIR/wazuh-etc.tar.gz > /dev/null && echo "Configuration backup verified" || echo "Backup verification failed" # 校验数据库完整性 sudo sqlite3 $BACKUP_DIR/db/global.db "PRAGMA integrity_check" && echo "Database backup verified" || echo "Database verification failed" # 查看备份大小 du -sh $BACKUP_DIR # 列出备份内容 tar -tzf $BACKUP_DIR/wazuh-etc.tar.gz | head -20判断标准:tar 校验输出Configuration backup verified、PRAGMA integrity_check返回通过、tar -tzf列表里能看到etc/client.keys和etc/shared/各组目录,说明这份备份可用。
如果希望例行化,文档提供了自动化脚本示例(写入/usr/local/bin/wazuh-manager-backup.sh,配合 cron 每天 2 点执行),脚本执行备份后自动做上面同样的两项校验并记录到/var/log/wazuh-backup.log。注意脚本内置保留策略:会删除 30 天前的旧备份目录(find ... -mtime +30 -exec rm -rf),部署前确认该删除行为符合你的保留要求。
恢复:从备份还原 Manager
恢复前的文档检查清单:确认备份文件完整性、确认 Wazuh 版本兼容、确认磁盘空间、安排服务停机、通知相关方。
完整恢复(六步)
第 1 步,停止服务:
sudo systemctl stop wazuh-manager第 2 步,先把现有数据移开留档(文档标注为可选但推荐):
sudo mv /var/wazuh-manager/etc /var/wazuh-manager/etc.old.$(date +%Y%m%d) sudo mv /var/wazuh-manager/var/db/global.db /var/wazuh-manager/var/db/global.db.old.$(date +%Y%m%d)第 3 步,从备份还原:
# 还原配置(含 client.keys、certs/、shared/ 共享配置) sudo tar -xzf $BACKUP_DIR/wazuh-etc.tar.gz -C /var/wazuh-manager # 还原全局数据库 sudo cp $BACKUP_DIR/db/global.db /var/wazuh-manager/var/db/global.db第 4 步,设置权限。这一步直接影响 Manager 能否启动、agent 能否连接:
sudo chown -R wazuh-manager:wazuh-manager /var/wazuh-manager/etc sudo chown -R wazuh-manager:wazuh-manager /var/wazuh-manager/var/db sudo chmod 640 /var/wazuh-manager/etc/client.keys sudo chmod 500 /var/wazuh-manager/etc/certs sudo chmod 400 /var/wazuh-manager/etc/certs/*第 5 步,启动服务:
sudo systemctl start wazuh-manager第 6 步,验证恢复结果:
# 服务状态 sudo systemctl status wazuh-manager # 数据库完整性 sudo sqlite3 /var/wazuh-manager/var/db/global.db "PRAGMA integrity_check" # 观察日志有无报错 sudo tail -f /var/wazuh-manager/logs/wazuh-manager.log单项恢复
如果只损坏了某一项,文档给出了对应命令,模式都是「停服务 → 还原 → 修属主和权限 → 启服务」:
# 仅恢复 agent keys sudo systemctl stop wazuh-manager sudo cp wazuh-client-keys-YYYYMMDD.backup /var/wazuh-manager/etc/client.keys sudo chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/client.keys sudo chmod 640 /var/wazuh-manager/etc/client.keys sudo systemctl start wazuh-manager # 仅恢复全局数据库 sudo systemctl stop wazuh-manager sudo cp wazuh-global-db-YYYYMMDD.db /var/wazuh-manager/var/db/global.db sudo chown wazuh-manager:wazuh-manager /var/wazuh-manager/var/db/global.db sudo chmod 640 /var/wazuh-manager/var/db/global.db sudo systemctl start wazuh-manager命令中的YYYYMMDD按你实际备份文件的日期替换(文件名由备份命令中的$(date +%Y%m%d)生成)。共享配置shared/目录随etc/整体还原,因此「仅恢复配置」的单项命令会同时还原各组的agent.conf。
恢复后常见问题排查
文档针对 Manager 侧给出三个具体问题的处理路径:
Manager 启动不了。先修正属主和 client.keys 权限(sudo chown -R wazuh-manager:wazuh-manager /var/wazuh-manager与sudo chmod 640 /var/wazuh-manager/etc/client.keys),再看日志:sudo tail -100 /var/wazuh-manager/logs/wazuh-manager.log。
恢复后 agent 连不上。按文档顺序核对:
# 确认 client.keys 已还原 sudo ls -l /var/wazuh-manager/etc/client.keys # 确认 global.db 中仍有 agent 记录 sudo sqlite3 /var/wazuh-manager/var/db/global.db "SELECT id, name FROM agent" # 重启 Manager 并跟踪 remoted 日志 sudo systemctl restart wazuh-manager sudo tail -f /var/wazuh-manager/logs/wazuh-manager.log | grep remoted这条路径正是验证「client.keys 与 global.db 是否配对一致」的手段:keys 文件和agent表必须来自同一次备份。
恢复后数据库损坏。用PRAGMA integrity_check确认,若损坏则停服务、重新从备份覆盖global.db并修正属主后启动。
集群部署的边界说明
集群场景下备份范围不同:master 节点包含权威的 agent 注册与分组数据,需要按本文完整流程备份(etc/全量 +global.db);worker 节点只需备份配置(wazuh-manager.conf和wazuh-manager-internal-options.conf),因为global.db和共享文件由 master 同步。各节点备份分开存放,并记录集群拓扑与节点角色。恢复 master 后,用sudo /var/wazuh-manager/bin/cluster_control -l和-i查看集群状态,用cluster.log确认同步。
相关文档
- 完整备份恢复指南:docs/ref/backup-restore.md
- agent 组与共享目录结构:docs/ref/modules/agent-management/agent-groups.md
- 集中配置(agent.conf):docs/ref/modules/agent-management/centralized-configuration.md
- 配置文件总览:docs/ref/configuration/README.md
【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考