文章目录
-
- [🚀 什么是 Wazuh?](#🚀 什么是 Wazuh?)
- [🔑 核心功能](#🔑 核心功能)
-
- 服务端安装
- 客户端安装
- 查看终端安全基线
- 客户端日志查看
-
- [Windows 安全日志](#Windows 安全日志)
- [MacOS 系统日志](#MacOS 系统日志)
- [Linux 系统日志](#Linux 系统日志)
- 自定义安全基线
- 控制台端推送安全基线
-
- 1.打开控制台远程命令执行功能
- [2. 在控制台编写基线文件](#2. 在控制台编写基线文件)
- 3.修改控制台默认组配置文件
- 4.重启服务端、客户端查看基线检测结果
- 5.查看客户端日志,和控制台输出
- 漏洞扫描
🚀 什么是 Wazuh?
Wazuh 是一个 开源的安全平台(XDR / SIEM / HIDS),用来集中管理和监控主机、网络和应用的安全。它最初基于 OSSEC 发展而来,现在是一个独立的开源项目。
🔑 核心功能
- 日志收集与分析(SIEM 功能)
- 支持收集 Windows、Linux、网络设备、云平台日志
- 内置规则引擎,能检测攻击行为、恶意活动
- 可与 ELK(Elasticsearch + Kibana)集成做可视化
- 主机入侵检测(HIDS)
- 文件完整性监控(FIM)
- Rootkit 检测、恶意软件检测
- 系统调用和进程监控
- 漏洞检测
- 自动扫描已安装软件版本
- 与漏洞库(NVD、OVAL 等)对比,发现已知漏洞
- 配置合规 / 基线检查(SCA)
- 内置 CIS、PCI-DSS、HIPAA 等安全基线
- 支持自定义基线(YAML 格式)
- 威胁情报(Threat Intelligence)
- 集成 OTX、VirusTotal 等情报源
- 检测可疑 IP、域名、哈希
- 响应与自动化(Active Response)
- 可执行脚本,阻断 IP、隔离主机
- 与防火墙 / SIEM / SOAR 集成
服务端安装
直接导入OVF文件即可,并修改IP配置
客户端安装
-
登录控制台,默认账户密码 admin admin
-
点击左上角部署,安装SOP部署即可
#Windows Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.12.0-1.msi -OutFile $env:tmp\wazuh-agent; msiexec.exe /i $env:tmp\wazuh-agent /q WAZUH_MANAGER='10.41.84.100' #Linux curl -o wazuh-agent-4.12.0-1.x86_64.rpm https://packages.wazuh.com/4.x/yum/wazuh-agent-4.12.0-1.x86_64.rpm && sudo WAZUH_MANAGER='10.41.84.100' rpm -ihv wazuh-agent-4.12.0-1.x86_64.rpm sudo systemctl daemon-reload sudo systemctl enable wazuh-agent sudo systemctl start wazuh-agent #MacOS Apple Silicom curl -so wazuh-agent.pkg https://packages.wazuh.com/4.x/macos/wazuh-agent-4.12.0-1.arm64.pkg && echo "WAZUH_MANAGER='10.41.84.100'" > /tmp/wazuh_envs && sudo installer -pkg ./wazuh-agent.pkg -target / sudo /Library/Ossec/bin/wazuh-control start #MacOS Apple intel curl -so wazuh-agent.pkg https://packages.wazuh.com/4.x/macos/wazuh-agent-4.12.0-1.intel64.pkg && echo "WAZUH_MANAGER='10.41.84.100'" > /tmp/wazuh_envs && sudo installer -pkg ./wazuh-agent.pkg -target / sudo /Library/Ossec/bin/wazuh-control start
安装后可以在Agent中查看客户端清单

查看终端安全基线
可以在控制台查看客户端 configuration-assessmen 合规情况
- Windows

-
Linux
-
MacOS
客户端日志查看
- 在Discover 页面可以查看客户端日志

Windows 安全日志

MacOS 系统日志

Linux 系统日志

密码长度

自定义安全基线
wazuh可以自定义安装基线,比如按照SRAS,或者其他客户要求定义终端安全检测项目
Windows自定义
-
在C:\Program Files (x86)\ossec-agent\ruleset\sca目录中创建自定义yml文件
-
参考下面的代码
# 企业最小化 Windows 安全基线 # 仅保留密码与锁屏类的关键规则,适合企业轻量级部署 # Copyright (C) 2025, Internal Security Team policy: id: "real" file: "real.yml" name: "Windows 最小基线-Real测试" description: "关注核心账号与锁屏安全要求的轻量化基线。" references: - https://www.cisecurity.org/cis-benchmarks/ - 企业内部安全标准 v1.0 requirements: title: "Check that the Windows platform is Windows 11" description: "Requirements for running the CIS benchmark Domain Controller under Windows 11" condition: all rules: - 'r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion -> ProductName -> r:^Windows 10' checks: # 1. 最小密码长度 - id: 30001 title: "密码最小长度 ≥ 8" description: "要求用户密码不少于 8 位,提高破解难度。" rationale: "短密码容易被暴力破解。" impact: "用户需创建更长的密码。" remediation: "在组策略中设置:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略 → 最小密码长度 = 8 或以上。" compliance: - cis: ["1.1.3"] condition: all rules: - 'c:net.exe accounts -> n:Minimum password length:\s+(\d+) compare >= 8' # 2. 最大密码有效期 - id: 30002 title: "最大密码使用期限 ≤ 365 天" description: "要求密码定期更换,防止长期使用导致泄露风险。" rationale: "长期不变的密码更容易被攻击利用。" remediation: "在组策略中设置:最大密码期限 ≤ 365 天,且不为 0。" compliance: - cis: ["1.1.2"] condition: all rules: - 'c:net.exe accounts -> n:Maximum password age \(days\):\s+(\d+) compare <= 365' - 'c:net.exe accounts -> n:Maximum password age \(days\):\s+(\d+) compare > 0' # 3. 账户锁定阈值 - id: 30003 title: "账户锁定阈值 ≤ 10" description: "连续输错密码 10 次以内应触发账户锁定。" rationale: "限制暴力破解攻击。" remediation: "在组策略中设置:账户锁定阈值 = 10 或更少(但不能为 0)。" compliance: - cis: ["1.2.1"] condition: all rules: - 'c:net.exe accounts -> n:Lockout threshold:\s+(\d+) compare <= 10' - 'c:net.exe accounts -> n:Lockout threshold:\s+(\d+) compare > 0' # 4. 屏幕保护程序超时 - id: 30004 title: "屏幕保护程序超时 ≤ 900 秒" description: "闲置 15 分钟内自动锁屏,防止未授权访问。" rationale: "防止无人值守的计算机被滥用。" remediation: "在组策略中设置:用户配置 → 管理模板 → 控制面板 → 个性化 → 屏幕保护程序超时 = 900 秒或更少。" compliance: - cis: ["2.2.1"] condition: all rules: - 'r:HKCU\\Control Panel\\Desktop -> ScreenSaveTimeOut -> r:^(\d+)$ compare <= 900' # 5. 屏幕保护程序强制启用 - id: 30005 title: "强制启用屏幕保护程序" description: "确保屏幕保护程序被启用,结合超时策略使用。" rationale: "无屏保时,超时锁定策略无法生效。" remediation: "在组策略中设置:启用屏幕保护程序。" compliance: - cis: ["2.2.2"] condition: all rules: - 'r:HKCU\\Control Panel\\Desktop -> ScreenSaveActive -> v:1' # 6. 禁止安装webex - id: 30006 title: "禁止安装 Webex 软件" description: "检查系统中是否安装了包含 'webex' 字样的软件。" rationale: "Webex 可能不符合企业软件白名单策略。" remediation: "卸载 Webex 或联系 IT 管理员审批。" compliance: - custom: ["禁止使用 Webex"] condition: any rules: - 'c:wmic product get name -> r:webex' - id: 40001 title: "操作系统为 Windows 10 及以上" description: "确保操作系统版本为 Windows 10 或更高。" condition: all rules: - 'r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion -> ProductName -> r:Windows (10|11|12)' - id: 40002 title: "已安装防病毒软件" description: "检查是否安装了主流防病毒软件。" condition: any rules: - 'c:wmic product get name -> r:(360|McAfee|Symantec|Kaspersky|Defender|ESET|Avast|Trend Micro|Bitdefender)' - id: 40003 title: "禁止安装远程/VPN/网盘/Outlook等软件" description: "检查是否安装了Dameware、AnyConnect、UNC、网盘、Outlook等。" condition: any rules: - 'c:wmic product get name -> r:(Dameware|AnyConnect|UNC|百度网盘|Outlook|Dropbox|OneDrive|WeDrive)' - id: 40004 title: "密码复杂度要求" description: "密码长度≥8,含大小写字母和数字。" condition: all rules: - 'c:net accounts -> n:Minimum password length:\s+(\d+) compare >= 8' - 'r:HKLM\SYSTEM\CurrentControlSet\Control\Lsa -> LmCompatibilityLevel -> v:1' - 'r:HKLM\SYSTEM\CurrentControlSet\Control\Lsa -> PasswordComplexity -> v:1' - id: 40005 title: "密码修改频率为每月一次" description: "最大密码有效期不超过31天。" condition: all rules: - 'c:net accounts -> n:Maximum password age \(days\):\s+(\d+) compare <= 31' - 'c:net accounts -> n:Maximum password age \(days\):\s+(\d+) compare > 0' - id: 40006 title: "禁止本地文件共享" description: "检查是否存在非默认共享。" condition: all rules: - 'c:net share -> r:^[A-Z]\$' - id: 40007 title: "禁止物理打印机" description: "仅允许XPS和PDF虚拟打印机。" condition: all rules: - 'c:wmic printer get name -> r:(?i)(?!.*(XPS|PDF)).+' - id: 40008 title: "禁用蓝牙" description: "蓝牙服务被禁用。" condition: all rules: - 'r:HKLM\SYSTEM\CurrentControlSet\Services\BTHPORT -> Start -> v:4' - id: 40009 title: "屏保5分钟自动锁屏并需密码" description: "屏保超时≤300秒,且恢复需密码。" condition: all rules: - 'r:HKCU\Control Panel\Desktop -> ScreenSaveTimeOut -> r:^(\d+)$ compare <= 300' - 'r:HKCU\Control Panel\Desktop -> ScreenSaverIsSecure -> v:1' - id: 40010 title: "禁止访问指定外部网站" description: "检测能否访问 mail.qq.com、pan.baidu.com、apple.com 等外部站点。" condition: any rules: - 'c:curl -I -m 5 https://mail.qq.com 2>&1 -> r:HTTP/1\.[01] 200' - 'c:curl -I -m 5 https://pan.baidu.com 2>&1 -> r:HTTP/1\.[01] 200' - 'c:curl -I -m 5 https://www.apple.com 2>&1 -> r:HTTP/1\.[01] 200' - id: 40011 title: "存在测试文件" description: "检查 D:\\123.csv 文件是否存在。" condition: any rules: - 'f:D:\\123.csv -> exists' - 'f:D:\123.csv -> exists' - id: 40012 title: "存在 tcping 命令" description: "检查 C:\\Windows\\System32\\tcping.exe 是否存在。" condition: any rules: - 'f:C:\WINDOWS\System32\tcping.exe -> exists' - 'f:C:\WINDOWS\System32\tcping64.exe -> exists' - id: 40013 title: "存在测试文件" description: "检查 clash.ini 文件是否存在。" condition: any rules: - 'c:powershell -Command "Test-Path D:\\clash.ini" -> r:^True$' - id: 40014 title: "存在测试文件" description: "检查 D:\\123.csv 文件是否存在。" condition: any rules: - 'c:powershell -Command "Test-Path D:\\123.csv" -> r:^True$' - id: 99999 title: "存在 notepad" description: "检查 C:\\Windows\\notepad.exe 是否存在。" condition: all rules: - 'f:C:\Windows\notepad.exe -> exists' - 'f:C:\\WINDOWS\\notepad.exe -> exists'
-
定义好后重启客户端的wazuh服务即可在控制台看到结果
-
常见的检测语法有:
你在写 Wazuh SCA (Security Configuration Assessment) 规则 时,除了
c:
(命令)、f:
(文件)、r:
(注册表)之外,其实还有一套完整的检测前缀。我帮你整理一份 常用检测方案清单(适合 Windows / Linux 都能用):
🔑 常用规则检测方法(rule 前缀)
前缀 说明 示例 f: 文件检查(存在性 / 内容 / 权限) f:C:\\Windows\\System32\\calc.exe -> exists
r: 注册表键值检查(仅 Windows) r:HKLM\\Software\\Policies\\Microsoft\\Windows\\Control Panel\\Desktop -> ScreenSaveActive -> v:1
c: 命令执行 + 正则匹配 c:net user -> r:Administrator
d: 目录检查(存在性 / 权限) d:C:\\Program Files\\ -> exists
p: 进程检查(匹配运行进程名) p:lsass.exe -> running
n: 网络配置 / 端口检查 n:0.0.0.0:3389 -> listening
k: 内核参数(主要 Linux) k:net.ipv4.ip_forward -> v:0
u: 用户 / 组检查 u:Administrator -> exists
s: 服务状态检查(systemd / Windows service) s:TermService -> running
o: 系统属性检查(OS 名称 / 版本等) o:os.name -> r:Windows 10
🔍 说明与应用场景
- f / d → 文件和目录
检查敏感文件是否存在、权限是否正确。- 示例:
f:D:\\clash.ini -> not_exists
- 示例:
- r → 注册表
检查 Windows 安全策略、组策略配置。- 示例:
r:HKLM\\System\\CurrentControlSet\\Control\\Lsa -> LimitBlankPasswordUse -> v:1
- 示例:
- c → 命令
最通用,几乎万能(适合你刚遇到f:
不生效时的替代)。- 示例:
c:powershell -Command "Test-Path D:\\123.csv" -> r:^True$
- 示例:
- p → 进程
检查是否有黑名单软件在运行。- 示例:
p:webex.exe -> not_running
- 示例:
- n → 网络
确保敏感端口关闭。- 示例:
n:0.0.0.0:23 -> not_listening
- 示例:
- s → 服务
检查服务是否开启/关闭。- 示例:
s:RemoteRegistry -> stopped
- 示例:
- o → OS 属性
判断系统版本,防止错误套用基线。- 示例:
o:os.major -> v:10
- 示例:
⚠️ 小技巧
- 优先用
c:
(命令) → 万能兜底,特别是文件检测有问题时。 - f / r / s → 性能更好(直接 API 级别调用,比
c:
快)。 - 组合 condition →
condition: any
或all
可以混合使用多种前缀,保证可靠性。
- f / d → 文件和目录
控制台端推送安全基线
🔑 关键点:SCA 策略集中管理
- 不用在每台客户端单独放 YML 文件
- 可以通过 Wazuh Manager 在服务端集中存放基线文件,并通过
agent.conf
或group
配置下发给成百上千个 agent。- 这样改动一次,就能应用到对应组的所有客户端。
1.打开控制台远程命令执行功能
-
在客户端Powershell中运行下面的命令,来开启客户端远程命令执行功能
https://www.reddit.com/r/Wazuh/comments/1i7hi18/is_there_a_way_to_push_scaremote_commands1_to_all/
出于安全考虑,Wazuh 不允许服务端直接下发"允许远程命令"这种选项。
否则攻击者一旦控制了 Wazuh server,就能直接在所有 agent 上执行命令,风险太大。
Add-Content -Value 'sca.remote_commands=1' -Path 'C:\Program Files (x86)\ossec-agent\local_internal_options.conf'
Restart-Service WazuhSvc
!WARNING
如果不修改,客户端会遇到下面的报错:
2. 在控制台编写基线文件
-
将写好的基线文件放在服务端 /var/ossec/etc/shared/default/ 目录下,并确认好权限
[root@wazuh-server shared]# ls -lt /var/ossec/etc/shared/default/real666.yml
-rw-r--r--. 1 wazuh wazuh 7788 Sep 10 01:30 /var/ossec/etc/shared/default/real666.yml
chown -R wazuh:wazuh /var/ossec/etc/shared/default/real666.yml
chmod 750 /var/ossec/etc/shared/default/real666.yml
3.修改控制台默认组配置文件
修改默认组的配置文件,指定policy文件路径
[root@wazuh-server default]# more /var/ossec/etc/shared/default/agent.conf
<agent_config>
<sca>
<policies>
<policy>shared/real666.yml</policy>
</policies>
</sca>
</agent_config>
#确认文件权限
chown wazuh:wazuh /var/ossec/etc/shared/agent.conf
chmod 640 /var/ossec/etc/shared/agent.conf
4.重启服务端、客户端查看基线检测结果
#重启服务端
systemctl restart wazuh-manager
#重启客户端
Restart-Service WazuhSvc
5.查看客户端日志,和控制台输出
2025/09/10 10:14:51 sca: INFO: Starting evaluation of policy: 'C:\Program Files (x86)\ossec-agent\shared\real666.yml'

漏洞扫描
- 可以在Vulnerability Detection 查询客户的漏洞情况,Wazuh 是根据OS的软件包来检测是否存在漏洞,不验证漏洞的可利用性
- Windows的漏洞

-
Linux的漏洞:
-
MacOS 的漏洞

🔍 1. Wazuh 的漏洞检测
- 工作原理
- 依赖 OS query、syscollector 模块收集系统软件清单(版本、补丁、包信息)
- 将采集到的版本信息与 漏洞数据库(NVD、OVAL、MS KB 等) 对比
- 输出漏洞列表(已知版本漏洞)
- 检测方式 :被动检测(基于版本匹配),不主动攻击、不发送探测包。
- 结果特征
- 能发现系统/软件中有无已知漏洞(例如:已安装的 OpenSSL 版本有 CVE-XXXX)。
- 不会告诉你漏洞是否真正能利用,只是 潜在风险。
- 优点
- 与 HIDS、SCA 一体化,统一告警平台
- 开源免费,可定制化规则
- 风险面覆盖广,适合合规和持续监控
- 缺点
- 不能确认漏洞是否真实可利用
- 无法发现配置错误导致的安全风险(比如弱口令登录、服务暴露)
🛠 2. Nessus(Tenable)漏洞扫描
- 工作原理
- 主动扫描目标(网络探测、端口扫描、服务识别)
- 结合插件库(包含漏洞利用脚本、检测逻辑)验证漏洞
- 可执行本地认证扫描(SSH、WinRM)获取更精确的软件与补丁信息
- 检测方式 :主动探测 + 版本比对 + 弱点利用测试
- 结果特征
- 不仅能识别漏洞,还能验证部分漏洞是否可被利用
- 能发现配置错误(弱口令、明文传输、缺少安全选项等)
- 优点
- 商业级别,插件库更新快,覆盖率高
- 检测结果更接近"真实攻击面"
- 缺点
- 收费(Nessus Essentials 免费版限制主机数)
- 扫描可能影响业务(主动探测带负载)
- 不是持续监控,需要定期扫描
📊 对比总结
特性 Wazuh 漏洞检测 Nessus 漏洞扫描 检测方式 被动(软件清单比对) 主动(网络探测 + 认证扫描) 实时性 持续监控 需定期扫描 能否验证漏洞可利用性 ❌ 不能 ✅ 部分可验证 配置风险检测 一般 强大(弱口令、服务配置) 成本 开源免费 商业收费(部分免费版) 风险 低(不影响业务) 中(扫描可能导致业务负载) 使用场景 合规、持续安全基线监控 深度安全检测、渗透前风险评估