首页/安全/安全加固速查/rsyslog 远程转发(TCP + 磁盘队列)

rsyslog 远程转发(TCP + 磁盘队列)

生产环境转发用 TCP 加磁盘队列:断线重连补发、不丢关键日志;UDP 只适合内网临时排查。

安全加固速查安全更新于 2026-10-13

远端副本是留存的底线

把日志集中转发到远端服务器,是应对本地日志被清除、磁盘写满或主机被重建的基本手段。生产环境应使用 TCP 传输并启用磁盘队列:链路中断时日志先写入本地队列,恢复后自动补发,关键记录不会因短暂断网而丢失。UDP 没有重传机制,网络一抖就丢包,只适合内网临时排查场景,不适合作为合规留存方案。

基本信息

适用平台Linux(rsyslog 8.x 及以上)
配置片段/etc/rsyslog.d/ 下的独立 .conf 文件
动作模块omfwd(配合 queue.type 与 queue.filename)
默认端口514/tcp 或自定义端口,接收端须放行
基线关键日志有远端副本且链路可验证

典型使用场景

  • 合规要求:等保对日志集中存储与留存期有明确条款
  • 入侵取证:主机被清理后仍有远端记录可用
  • 多机统一检索:在集中平台跨主机排查同一事件
  • 容量减负:本地留存期可适度缩短,远端长期保存
  • 故障关联:多台主机的日志时间线对齐分析

转发配置与验证

转发配置与验证
# /etc/rsyslog.d/90-forward.conf
# *.* action(type="omfwd" target="10.0.0.10" port="514" protocol="tcp"
#      action.resumeRetryCount="-1" queue.type="linkedList" queue.filename="fwdq")
rsyslogd -N1 && sudo systemctl restart rsyslog
ss -tn | grep :514                 # 确认与接收端已建立连接
logger -p local0.info "rsyslog-forward-test"   # 写入测试日志
# 在接收端确认:
# sudo tail -5 /var/log/messages | grep rsyslog-forward-test

配置项读法

配置项含义注意点
target/port接收端地址与端口需与接收侧监听配置一致
protocoltcp 或 udp留存场景应选 tcp
queue.type队列类型linkedList 适合磁盘队列
queue.filename队列文件前缀所在目录必须有可写空间
resumeRetryCount断线重试次数-1 表示持续重试
UDP 无重传机制:网络抖动就会丢日志。转发链路与接收端防火墙必须成对验收,只配一端等于没配。

落地要点

  • 队列目录要有足够空间,写满后队列失效会开始丢日志
  • 接收端未监听时发送端会静默重试:联调先看双方连接状态
  • 转发通道建议加密或走专用管理网络,避免日志内容被窃听
  • 用一条带特征的测试日志做端到端验证,而不是只看连接建立
  • 把接收端的留存期与容量纳入同一套监控
转发成功后本地日志仍要保留:本地用于实时排障,远端用于长期留存与取证,两者的作用不可互相替代。

易错点

  • 只配置发送端不验收接收端:日志看似在发,实际无人接收
  • 队列目录空间不足:断网期间队列写不进去,恢复后也无法补发
  • 用 UDP 做长期留存:丢包导致证据链不完整,审计时无法解释缺口
  • 不做端到端验证:连接建立不等于日志落地,需写入特征日志确认

数据来源与参考

  • rsyslog 官方文档:omfwd
  • 等保 2.0:日志集中

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌