用rsyslog实现关键安全日志加密远程同步备份,核心是authpriv、auditd、local6命令审计日志从源头识别、tls加密直送、服务端按ip隔离落盘并worm防护。

用 rsyslog 实现关键安全日志的加密远程同步备份,核心是让 authpriv、auditd、命令审计等高价值日志“出得准、传得密、存得牢、查得清”。不靠 UDP 猜运气,也不把日志先写本地再转发——而是从源头识别、管道接入、TLS 加密直送、服务端隔离落盘并防篡改。
一、精准识别和归集关键安全日志源
Linux 中真正具备审计效力的日志不是全量系统日志,而是以下三类:
-
authpriv.*:SSH 登录、sudo 执行、PAM 认证失败等,路径通常是
/var/log/secure(RHEL)或/var/log/auth.log(Debian) -
auditd 原始日志:内核级操作(如文件访问、权限变更),默认写入
/var/log/audit/audit.log;建议通过imfile模块实时读取,避免轮转丢失 -
用户交互命令(可选增强):用
trap DEBUG+logger -p local6.notice捕获 bash 命令,统一打到local6设施
推荐统一归口到 local6,方便后续规则过滤与 TLS 加密转发。
二、客户端配置:加密转发 + 防丢队列
在被审计主机上新建 /etc/rsyslog.d/30-security-forward.conf:
- 加载必要模块:
module(load="imfile")(读 audit.log)、module(load="omfwd")、module(load="gtls") - 配置 TLS 全局参数:
$DefaultNetstreamDriver gtls,并指定证书路径:$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem、$DefaultNetstreamDriverCertFile /etc/rsyslog.d/client.crt、$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/client.key - 只转发关键设施:
authpriv.* @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format和local6.* @@(o)audit-center.example.com:6514;RSYSLOG_SyslogProtocol23Format - 启用磁盘队列防断连:
$ActionQueueFileName sec_fwd_q、$ActionQueueMaxDiskSpace 1g、$ActionQueueSaveOnShutdown on、$ActionQueueType LinkedList、$ActionResumeRetryCount -1
注意:@@(o) 表示 TCP + TLS 双向验证;若证书未部署完成,可先用 @@(纯 TCP)临时调试,但生产环境必须启用 TLS。
三、服务端配置:TLS 接收 + 主机隔离 + WORM 落盘
在审计中心服务器(如 audit-center.example.com)配置 /etc/rsyslog.d/50-audit-remote.conf:
- 加载模块:
module(load="imtcp")、module(load="gtls") - 全局 TLS 参数:
$DefaultNetstreamDriver "gtls"、$DefaultNetstreamDriverCAFile "/etc/rsyslog.d/ca.pem"(即签发客户端证书的根 CA) - 监听加密端口(不能用 514):
input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name" StreamDriver.PermittedPeer="client.example.com") - 按来源 IP 分目录存储:
template(name="AuditByIP" type="string" string="/var/log/audit-remote/%FROMHOST-IP%/%$YEAR%-%$MONTH%-%$DAY%.log"),再配规则:if $fromhost-ip != '127.0.0.1' then ?AuditByIP & ~ - 目录权限设为
750,属主syslog:adm;日志文件启用 append-only 模式或挂载 WORM 存储(如 ZFS 快照 +chattr +a)
证书权限必须严格:私钥 600,CA 和证书 644,且 owner 为 syslog 或 root:syslog。
四、验证与加固要点
配置完成后需逐项验证:
- 服务端检查监听:
ss -tlnp | grep :6514,确认 rsyslog 进程绑定成功 - 客户端测试连通:
openssl s_client -connect audit-center.example.com:6514 -CAfile /etc/rsyslog.d/ca.pem - 触发一条 sudo 日志,观察服务端对应 IP 目录下是否生成新条目
- 查看
journalctl -u rsyslog -n 50,排查证书路径错误、驱动未加载(rsyslog-gnutls包未装)、端口冲突等问题 - 防火墙放行 6514/tcp,禁止其他 IP 访问该端口;禁用所有
imudp和未 TLS 的imtcp监听
不复杂但容易忽略:证书链完整、端口非特权、队列参数生效、模板末尾加 & ~ 避免重复写入。











