当前位置: 首页 > news >正文

Wazuh 研究记录 | 开源XDR | 安全基线检测

文章目录

    • 🚀 什么是 Wazuh?
    • 🔑 核心功能
      • 服务端安装
      • 客户端安装
      • 查看终端安全基线
      • 客户端日志查看
        • Windows 安全日志
        • MacOS 系统日志
        • Linux 系统日志
      • 自定义安全基线
        • Windows自定义
      • 控制台端推送安全基线
        • 1.打开控制台远程命令执行功能
        • 2. 在控制台编写基线文件
        • 3.修改控制台默认组配置文件
        • 4.重启服务端、客户端查看基线检测结果
        • 5.查看客户端日志,和控制台输出
      • 漏洞扫描

🚀 什么是 Wazuh?

Wazuh 是一个 开源的安全平台(XDR / SIEM / HIDS),用来集中管理和监控主机、网络和应用的安全。它最初基于 OSSEC 发展而来,现在是一个独立的开源项目。


🔑 核心功能

  1. 日志收集与分析(SIEM 功能)
    • 支持收集 Windows、Linux、网络设备、云平台日志
    • 内置规则引擎,能检测攻击行为、恶意活动
    • 可与 ELK(Elasticsearch + Kibana)集成做可视化
  2. 主机入侵检测(HIDS)
    • 文件完整性监控(FIM)
    • Rootkit 检测、恶意软件检测
    • 系统调用和进程监控
  3. 漏洞检测
    • 自动扫描已安装软件版本
    • 与漏洞库(NVD、OVAL 等)对比,发现已知漏洞
  4. 配置合规 / 基线检查(SCA)
    • 内置 CIS、PCI-DSS、HIPAA 等安全基线
    • 支持自定义基线(YAML 格式)
  5. 威胁情报(Threat Intelligence)
    • 集成 OTX、VirusTotal 等情报源
    • 检测可疑 IP、域名、哈希
  6. 响应与自动化(Active Response)
    • 可执行脚本,阻断 IP、隔离主机
    • 与防火墙 / SIEM / SOAR 集成

服务端安装

直接导入OVF文件即可,并修改IP配置

https://packages.wazuh.com/4.x/vm/wazuh-4.12.0.ova

客户端安装

  • 登录控制台,默认账户密码 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.rpmsudo 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 Teampolicy:id: "real"file: "real.yml"name: "Windows 最小基线-Real测试"description: "关注核心账号与锁屏安全要求的轻量化基线。"references:- https://www.cisecurity.org/cis-benchmarks/- 企业内部安全标准 v1.0requirements:title: "Check that the Windows platform is Windows 11"description: "Requirements for running the CIS benchmark Domain Controller under Windows 11"condition: allrules:- 'r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion -> ProductName -> r:^Windows 10'checks:# 1. 最小密码长度- id: 30001title: "密码最小长度 ≥ 8"description: "要求用户密码不少于 8 位,提高破解难度。"rationale: "短密码容易被暴力破解。"impact: "用户需创建更长的密码。"remediation: "在组策略中设置:计算机配置 → Windows 设置 → 安全设置 → 账户策略 → 密码策略 → 最小密码长度 = 8 或以上。"compliance:- cis: ["1.1.3"]condition: allrules:- 'c:net.exe accounts -> n:Minimum password length:\s+(\d+) compare >= 8'# 2. 最大密码有效期- id: 30002title: "最大密码使用期限 ≤ 365 天"description: "要求密码定期更换,防止长期使用导致泄露风险。"rationale: "长期不变的密码更容易被攻击利用。"remediation: "在组策略中设置:最大密码期限 ≤ 365 天,且不为 0。"compliance:- cis: ["1.1.2"]condition: allrules:- '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: 30003title: "账户锁定阈值 ≤ 10"description: "连续输错密码 10 次以内应触发账户锁定。"rationale: "限制暴力破解攻击。"remediation: "在组策略中设置:账户锁定阈值 = 10 或更少(但不能为 0)。"compliance:- cis: ["1.2.1"]condition: allrules:- 'c:net.exe accounts -> n:Lockout threshold:\s+(\d+) compare <= 10'- 'c:net.exe accounts -> n:Lockout threshold:\s+(\d+) compare > 0'# 4. 屏幕保护程序超时- id: 30004title: "屏幕保护程序超时 ≤ 900 秒"description: "闲置 15 分钟内自动锁屏,防止未授权访问。"rationale: "防止无人值守的计算机被滥用。"remediation: "在组策略中设置:用户配置 → 管理模板 → 控制面板 → 个性化 → 屏幕保护程序超时 = 900 秒或更少。"compliance:- cis: ["2.2.1"]condition: allrules:- 'r:HKCU\\Control Panel\\Desktop -> ScreenSaveTimeOut -> r:^(\d+)$ compare <= 900'# 5. 屏幕保护程序强制启用- id: 30005title: "强制启用屏幕保护程序"description: "确保屏幕保护程序被启用,结合超时策略使用。"rationale: "无屏保时,超时锁定策略无法生效。"remediation: "在组策略中设置:启用屏幕保护程序。"compliance:- cis: ["2.2.2"]condition: allrules:- 'r:HKCU\\Control Panel\\Desktop -> ScreenSaveActive -> v:1'# 6. 禁止安装webex- id: 30006title: "禁止安装 Webex 软件"description: "检查系统中是否安装了包含 'webex' 字样的软件。"rationale: "Webex 可能不符合企业软件白名单策略。"remediation: "卸载 Webex 或联系 IT 管理员审批。"compliance:- custom: ["禁止使用 Webex"]condition: anyrules:- 'c:wmic product get name -> r:webex'- id: 40001title: "操作系统为 Windows 10 及以上"description: "确保操作系统版本为 Windows 10 或更高。"condition: allrules:- 'r:HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion -> ProductName -> r:Windows (10|11|12)'- id: 40002title: "已安装防病毒软件"description: "检查是否安装了主流防病毒软件。"condition: anyrules:- 'c:wmic product get name -> r:(360|McAfee|Symantec|Kaspersky|Defender|ESET|Avast|Trend Micro|Bitdefender)'- id: 40003title: "禁止安装远程/VPN/网盘/Outlook等软件"description: "检查是否安装了Dameware、AnyConnect、UNC、网盘、Outlook等。"condition: anyrules:- 'c:wmic product get name -> r:(Dameware|AnyConnect|UNC|百度网盘|Outlook|Dropbox|OneDrive|WeDrive)'- id: 40004title: "密码复杂度要求"description: "密码长度≥8,含大小写字母和数字。"condition: allrules:- '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: 40005title: "密码修改频率为每月一次"description: "最大密码有效期不超过31天。"condition: allrules:- '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: 40006title: "禁止本地文件共享"description: "检查是否存在非默认共享。"condition: allrules:- 'c:net share -> r:^[A-Z]\$'- id: 40007title: "禁止物理打印机"description: "仅允许XPS和PDF虚拟打印机。"condition: allrules:- 'c:wmic printer get name -> r:(?i)(?!.*(XPS|PDF)).+'- id: 40008title: "禁用蓝牙"description: "蓝牙服务被禁用。"condition: allrules:- 'r:HKLM\SYSTEM\CurrentControlSet\Services\BTHPORT -> Start -> v:4'- id: 40009title: "屏保5分钟自动锁屏并需密码"description: "屏保超时≤300秒,且恢复需密码。"condition: allrules:- 'r:HKCU\Control Panel\Desktop -> ScreenSaveTimeOut -> r:^(\d+)$ compare <= 300'- 'r:HKCU\Control Panel\Desktop -> ScreenSaverIsSecure -> v:1'- id: 40010title: "禁止访问指定外部网站"description: "检测能否访问 mail.qq.com、pan.baidu.com、apple.com 等外部站点。"condition: anyrules:- '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: 40011title: "存在测试文件"description: "检查 D:\\123.csv 文件是否存在。"condition: anyrules:- 'f:D:\\123.csv -> exists'- 'f:D:\123.csv -> exists'- id: 40012title: "存在 tcping 命令"description: "检查 C:\\Windows\\System32\\tcping.exe 是否存在。"condition: anyrules:- 'f:C:\WINDOWS\System32\tcping.exe -> exists'- 'f:C:\WINDOWS\System32\tcping64.exe -> exists'- id: 40013title: "存在测试文件"description: "检查 clash.ini 文件是否存在。"condition: anyrules:- 'c:powershell -Command "Test-Path D:\\clash.ini" -> r:^True$'   - id: 40014title: "存在测试文件"description: "检查 D:\\123.csv 文件是否存在。"condition: anyrules:- 'c:powershell -Command "Test-Path D:\\123.csv" -> r:^True$'   - id: 99999title: "存在 notepad"description: "检查 C:\\Windows\\notepad.exe 是否存在。"condition: allrules:- '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

    ⚠️ 小技巧

    1. 优先用 c:(命令) → 万能兜底,特别是文件检测有问题时。
    2. f / r / s → 性能更好(直接 API 级别调用,比 c: 快)。
    3. 组合 conditioncondition: anyall 可以混合使用多种前缀,保证可靠性。

控制台端推送安全基线

🔑 关键点:SCA 策略集中管理

  • 不用在每台客户端单独放 YML 文件
  • 可以通过 Wazuh Manager 在服务端集中存放基线文件,并通过 agent.confgroup 配置下发给成百上千个 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 漏洞扫描
检测方式被动(软件清单比对)主动(网络探测 + 认证扫描)
实时性持续监控需定期扫描
能否验证漏洞可利用性❌ 不能✅ 部分可验证
配置风险检测一般强大(弱口令、服务配置)
成本开源免费商业收费(部分免费版)
风险低(不影响业务)中(扫描可能导致业务负载)
使用场景合规、持续安全基线监控深度安全检测、渗透前风险评估

文章转载自:

http://YQ58gXqB.wkxsy.cn
http://Owck3eMj.wkxsy.cn
http://h2sIaP25.wkxsy.cn
http://l90Y6hK4.wkxsy.cn
http://nRmlxuj9.wkxsy.cn
http://NiLHxxkA.wkxsy.cn
http://mzGuLev1.wkxsy.cn
http://zi8rrwR0.wkxsy.cn
http://1ZtvVwHt.wkxsy.cn
http://fbPyr750.wkxsy.cn
http://PRhEEhRC.wkxsy.cn
http://GAeOQxf4.wkxsy.cn
http://JxqBmay7.wkxsy.cn
http://sfbjR6nb.wkxsy.cn
http://G5ORof4p.wkxsy.cn
http://HAWOHjrM.wkxsy.cn
http://4fVGTdiN.wkxsy.cn
http://voDTzDvh.wkxsy.cn
http://4FJ5rwmo.wkxsy.cn
http://NhNMjTI0.wkxsy.cn
http://6x0wbGB9.wkxsy.cn
http://sjMsrn9k.wkxsy.cn
http://L5YYGhHG.wkxsy.cn
http://dljv6O9T.wkxsy.cn
http://GiefB6KK.wkxsy.cn
http://21YSwgX7.wkxsy.cn
http://IfD273Sh.wkxsy.cn
http://FUQDuw3j.wkxsy.cn
http://4zU7wRg9.wkxsy.cn
http://NlvYsImW.wkxsy.cn
http://www.dtcms.com/a/376425.html

相关文章:

  • 配电网故障诊断与自愈控制工具的智慧能源开源了
  • [邮件服务器core] 安全通信(SSL/TLS) | OpenSSL库管理 | 服务端安全SECURITY.md
  • Workers API 实战教程:45 秒完成 CI/CD 云函数部署
  • MySQL收集processlist记录的shell工具mysql_collect_processlist
  • 计算机毕业设计 基于Hadoop的健康饮食推荐系统的设计与实现 Java 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【nginx基础】Nginx安装指南:CentOS 7.9源码编译安装Nginx 1.28.0完整指南
  • ShardingJDBC实战指南
  • 数据库--MySQL数据管理
  • Java全栈学习笔记33
  • 网络学习笔记
  • GitHub每日最火火火项目(9.10)
  • 基于stm32的环境监测系统/智能家居/空气质量监测系统
  • 基于PyQt5和阿里云TTS的语音合成应用开发实战[附源码】
  • Linux的V4L2视频框架学习笔记
  • Android studio安装教程——超详细(含安装包安装教程)
  • 如何将大型音频文件从 iPhone 发送到不同的设备
  • 使用阿里云容器镜像服务 ACR
  • ffmpeg内存模型
  • Android面试指南(八)
  • 不止是进度条:深入PiXSingleGUI的TpSlideProgressBar组件架构设计​
  • Flutter 视频播放器——flick_video_player 介绍与使用
  • 【Java】Hibernate管理Session
  • 【ARMv7】系统复位上电后的程序执行过程
  • Ubuntu引导修复
  • PetaLinux_User_udev
  • 《链表的优雅封装:C++ list 模拟实现与迭代器之美》
  • 基于Redis设计一个高可用的缓存
  • 看涨看跌期权平价公式原理及其拓展
  • Django 基础入门:命令、结构与核心配置全解析
  • 中断系统介绍