Wazuh 卸载指南:Linux、macOS 与 Windows 下彻底移除 Server 与 Agent 的完整操作
【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh
本篇技术指南基于 Wazuh 官方参考文档 docs/ref/uninstall.md,系统讲解 Wazuh server 与 agent 在 Debian/Red Hat/SUSE Linux、macOS 和 Windows 平台上的卸载方法与命令差异,并结合当前仓库中的包维护脚本(prerm/postrm)、macOS 卸载脚本 packages/macos/uninstall.sh 和一键清除脚本 tools/purge_wazuh.sh 深入说明卸载过程的底层行为。读完本篇,你可以针对不同发行版选择保留或清除配置文件的卸载方式,理解“remove”与“purge”的本质区别,并在包管理器之外完成对服务单元、用户组、挂载点和残留目录的深度清理。
卸载总体流程:先停服务,再删包
官方文档指出,Wazuh 的卸载流程会在移除包之前自动停止服务。这一行为并非文档的口头描述,而是写在包维护脚本中的。以 Debian 包为例,wazuh-manager 的 prerm 脚本 在收到remove参数时会依次执行:
- 检测 systemd:若
wazuh-manager单元处于活动状态,执行systemctl stop wazuh-manager; - 否则回退到 SysV:通过
service wazuh-manager status判断后执行service wazuh-manager stop; - 最后再兜底调用安装目录内的控制脚本
/var/wazuh-manager/bin/wazuh-manager-control stop。
也就是说,无论包管理器底层走哪条路径,守护进程都会被先行停止,避免在进程仍持锁读写queue/、var/等运行时目录时删除文件。
理解“remove”与“purge”的差异是选择卸载命令的关键:
| 操作 | Debian (dpkg) | Red Hat (rpm) | 结果 |
|---|---|---|---|
| 仅移除包 | dpkg --remove <pkg> | rpm -e <pkg> | 卸载程序文件,保留/改名配置文件,便于重装时沿用 |
| 彻底清除 | dpkg --purge <pkg> | rpm -e <pkg>(rpm 无独立 purge 语义,删包即删文件) | 删除包及其用户、组、安装目录等绝大部分痕迹 |
从 wazuh-manager 的 postrm 脚本 可以印证这一机制:在remove分支中,脚本会把/var/wazuh-manager/etc/下未被包管理的文件重命名为.save后缀(API 配置文件同样被改名保留),实现“删包留配置”;而在purge分支中,脚本执行deluser wazuh-manager、delgroup wazuh-manager并rm -rf /var/wazuh-manager,将安装目录与系统用户一并清除。
卸载 Wazuh Server
Debian 系平台
彻底清除(含配置与用户):
sudo dpkg --purge wazuh-manager仅移除包但保留配置文件:
sudo dpkg --remove wazuh-manager从源码结构看,选择--remove后 prerm 还会把etc/client.keys、etc/wazuh-manager-internal-options.conf、etc/wazuh-manager.conf、etc/shared/default/agent.conf以及api/configuration/api.yaml备份到${DIR}/tmp/conffiles目录,随后由 postrm 在移除包文件后把它们恢复到etc/并加上.save后缀。因此执行--remove后在/var/wazuh-manager/etc/中看到的*.save文件,正是官方设计用于重装或手工比对的历史配置。
Red Hat 系平台
sudo rpm -e wazuh-managerRPM 的-e选项移除包及其全部文件,没有 Debian 式的 conffiles 保留语义,等效于“purge 级别”的移除。
卸载 Wazuh Agent
Linux 平台
Debian 系平台
彻底清除:
sudo dpkg --purge wazuh-agent仅移除包、保留配置:
sudo dpkg --remove wazuh-agentagent 的安装目录为/var/ossec。从 wazuh-agent 的 postrm 脚本 可以看到,除通用的配置.save改名逻辑外,remove 分支还有一个容易被忽略的清理动作:删除 audit 子系统对接插件——若存在/etc/audit/plugins.d/af_wazuh.conf或/etc/audisp/plugins.d/af_wazuh.conf会被一并移除。如果此前启用过内核审计日志采集(audisp 插件),卸载 agent 包后不应再假设该插件仍然生效。purge 分支则删除wazuh用户与组,并执行rm -rf /var/ossec/*清空安装目录。
Red Hat 系与 SUSE 系平台
两个平台使用相同的命令:
sudo rpm -e wazuh-agentSUSE 文档单列一节的原因在于其包管理入口(zypper)最终同样落到 rpm 层,官方文档为读者区分了发行版习惯,命令本身保持一致。
macOS
macOS 上的 Wazuh agent 通过 launchd 管理,卸载需按“停服务 → 删文件 → 删用户组 → 注销包记录”四步进行。
第一步,停止 agent 服务:
sudo launchctl bootout system /Library/LaunchDaemons/com.wazuh.agent.plist第二步,删除程序目录与启动项:
sudo rm -rf /Library/Ossec sudo rm -f /Library/LaunchDaemons/com.wazuh.agent.plist sudo rm -rf /Library/StartupItems/WAZUH第三步,删除 wazuh 用户与组:
sudo dscl . -delete "/Users/wazuh" sudo dscl . -delete "/Groups/wazuh"第四步,从 pkgutil 中注销包记录:
sudo pkgutil --forget com.wazuh.pkg.wazuh-agent仓库中的 packages/macos/uninstall.sh 是官方构建流程自带的等价卸载脚本,可以从中补充两个文档未逐条列出的细节:脚本在删文件前先调用/Library/Ossec/bin/wazuh-control stop优雅停止所有 agent 进程(launchd 之外多一道保险);pkgutil --forget除了com.wazuh.pkg.wazuh-agent还会注销com.wazuh.pkg.wazuh-agent-etc这一等价的等份记录;此外,若 agent 曾通过 Puppet 的 pkgdmg provider 安装,脚本还会清理标记文件/var/db/.puppet_pkgdmg_installed_wazuh-agent,避免 Puppet 状态与系统实际状态不一致。
Windows
Windows 端卸载有三种方式,按适用场景任选其一。
方式一:使用原始安装包静默卸载(要求安装包文件位于当前工作目录):
msiexec.exe /x wazuh-agent-*.msi /qn/x指定卸载、/qn指定无界面静默模式。
方式二:不依赖安装包文件,通过注册表定位已安装的 MSI 产品代码后卸载:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* , HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like "*Wazuh Agent*" } | ForEach-Object { msiexec.exe /x $_.PSChildName /qn }该命令同时扫描 64 位(Software)与 32 位重定向视图(WOW6432Node)两个安装注册表位置,以DisplayName模糊匹配 “Wazuh Agent”,取出PSChildName(即产品 GUID)逐个调用 msiexec 卸载,适合忘记原始 msi 文件名的场景。
方式三:基于 PowerShell 包提供程序(Package Provider)的等价 CLI 方式:
Get-Package -Name "Wazuh Agent" | Uninstall-Package -Force -ErrorAction SilentlyContinue -WarningAction SilentlyContinue-Force强制卸载,-ErrorAction/-WarningAction SilentlyContinue则抑制卸载过程中常见的“无权限读取某些注册表项”类告警,保证命令在多数环境下单次执行完成。
偏好图形化操作时,也可以直接通过 Windows 的 “Add or Remove Programs”(添加/删除程序)功能进行交互式卸载。执行上述任一方式后,Wazuh agent 即从 Windows 端点上完全移除。
深度清理:一键清除脚本与包卸载的边界
包管理器卸载覆盖的是“由包安装的”组件。对于源码编译安装或需要连服务单元、挂载点、用户组一并扫尾的场景,仓库提供了 tools/purge_wazuh.sh 作为统一的清除入口:
sudo ./purge_wazuh.sh从脚本实现(tools/purge_wazuh.sh 的main流程)看,其行为分为两条路径:
- 检测到已安装的包(通过
dpkg-query或rpm -qa判断):按包管理器分级清除——apt 下执行apt-get purge+autoremove+autoclean;dnf/yum 下执行remove;zypper 下执行remove -u;裸 rpm 下执行rpm -e --nodeps;随后仍会执行下面的全量系统清理; - 未检测到包(源码/手工安装):跳过删包步骤,直接执行全量清理。
全量清理阶段由 tools/purge_wazuh.sh 的cleanup_system串联完成,覆盖包卸载可能遗漏的残留:
- 停止服务(L85-L113):先
systemctl stop/disablewazuh-manager、wazuh-agent、wazuh-local三个单元,再回退到service命令,然后逐个安装目录调用wazuh-manager-control/wazuh-control,最后以pkill -9兜底杀掉wazuh-manager-analysisd、wazuh-agentd、wazuh-syscheckd等残留进程; - 卸载 dev/proc 挂载:若安装目录下存在挂载中的
proc目录(mountpoint检测),执行umount,避免目录删除失败; - 确定安装目录:默认包含
/var/wazuh-manager与/var/ossec(L15-L16),并额外解析WAZUH_HOME环境变量以及 systemd/init.d 服务文件中的ExecStart/WAZUH_HOME定义,从而覆盖非默认路径的自定义安装; - 删除服务单元:清理
/etc/rc.local中的启动行、/etc/init.d与rc*.d下的 SysV 脚本与 S/K 链接,并在 systemd 下删除三个单元文件后执行daemon-reload与reset-failed; - 删除残留文件与账号:移除
/etc/ossec-init.conf(安装/注册时留下的记录文件),删除wazuh与wazuh-manager用户和同名组。
卸载后的验证建议
执行卸载后,可按以下清单确认清理是否到位:
- 包状态:Debian 系下
dpkg -l | grep wazuh应无wazuh-manager/wazuh-agent条目;RPM 系下rpm -qa | grep wazuh应无输出; - 进程与端口:
ps aux | grep -E 'wazuh-(manager-)?(analysisd|agentd|remoted|syscheckd|logcollector)'无对应进程; - 目录残留:
/var/ossec(agent)与/var/wazuh-manager(server)应已不存在;若只执行了dpkg --remove,目录中会保留*.save配置文件,属预期行为,可手工确认后删除; - 账号清理:
id wazuh、id wazuh-manager应报用户不存在;macOS 上dscl . -read /Users/wazuh与dscl . -read /Groups/wazuh应无记录; - 审计插件(如曾启用 audisp):确认
/etc/audit/plugins.d/af_wazuh.conf与/etc/audisp/plugins.d/af_wazuh.conf已随 agent 包卸载被删除。
小结:日常卸载按平台选择dpkg --purge/rpm -e、macOS 四步法或 Windows msiexec 命令即可,服务停止由包维护脚本自动完成;dpkg --remove适合需要保留wazuh-manager.conf、api.yaml等历史配置的重装场景;对于源码安装或多组件混合部署环境,用 tools/purge_wazuh.sh 做一次全量扫尾是最稳妥的收尾手段。
【免费下载链接】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),仅供参考