Wazuh 卸载指南:Linux、macOS 与 Windows 下彻底移除 Server 与 Agent 的完整操作
2026/9/14 13:33:59 网站建设 项目流程

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参数时会依次执行:

  1. 检测 systemd:若wazuh-manager单元处于活动状态,执行systemctl stop wazuh-manager
  2. 否则回退到 SysV:通过service wazuh-manager status判断后执行service wazuh-manager stop
  3. 最后再兜底调用安装目录内的控制脚本/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-managerdelgroup wazuh-managerrm -rf /var/wazuh-manager,将安装目录与系统用户一并清除。

卸载 Wazuh Server

Debian 系平台

彻底清除(含配置与用户):

sudo dpkg --purge wazuh-manager

仅移除包但保留配置文件:

sudo dpkg --remove wazuh-manager

从源码结构看,选择--remove后 prerm 还会把etc/client.keysetc/wazuh-manager-internal-options.confetc/wazuh-manager.confetc/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-manager

RPM 的-e选项移除包及其全部文件,没有 Debian 式的 conffiles 保留语义,等效于“purge 级别”的移除。

卸载 Wazuh Agent

Linux 平台

Debian 系平台

彻底清除:

sudo dpkg --purge wazuh-agent

仅移除包、保留配置:

sudo dpkg --remove wazuh-agent

agent 的安装目录为/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-agent

SUSE 文档单列一节的原因在于其包管理入口(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流程)看,其行为分为两条路径:

  1. 检测到已安装的包(通过dpkg-queryrpm -qa判断):按包管理器分级清除——apt 下执行apt-get purge+autoremove+autoclean;dnf/yum 下执行remove;zypper 下执行remove -u;裸 rpm 下执行rpm -e --nodeps;随后仍会执行下面的全量系统清理;
  2. 未检测到包(源码/手工安装):跳过删包步骤,直接执行全量清理。

全量清理阶段由 tools/purge_wazuh.sh 的cleanup_system串联完成,覆盖包卸载可能遗漏的残留:

  • 停止服务(L85-L113):先systemctl stop/disablewazuh-managerwazuh-agentwazuh-local三个单元,再回退到service命令,然后逐个安装目录调用wazuh-manager-control/wazuh-control,最后以pkill -9兜底杀掉wazuh-manager-analysisdwazuh-agentdwazuh-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.drc*.d下的 SysV 脚本与 S/K 链接,并在 systemd 下删除三个单元文件后执行daemon-reloadreset-failed
  • 删除残留文件与账号:移除/etc/ossec-init.conf(安装/注册时留下的记录文件),删除wazuhwazuh-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 wazuhid wazuh-manager应报用户不存在;macOS 上dscl . -read /Users/wazuhdscl . -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.confapi.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询