Wazuh 4.x remoted syslog 514 输入移除后如何用 rsyslog 采集网络设备日志?
【免费下载链接】wazuhWazuh - The Open Source Security Platform. Unified XDR and SIEM protection for endpoints and cloud workloads.项目地址: https://gitcode.com/GitHub_Trending/wa/wazuh
在 Wazuh 4.x 中,manager 的remoted模块可以直接在 514 端口接收网络设备(防火墙、路由器、交换机)发来的原始 syslog 消息,配置方式是 manager 的ossec.conf里写<connection>syslog</connection>。从 Wazuh 5.0 开始,这个 syslog 输入能力从remoted中被移除,该模块只负责加密的 agent 连接,514 端口的远程 syslog 输入不再可用。如果原来依赖这条链路采集网络设备日志,需要改为:在一台采集主机上部署 rsyslog 接收 514 端口的 syslog,再在该主机上安装 Wazuh agent,由 agent 的 logcollector 把消息转发给 Wazuh manager。这条迁移没有自动迁移工具,rsyslog 和 agent 都要手动配置。
本文基于 rsyslog 迁移指南,覆盖两种落地方案:rsyslog 写入 systemd journal(Option A),以及 rsyslog 写入按主机拆分的日志文件(Option B)。
4.x 与 5.x 的差异对照
| 方面 | Wazuh 4.x | Wazuh 5.x |
|---|---|---|
| Syslog 接收方 | managerremoted(514 端口) | 外部 syslog 守护进程(rsyslog) |
| 日志进入方式 | 直接进入analysisd | 经 Wazuh agent 的 logcollector |
| 配置位置 | managerossec.conf的<remote>块 | rsyslog 配置 + agentossec.conf |
| 采集主机上是否需要 agent | 不需要 | 需要——5.0 中 manager 不再自带 agent |
| IP 白名单/黑名单 | ossec.conf的<allowed-ips>/<denied-ips> | rsyslog$AllowedSender或主机防火墙规则 |
rsyslog 转发到 manager 的 syslog 消息体与remoted之前从 514 端口收到的内容一致,因此现有的网络设备 decoder 和规则(如cisco-asa、pf、juniper)无需修改继续生效。
准备条件
开始配置前确认以下条件都已满足:
- Wazuh 5.0 或更高版本已完整部署(indexer、manager、dashboard);
- 一台用于运行 rsyslog 的 Linux 主机——可以是 Wazuh manager 所在主机,也可以是独立服务器;
- 该主机已安装 rsyslog;
- 网络设备已配置为向该主机 IP 的 514 端口发送 syslog;
- 该主机已安装 Wazuh agent。
最后一条是 5.0 的关键变化:Wazuh 5.0 中 agent 不会随 manager 一起安装。即使 rsyslog 就跑在 manager 所在主机上,也必须单独安装并注册一个 Wazuh agent。
安装 Wazuh agent
在 Wazuh dashboard 中进入Agent management -> Summary,点击Deploy new agent:
填写所需信息后使用页面生成的命令安装 agent。如果 agent 与 manager 在同一台主机上运行,manager 地址填127.0.0.1。安装完成后启用并启动 agent 服务:
sudo systemctl daemon-reload sudo systemctl enable wazuh-agent sudo systemctl start wazuh-agentagent 会在几秒内出现在 dashboard 的Agent management -> Summary页面,出现即说明注册成功。
Option A:rsyslog → journald → logcollector
rsyslog 收到 syslog 后用omjournal输出模块直接写入 systemd journal,Wazuh agent 默认就会读取 journal,agent 侧不需要任何额外配置。此方案要求采集主机是基于 systemd 的 Linux 系统。
1. 确认 rsyslog 已安装
omjournal模块在大多数发行版中随 rsyslog 主包提供,个别发行版需要单独安装:
# Debian/Ubuntu sudo apt install rsyslog # RHEL/CentOS/Amazon Linux sudo yum install rsyslog2. 配置 rsyslog
创建/etc/rsyslog.d/99-wazuh-remote.conf,内容如下:
module(load="imudp") module(load="imtcp") module(load="omjournal") ruleset(name="remote_to_journal") { action(type="omjournal") } input(type="imudp" port="514" ruleset="remote_to_journal") input(type="imtcp" port="514" ruleset="remote_to_journal")如果原来在 4.x 用<allowed-ips>限制了哪些主机可以发送 syslog,需要在防火墙层做等价限制(下面的网段是文档示例,替换为你实际允许的来源网段):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="514" protocol="udp" accept' sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="514" protocol="tcp" accept' sudo firewall-cmd --reload重启 rsyslog 生效:
sudo systemctl restart rsyslog确认 rsyslog 已在 514 端口监听:
sudo ss -ulnp | grep 514 sudo ss -tlnp | grep 5143. 验证 journal 接收
从任一台能访问采集主机的机器发送一条测试消息(<SYSLOG_HOST_IP>替换为 syslog 采集主机的 IP):
logger -n <SYSLOG_HOST_IP> -P 514 --udp "Test syslog message from migration"在采集主机上用journalctl -f跟踪 journal,测试消息出现即说明 rsyslog → journal 这一跳打通。之后 Wazuh agent 会读取 journal,/var/ossec/etc/ossec.conf无需任何改动。
4. 在 dashboard 验证事件
进入 dashboard 的Explore -> Discover,来自远程设备的事件会以wazuh.protocol.location: journald标识出现:
两个使用限制需要注意:journald 的_HOSTNAME字段是受信字段,journald 总是把它设为本机主机名,包括 rsyslog 在内的任何应用都无法覆盖它;另外在 rsyslog 8.x 上,omjournal的自定义模板可能静默失效,不加模板时远端主机名不会出现在MESSAGE字段中。
Option B:rsyslog → 日志文件 → logcollector
rsyslog 把消息写入/var/log/remote/下按来源主机拆分的日志文件,Wazuh agent 通过<localfile>块监控这些文件。此方案适用于任意 Linux 主机(包括没有 systemd 的系统),并且每个来源设备有独立文件,便于人工排查。
1. 配置 rsyslog
创建/etc/rsyslog.d/99-wazuh-remote.conf:
module(load="imudp") module(load="imtcp") template(name="RemoteHostLogs" type="string" string="/var/log/remote/%FROMHOST-IP%.log") ruleset(name="remote_to_file") { action(type="omfile" dynaFile="RemoteHostLogs") } input(type="imudp" port="514" ruleset="remote_to_file") input(type="imtcp" port="514" ruleset="remote_to_file")模板中的%FROMHOST-IP%是 rsyslog 内置属性,按来源 IP 为每台设备生成独立日志文件。同样的<allowed-ips>等价防火墙规则可参照 Option A 第 2 步添加。
在启动 rsyslog 之前先创建目标目录。Debian/Ubuntu 上 rsyslog 会降权到普通用户syslog运行,无法自行在/var/log下创建目录,必须先由 root 建好并交给该用户;RHEL 系系统上 rsyslog 以root运行,会自动创建:
sudo install -d -o syslog -g adm /var/log/remote然后重启并确认监听:
sudo systemctl restart rsyslog sudo ss -ulnp | grep 514 sudo ss -tlnp | grep 5142. 配置 agent 监控日志文件
编辑采集主机上 agent 的配置文件/var/ossec/etc/ossec.conf,添加<localfile>块:
<ossec_config> <localfile> <location>/var/log/remote/*.log</location> <log_format>syslog</log_format> </localfile> </ossec_config>这一条通配块覆盖 rsyslog 写入/var/log/remote/的所有文件,之后新增来源设备无需再改 agent 配置。
自定义模板必须带时间戳。Wazuh 内置的 syslog decoder 要求消息以 syslog 时间戳作为第一个字段才能匹配。上面的dynaFile写法使用 rsyslog 默认消息格式(含Jun 3 08:14:22这类时间戳),可以直接用;如果改用自定义模板,必须把%timereported:::date-rfc3164%放在开头。文档给出的正反示例(均为文档示例):
# 正确 —— 带时间戳,Wazuh syslog decoder 能匹配 template(name="MsgFmt" type="string" string="%timereported:::date-rfc3164% %HOSTNAME% %app-name%[%procid%]: %msg%\n") action(type="omfile" file="/var/log/remote/syslog.log" template="MsgFmt") # 错误 —— 无时间戳,事件落入 wazuh-events-v5-unclassified-* 索引且只有 event.original template(name="MsgFmt" type="string" string="%HOSTNAME% %app-name%[%procid%]: %msg%\n")缺少时间戳的事件只会出现在wazuh-events-v5-unclassified-*索引中,仅有event.original字段、没有解码后的字段,排查时会很难定位原因,所以这条限制务必确认。
重启 agent 使配置生效:
sudo systemctl restart wazuh-agent3. 验证 logcollector 正在读取文件
sudo grep "logcollector" /var/ossec/logs/ossec.log | grep "remote"文档示例的期望输出:
2026/06/03 08:16:01 wazuh-logcollector: INFO: (1950): Analyzing file: '<log_file_configured>'.说明 logcollector 已开始分析配置的日志文件。最后在 dashboard 的Explore -> Discover中按location: /var/log/remote/过滤,能看到远程设备事件即完成迁移:
关于来源 IP 的差异
4.x 中remoted直接收到设备连接,来源 IP 天然可用;5.x 中 agent 从本地文件或 journal 读取,原始来源 IP 只有在 rsyslog 记录下来时才保留:Option B 的dynaFile模板已把%FROMHOST-IP%放进文件路径,每设备一个文件;Option A 或自定义模板则可以通过%fromhost-ip%之类的模板属性写入消息体。如果现有规则依赖来源 IP 字段,迁移后需要按上述方式确认 IP 仍然可取。
完整对照与 4.x 侧示例配置(含 4.x 的<remote>块和local_rules.xml测试规则)见 docs/guide/migration/syslog-input-4x-to-5x.md 中的 Migration example 一节。
【免费下载链接】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),仅供参考