Rsyslog 实现安全日志实时转发需三点:明确日志源(authpriv、local6 承载 auditd 与命令审计)、启用 TCP+TLS 可靠传输、服务端按主机/IP 和日期隔离存储。配置含客户端 imfile 监控、队列防丢,服务端 TLS 接收、IP 白名单及模板归档。

要让 Rsyslog 将系统安全日志实时转发至远程审计中心,核心是三点:明确日志源(如 authpriv、auditd 或自定义的 local6)、启用可靠传输(TCP + 可选 TLS)、并在服务端做好接收与归档。不依赖 UDP,避免丢日志;不只转发全部日志,而是聚焦安全相关条目。
一、识别并归类关键安全日志源
Linux 中的安全事件主要来自三类:
-
authpriv.*:SSH 登录、sudo 操作、PAM 认证等,路径通常为
/var/log/secure(RHEL/CentOS)或/var/log/auth.log(Debian/Ubuntu) -
Auditd 日志:内核级操作审计,原始日志在
/var/log/audit/audit.log,需通过imfile模块读取或配置audispd转发到 syslog 设施(推荐local6) -
用户命令审计(可选增强):通过
trap DEBUG+logger -p local6.notice捕获交互式 shell 命令,同样走local6
建议统一使用 local6 设施承载所有审计类日志(含 auditd 和 bash 命令),便于后续规则隔离和加密转发。
二、客户端配置:精准转发 + TCP 可靠传输
在客户端(被审计主机)创建 /etc/rsyslog.d/30-security-forward.conf:
module(load="imfile") # 若需读 audit.log 文件 $InputFileName /var/log/audit/audit.log $InputFileTag tag_audit: $InputFileStateFile audit-log-state $InputFileFacility local6 $InputFileSeverity info $InputRunFileMonitor <h1>只转发 authpriv 和 local6(即 auditd + 用户命令)</h1><p>authpriv.<em> @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format local6.</em> @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format</p><h1>启用队列防断连(必加)</h1><p>$ActionQueueFileName sec_fwd_q $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
说明:
• @@(o) 表示 TCP + TLS 加密(需提前部署证书)
• 若暂不启用 TLS,改用 @@(纯 TCP),端口保持 514 或自定义如 6014
• 队列参数确保网络抖动或服务端短暂不可达时日志不丢失
三、服务端配置:安全接收 + 主机隔离存储
在远程审计中心(audit-center.example.com)配置 /etc/rsyslog.d/40-audit-receive.conf:
module(load="imtcp") module(load="gtls") <p>global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ca.pem" DefaultNetstreamDriverCertFile="/etc/rsyslog.d/server.crt" DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/server.key" )</p><p>input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name")</p><p>template(name="AuditByHost" type="string" string="/var/log/audit-remote/%fromhost-ip%/%$year%-%$month%-%$day%/audit.log") local6.<em> ?AuditByHost authpriv.</em> ?AuditByHost</p><h1>可选:拒绝非授权客户端</h1><p>if $fromhost-ip != '192.168.10.0/24' and $fromhost-ip != '10.20.30.0/24' then stop
关键点:
• 模板中嵌入日期路径,避免单文件过大,也利于按天归档与清理
• stop 规则实现 IP 白名单,防止未授权主机投递伪造日志
• 所有接收目录需提前创建并赋予 rsyslog:adm 权限:mkdir -p /var/log/audit-remote/{192.168.10.5,10.20.30.12}/2026-04-13/ && chown -R rsyslog:adm /var/log/audit-remote
四、加固与验证要点
完成配置后,还需落实以下动作:
-
证书管理:服务端 CA 和证书须由可信内网 CA 签发;客户端证书若启用双向认证,需在服务端
StreamDriver.PermittedPeer明确列出主机名或 IP -
SELinux / Firewall:RHEL/CentOS 上运行
setsebool -P syslogd_read_network on;防火墙放行 TCP 6514(或对应端口) -
本地日志保留:不因转发而清空本地
/var/log/secure和/var/log/audit/audit.log,满足“本地可查、远程可审”双要求 -
快速验证方法:在客户端执行
logger -p local6.notice "test audit event",然后在服务端运行tail -f /var/log/audit-remote/客户端IP/$(date +%Y-%m-%d)/audit.log查看是否实时出现
整套流程不复杂但容易忽略队列与权限细节。只要设施匹配、路径明确、传输可靠,就能支撑等保三级或 ISO 27001 对安全日志集中审计的基本要求。

















