rsyslog远程日志同步需启用tls加密、强制客户端证书验证、分离审计日志路径、禁用明文协议,并配置权限控制与日志轮转。服务端监听6514端口,按ip分目录存储;客户端通过@@(o)加密转发local6日志;审计日志须设750权限、sha256校验及压缩归档。

要实现 Rsyslog 远程日志同步并增强审计数据安全性,核心在于:启用 TLS 加密传输、强制客户端身份验证、分离审计日志路径、禁用明文协议,并配合权限与轮转策略。不加密、不验签、不隔离的远程日志等于裸奔。
一、服务端配置(接收端):启用 TLS 并绑定审计专用端口
在 /etc/rsyslog.d/50-audit-remote.conf 中写入:
- 加载模块:module(load="imtcp") module(load="gtls")
- 配置 TLS 全局参数:global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ca.pem" DefaultNetstreamDriverCertFile="/etc/rsyslog.d/server.crt" DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/server.key" )
- 监听加密端口(如 6514):input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name" StreamDriver.PermittedPeer="client.example.com")
- 按主机/IP 分目录存审计日志:template(name="AuditByHost" type="string" string="/var/log/audit-remote/%fromhost-ip%/audit.log") rule(base="*.info" facility="local6" template="AuditByHost")(假设 auditd 日志通过 local6 发送)
二、客户端配置(发送端):绑定审计日志源并强制加密上报
确保 auditd 将日志转发给 rsyslog,再由 rsyslog 加密发往服务端:
- 修改 /etc/audit/rules.d/remote.rules,追加:-w /var/log/audit/ -p wa -k audit_remote(可选,强化本地审计)
- 在 /etc/rsyslog.d/20-audit-forward.conf 中:module(load="omfwd") module(load="gtls") $DefaultNetstreamDriver gtls $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem $DefaultNetstreamDriverCertFile /etc/rsyslog.d/client.crt $DefaultNetstreamDriverKeyFile /etc/rsyslog.d/client.key *.* @@(o)server.example.com:6514;RSYSLOG_ForwardFormat
- 关键:使用 @@(o) 表示 TCP+TLS;local6.* @@(o)... 可更精准只转发 auditd 日志(需 auditd 配置 /etc/audit/auditd.conf 中 log_format = NOLOG + dispatcher = /sbin/audispd,并在 /etc/audisp/plugins.d/syslog.conf 启用并设 format = syslog,facility = local6)
三、审计数据加固:权限、完整性与防篡改
远程日志只是第一步,落地后的防护同样关键:
- 设置日志目录严格权限:chown -R root:adm /var/log/audit-remote/ && chmod 750 /var/log/audit-remote/ && find /var/log/audit-remote -type f -exec chmod 640 {} \;
- 启用日志校验(推荐 ausearch + aureport 或第三方工具如 integrit),或使用 rsyslog-gnutls 搭配 librelp 的消息摘要功能(需编译支持)
- 配置 logrotate 强制压缩与哈希归档:/var/log/audit-remote/**/*.log { daily compress delaycompress missingok notifempty create 640 root adm sharedscripts postrotate /usr/bin/sha256sum $1 >> /var/log/audit-remote/checksums.log endscript }
四、验证与排错要点
别跳过验证,常见失败点就几个:
- 证书域名匹配:Client 的 Subject CN 或 subjectAltName 必须与服务端 StreamDriver.PermittedPeer 一致
- 时间同步必须开启(chrony/systemd-timesyncd),TLS 握手对时钟漂移敏感(>5 分钟常导致 handshake failure)
- 检查 SELinux:若启用,需运行 setsebool -P sysnet_dns_name_resolve 1 && semanage port -a -t syslog_port_t -p tcp 6514
- 用 openssl s_client -connect server.example.com:6514 -CAfile ca.pem 手动测试 TLS 连通性










