实现服务器敏感审计数据远程安全传输,必须同时满足TLS加密传输、按IP隔离存储、精准筛选authpriv/local6日志三项核心要求,缺一不可。

要实现服务器敏感审计数据的远程安全传输,核心不是“用什么工具”,而是构建一条可信、可控、可审计的加密通道。明文传日志等于把钥匙交给网络中间所有设备;只加密不隔离等于把所有人的账本混装进一个保险箱;不筛选日志则让加密通道沦为带宽黑洞。真正满足等保、内审或合规要求的方案,必须同时解决传输加密、来源隔离和内容聚焦三个问题。
一、选对协议:优先用 TLS,慎用 SSH 隧道做日志主通道
TLS 是专为可靠、批量、持续的日志流设计的工业级方案;SSH 隧道适合临时调试或小流量转发,但不适合长期承载 auditd 或 rsyslog 的高频率日志流——它缺乏原生重连、队列缓冲和会话复用能力,容易丢日志。
- 服务端启用
imtcp + gtls模块,绑定 6514 端口,加载 CA 证书、服务端证书及私钥(chmod 600 server.key) - 客户端配置
action(type="omfwd" protocol="tcp" target="audit-center.example.com" port="6514" Template="RSYSLOG_SyslogProtocol23" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name") - 避免使用自签名证书直连;生产环境务必由内部 CA 签发,客户端通过
DefaultNetstreamDriverCAFile指定信任根
二、精准筛选:只传 authpriv 和 local6,拒绝全量日志外送
审计数据不是系统日志的简单复制。authpriv 记录用户认证行为(sudo、ssh 登录、密码修改),local6 是 auditd 默认输出设施——这两类日志才构成最小必要审计面。其他 facility(如 kern、mail、daemon)不仅增加传输负担,更可能暴露非审计意图的系统细节。
- 在客户端 rsyslog 中加过滤规则:
if $syslogfacility-text == 'authpriv' or $syslogfacility-text == 'local6' then @audit-center.example.com:6514;RSYSLOG_SyslogProtocol23 & stop - 确保 auditd 正确输出到 syslog:
/etc/audisp/plugins.d/syslog.conf中设format = syslog、facility = local6 - 禁用
imuxsock或imjournal的无差别转发,防止非审计日志“搭车”外泄
三、按源隔离:每个 IP 对应独立目录,便于溯源与权限管控
集中存储不等于集中堆放。若所有主机日志都写入同一文件,一则无法快速定位某台服务器异常,二则单点权限失控即导致全部审计数据泄露。按 IP 分目录是逻辑隔离最简、最有效的方式。
- 服务端定义模板:
template(name="AuditByIP" type="string" string="/var/log/audit-remote/%fromhost-ip%/audit.log") - 配合条件路由:
if $syslogfacility-text == 'authpriv' or $syslogfacility-text == 'local6' then ?AuditByIP & stop - 创建目录时加挂载选项:
mount -o remount,noexec,nosuid,nodev /var/log/audit-remote,并设属主chown -R syslog:adm /var/log/audit-remote
四、加固配套:防丢、防篡改、防未授权访问
加密通道只是起点。日志到达服务端后,还需确保其不被覆盖、不被伪造、不被越权读取。
- 启用 rsyslog 内置队列:
action(queue.filename="audit_queue" queue.maxdiskspace="1g" queue.saveonshutdown="on"),防止网络抖动丢日志 - 服务端开启
$ActionFileChownGroup和$ActionFileDefaultGroup,限制日志文件组权限 - 审计目录禁止 world-writable,建议配合 logrotate 设置
create 640 syslog adm,并启用sharedscripts调用 sha256sum 归档校验

















