Wazuh 4.x中子解码器无法正确解析ossec日志指定字段问题咨询
问题原因
- 正则特殊字符未转义:配置中
regex字段里的|是PCRE2的元字符,代表「或」匹配逻辑,未转义的情况下会把正则拆分为两个独立匹配分支,无法匹配日志里的字面量管道符。 - 锚点使用错误:Wazuh子解码器的
prematch和regex匹配的是父解码器处理后剩余的日志片段,而非完整原始日志,你给两个字段都加了行首锚点^,匹配范围完全错位。 - 冗余配置:子解码器会自动继承父解码器的类型,无需重复写
<type>ossec</type>配置。
解决方案
替换为以下子解码器配置即可:
<decoder name="ossec-domain"> <parent>ossec</parent> <prematch>output: 'domainjoin-cli query\|grep -i Domain':</prematch> <regex type="pcre2">Domain = (\S+)</regex> <order>domain</order> </decoder>
配置说明
- 对管道符
|加反斜杠转义,匹配日志中的字面量管道符 - 去掉错误的行首锚点,直接匹配父解码器传递的日志片段
- 简化匹配逻辑,prematch精准定位命令输出前缀,regex仅负责提取domain字段,降低匹配出错概率
验证方法
配置更新后重启Wazuh管理器,使用/var/ossec/bin/wazuh-logtest工具测试,输入原日志条目后,即可在解码阶段看到提取成功的domain: mydomain.local字段,规则描述也会正常填充domain值。
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

