求助:修复Wazuh Syslog解码器语法错误与日志匹配问题
Wazuh Syslog解码器修复方案
问题分析
你的解码器存在两个核心问题:
- 正则匹配范围错误:Wazuh中
<prematch>匹配日志开头的时间后,<regex>仅需匹配剩余内容,但你的正则仍尝试匹配完整日志(包含开头时间),导致匹配失败。 - 正则兼容性不足:现有正则仅适配带
New的CONNECT日志,无法匹配无New的DISCONNECT日志,且未处理两种日志结尾的格式差异。
修复后的解码器
<decoder name="switch_log"> <prematch>^\w{3} \d{1,2} \d{2}:\d{2}:\d{2}</prematch> <regex>(\S+) %AAA-I-(CONNECT|DISCONNECT):(?: New)? http connection for user (\S+), source (\S+) destination (\S+),? (.*)$</regex> <order>hostname, action, user, source_ip, destination_ip, message</order> </decoder>
关键修改说明
- 移除重复时间匹配:
<regex>不再包含开头的时间部分,仅处理<prematch>之后的剩余日志内容。 - 兼容两种日志格式:
- 使用
(?: New)?非捕获组,让New字段可选,同时不占用<order>中的字段位置。 - 添加
,?匹配可选的逗号,适配DISCONNECT日志中destination后无逗号的格式。
- 使用
- 正则分组对齐:调整后的正则分组与
<order>中的字段一一对应,确保解析后字段正确映射。
验证效果
该解码器可同时解析两种日志:
- DISCONNECT日志解析结果:
- hostname:
2.2.2.2 - action:
DISCONNECT - user:
admin - source_ip:
1.1.1.1 - destination_ip:
2.2.2.2 - message:
TERMINATED
- hostname:
- CONNECT日志解析结果:
- hostname:
2.2.2.2 - action:
CONNECT - user:
admin - source_ip:
1.1.1.1 - destination_ip:
2.2.2.2 - message:
local user table ACCEPTED.
- hostname:
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

