Rsyslog实现远程加密审计需三点:TLS加密传输、按IP隔离存储、筛选authpriv/local6日志;服务端配置TLS接收与模板分目录,客户端启用TLS转发并加固权限与轮转。

要让 Rsyslog 实现服务器日志的远程加密传输与集中审计,核心是三点:用 TLS 加密通道替代明文传输、按来源主机隔离存储、聚焦安全类日志(如 authpriv、local6)做精准转发。不加密、不隔离、不筛选的日志同步,无法满足等保或内部审计要求。
服务端:启用 TLS 接收并按 IP 分目录存审计日志
在日志服务器(如 audit-center.example.com)上操作:
- 安装 rsyslog-gnutls 包(Debian/Ubuntu:apt install rsyslog-gnutls;RHEL/CentOS:yum install rsyslog-gnutls),运行
rsyslogd -v | grep gnutls确认模块已加载 - 创建证书目录并放置 CA 根证书、服务端证书和私钥(路径如
/etc/rsyslog.d/ca.pem、/etc/rsyslog.d/server.crt、/etc/rsyslog.d/server.key),私钥权限必须为600,属主为syslog - 新建配置文件
/etc/rsyslog.d/50-audit-tls.conf,写入:module(load="imtcp")<br>module(load="gtls")<br>global( DefaultNetstreamDriver="gtls"<br> DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ca.pem"<br> DefaultNetstreamDriverCertFile="/etc/rsyslog.d/server.crt"<br> DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/server.key" )<br>input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/certvalid")<br>template(name="AuditByIP" type="string" string="/var/log/audit-remote/%fromhost-ip%/audit.log")<br>if $syslogfacility-text == 'local6' or $syslogfacility-text == 'authpriv' then ?AuditByIP & stop
- 创建日志根目录:
sudo mkdir -p /var/log/audit-remote,设置挂载选项(如noexec,nosuid,nodev)并赋权:chown syslog:adm /var/log/audit-remote
客户端:只转发关键安全日志,并启用 TLS+队列防丢
在每台被审计服务器上操作:
- 确保 auditd 日志走 local6:编辑
/etc/audit/auditd.conf,设dispatcher = /sbin/audispd和log_format = NOLOG;再启用/etc/audisp/plugins.d/syslog.conf,设format = syslog、facility = local6 - 若需记录用户命令,添加 trap 到
/etc/profile:function bash2syslog {<br> cmd=$(fc -ln -0 2>/dev/null || true)<br> [ -n "$cmd" ] && logger -p local6.notice -t "bash[$$]" "$USER@$HOSTNAME: $cmd"<br>}<br>trap bash2syslog DEBUG - 新建
/etc/rsyslog.d/30-security-tls.conf,加载模块并配置转发:module(load="omfwd")<br>module(load="gtls")<br>$DefaultNetstreamDriver gtls<br>$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem<br>$DefaultNetstreamDriverCertFile /etc/rsyslog.d/client.crt<br>$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/client.key<br>authpriv.* @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format<br>local6.* @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format<br>$ActionQueueFileName sec_fwd_q<br>$ActionQueueMaxDiskSpace 1g<br>$ActionQueueSaveOnShutdown on<br>$ActionQueueType LinkedList<br>$ActionResumeRetryCount -1
加固与验证:权限、轮转与连通性检查
服务端本地存储和传输链路都需闭环保护:
- 配置 logrotate 对
/var/log/audit-remote/**/audit.log轮转,使用create 640 syslog:adm,并在postrotate中执行kill -USR1 $(cat /var/run/rsyslogd.pid 2>/dev/null) - 对归档日志启用追加只读:
chattr +a /var/log/audit-remote/*/*.log;敏感目录可定期用aide校验哈希 - 防火墙仅放行目标客户端 IP 访问 6514 端口(TCP),禁用 UDP 514 和明文 TCP 514
- 验证步骤:客户端执行
logger -p authpriv.info "test from $(hostname)",服务端检查/var/log/audit-remote/[client-ip]/audit.log是否落盘;同时用journalctl -u rsyslog -n 50查看有无 TLS 握手失败或证书拒绝日志
整个过程不复杂但容易忽略细节——比如漏装 rsyslog-gnutls、私钥权限不对、端口仍用 514、转发规则没加 (o) 驱动声明。只要把证书、端口、模块、权限、日志源这五点对齐,就能跑通一条可信的审计日志链。

















