金融级rsyslog日志传输安全核心是tls双向认证(mtls),需自建ca、用certtool生成证书、服务端配置streamdriver.authmode="x509/name"与permittedpeer限制客户端,客户端强制校验服务端证书,并启用队列防丢与定期轮换。

要在Linux上用Rsyslog实现金融级日志传输安全,核心是启用TLS双向认证(mTLS),确保服务端验证客户端身份、客户端也验证服务端身份,杜绝中间人攻击和非法接入。这不是简单加个加密开关,而是建立一套可信证书链+严格策略的体系。
准备兼容工具与证书目录结构
rsyslog v8.2110.0及以上版本官方推荐使用 certtool(来自GnuTLS套件)生成证书,OpenSSL在新版系统中易因API变更导致握手失败或服务无法启动。
- 安装命令:
CentOS/RHEL:yum install -y gnutls-utils
Ubuntu/Debian:apt-get install -y gnutls-bin gnutls-doc - 验证版本:
certtool --version,确认输出为 GnuTLS ≥ 3.6.0 - 创建清晰证书目录(避免权限混乱):
mkdir -p /etc/rsyslog.d/tls/{ca,server,client}
后续所有私钥文件(*-key.pem)必须设为chmod 600
构建可信CA并签发双向证书
金融场景要求信任锚点可控、可审计,必须自建内部CA,不依赖公网CA。
- 生成CA私钥与根证书:
certtool --generate-privkey --bits 2048 --outfile /etc/rsyslog.d/tls/ca/ca-key.pemcerttool --generate-self-signed --load-privkey /etc/rsyslog.d/tls/ca/ca-key.pem --outfile /etc/rsyslog.d/tls/ca/ca.pem - 为服务端生成证书请求并签名:
先创建配置文件server.tmpl,明确设置organization、cn(建议用FQDN如rsyslog-server.prod.bank.com)、tls_www_server用途,并添加subjectAltName(含IP和DNS);
执行:certtool --generate-request --template server.tmpl --load-privkey /etc/rsyslog.d/tls/server/server-key.pem --outfile /etc/rsyslog.d/tls/server/server.req
再签名:certtool --generate-certificate --load-request /etc/rsyslog.d/tls/server/server.req --load-ca-certificate /etc/rsyslog.d/tls/ca/ca.pem --load-ca-privkey /etc/rsyslog.d/tls/ca/ca-key.pem --template server.tmpl --outfile /etc/rsyslog.d/tls/server/server-cert.pem - 同理为每个日志客户端(如支付网关、核心账务机)生成独立证书,确保可追溯、可吊销
服务端rsyslog配置强制双向校验
仅开启TLS不等于双向认证——关键在 StreamDriver.AuthMode 和 StreamDriver.PermittedPeer 的组合使用。
- 加载模块并监听加密端口(推荐6514,避开传统514冲突):
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name")input(type="imtcp" port="6514" StreamDriver.CAFile="/etc/rsyslog.d/tls/ca/ca.pem" StreamDriver.CertFile="/etc/rsyslog.d/tls/server/server-cert.pem" StreamDriver.KeyFile="/etc/rsyslog.d/tls/server/server-key.pem") - 限制合法客户端范围(防证书冒用):
添加StreamDriver.PermittedPeer="payment-gw*.bank.com"或"core-db-*.bank.com",支持通配符匹配CN或SAN中的DNS名 - 模板与规则示例(按主机隔离存储):
$template TlsRemote,"/var/log/tls/%FROMHOST-IP%/%PROGRAMNAME%.log"*.* ?TlsRemote & ~
客户端配置与合规加固要点
客户端不仅要发送加密日志,还要主动校验服务端证书真实性,防止连接到钓鱼服务器。
- 在客户端配置中(如
/etc/rsyslog.d/50-tls-client.conf)启用TLS输出:module(load="omfwd" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name")*.* action(type="omfwd" target="rsyslog-server.prod.bank.com" port="6514" protocol="tcp" StreamDriver.CAFile="/etc/rsyslog.d/tls/ca/ca.pem" StreamDriver.CertFile="/etc/rsyslog.d/tls/client/client-cert.pem" StreamDriver.KeyFile="/etc/rsyslog.d/tls/client/client-key.pem") - 必须设置
StreamDriver.AuthMode="x509/name",否则跳过服务端证书验证 - 金融环境建议:配置
$ActionQueueMaxDiskSpace 2g+$ActionQueueSaveOnShutdown on,网络中断时本地缓存不丢日志;同时启用$ActionResumeRetryCount -1确保重连不放弃 - 定期轮换证书(CA有效期建议5年,终端证书1年),配合监控告警(如用
openssl x509 -in cert.pem -enddate -noout检查到期日)











