01 概览:CentOS Syslog 日志传输加密的必要性
背景与安全目标
在企业运维中,日志是可追溯系统状态与故障的重要证据,如果传输过程被窃取或篡改,将直接危及安全审计与故障定位。因此,本文聚焦的目标是通过TLS/TLS-like加密等机制,确保CentOS 上 Syslog 日志传输的机密性与完整性,并验证端到端的信任关系。
无加密的日志传输容易暴露敏感信息,包括主机名、时间、应用日志内容等,可能被中间人截获。因此实现加密传输与证书信任链是当前运维的最佳实践之一。
本文的主题句是 CentOS Syslog 日志传输加密方法:从原理到实战的完整指南,将从原理出发逐步带你落地到生产环境中的完整实现。
02 原理基础:TLS、DTLS 与 rsyslog 的传输安全
核心技术要素
TLS 为传输层提供机密性与完整性校验,通过公私钥、证书链以及对称会话密钥实现数据加密。
rsyslog 支持通过流驱动(StreamDriver)实现对 TCP/UDP 的加密传输,常用的驱动包括 gtls/ossl,可在服务端和客户端通过证书进行身份认证与信任验证。
RELP 是 rsyslog 的可靠日志传输协议,搭配 TLS 可以在保证有序性与重传能力的同时实现加密传输,适用于大规模集中式日志收集场景。
03 架构设计:在 CentOS 上实现加密传输的总体架构
系统组件与交互
核心组件包括:Syslog 客户端、Syslog 服务器、证书颁发机构(CA)以及审计/备份组件,它们共同形成 TLS 信任链和加密传输路径。
在 CentOS 环境中,需要提前准备证书、私钥和受信任的 CA,并在防火墙、SELinux 等层面确保端口可达与策略一致性。

网络拓扑设计要点,如采用专用日志网络、限制流量来源、开启双向认证以提升安全性;同时考虑性能开销与握手成本,确保高并发场景下仍具备稳定性。
04 实战一:使用 TLS 加密 TCP 日志传输(rsyslog TLS)
准备工作:证书与信任链
先搭建信任链,生成 CA、服务端证书和客户端证书,并确保证书包含正确的主机名(CN/SAN)以实现严格身份校验。
证书链与私钥保护,应将私钥文件权限设置为只有 root 可读写,并对证书进行定期轮换以降低风险。
验证步骤,在正式启用前使用 openssl 验证链路及私钥配对是否正确,从而避免握手失败。
# 1) 生成 CA
openssl genrsa -out /etc/pki/CA/private/ca.key 2048
openssl req -x509 -new -nodes -key /etc/pki/CA/private/ca.key -days 3650 -out /etc/pki/CA/certs/ca.pem -subj "/CN=LoggingCA"# 2) 生成服务端证书并用 CA 签名
openssl genrsa -out /etc/pki/tls/private/rsyslog-server.key 2048
openssl req -new -key /etc/pki/tls/private/rsyslog-server.key -out /tmp/server.csr -subj "/CN=logserver.example.com"
openssl x509 -req -in /tmp/server.csr -CA /etc/pki/CA/certs/ca.pem -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -out /etc/pki/tls/certs/rsyslog-server.crt -days 365# 3) 生成客户端证书并用 CA 签名
openssl genrsa -out /etc/pki/tls/private/rsyslog-client.key 2048
openssl req -new -key /etc/pki/tls/private/rsyslog-client.key -out /tmp/client.csr -subj "/CN=logclient"
openssl x509 -req -in /tmp/client.csr -CA /etc/pki/CA/certs/ca.pem -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -out /etc/pki/tls/certs/rsyslog-client.crt -days 365
# 4) 许可与保护(示例命令,实际按系统路径调整)
chmod 600 /etc/pki/tls/private/rsyslog-server.key
chmod 600 /etc/pki/tls/private/rsyslog-client.key
chmod 644 /etc/pki/tls/certs/rsyslog-server.crt
chmod 644 /etc/pki/tls/certs/rsyslog-client.crt
配置示例与要点
服务端配置要点:启用 TCP 入口并使用 TLS 流驱动,指定 CA、服务端证书和私钥。
客户端配置要点:指向 CA、服务端证书并绑定私钥,确保服务端证书的主机名和实际服务器匹配。
# 服务器端 rsyslog.conf(示例,具体路径按系统调整)
module(load="imtcp")
input(type="imtcp" port="6514" StreamDriver.Name="ossl" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca-bundle.crt
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/rsyslog-server.crt
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rsyslog-server.key
# 客户端 rsyslog.conf(示例,按实际路径调整)
$DefaultNetstreamDriverCAFile /etc/pki/tls/certs/ca-bundle.crt
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/rsyslog-client.crt
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rsyslog-client.key# 发送端参数(示例)
*.* action(type="mmglog" target="logserver.example.com" port="6514" protocol="tcp" StreamDriver.Name="ossl" StreamDriver.Mode="1" StreamDriver.AuthMode="x509/name" StreamDriver.AuthMode="x509/name" StreamDriver.CAFile="/etc/pki/tls/certs/ca.pem")
05 实战二:RELP TLS 加密传输
RELP 基本概念与优势
RELP 提供有序可靠传输和确认机制,在高吞吐日志场景下比简单的 UDP/TCP 更稳定;通过 TLS 可以确保传输链路的机密性与完整性。
本节目标是将 RELP 与 TLS结合,实现远程日志的加密传输与容错能力,降低日志丢失风险。
注意要点:RELP 端口、证书位置、以及服务端 TLS 相关设置需与前述 TLS TCP 场景保持一致的信任策略。
# 服务端(接收端)示例
module(load="omrelp")
input(type="relp" port="2514" TLS="1" TLSCAFile="/etc/pki/tls/certs/ca.pem" TLSCertFile="/etc/pki/tls/certs/rsyslog-server.crt" TLSKeyFile="/etc/pki/tls/private/rsyslog-server.key")# 客户端(发送端)示例
module(load="omrelp")
action(type="omrelp" target="logserver.example.com" port="2514" TLS="1" TLSCAFile="/etc/pki/tls/certs/ca.pem" TLSCertFile="/etc/pki/tls/certs/rsyslog-client.crt" TLSKeyFile="/etc/pki/tls/private/rsyslog-client.key")
端到端 TLS 配置要点
双向认证需求时,需在服务器和客户端分别配置证书并启用 TLS 验证,确保双方身份可核验。
密钥轮换策略,建议设计定期轮换证书、自动更新信任链,以及在遇到密钥泄露时快速撤销证书。
监控与告警,应对 TLS 握手失败、证书过期等事件设置告警,确保日志传输不中断。
# RELP TLS 常见配置片段(简化示例)
# 服务端
input(type="relp" port="2514" TLS="1" TLSAuthMode="x509/name" TLSCAFile="/etc/pki/tls/certs/ca.pem" TLSCertFile="/etc/pki/tls/certs/rsyslog-server.crt" TLSKeyFile="/etc/pki/tls/private/rsyslog-server.key")# 客户端
action(type="omrelp" target="logserver.example.com" port="2514" TLS="1" TLSAuthMode="x509/name" TLSCAFile="/etc/pki/tls/certs/ca.pem" TLSCertFile="/etc/pki/tls/certs/rsyslog-client.crt" TLSKeyFile="/etc/pki/tls/private/rsyslog-client.key")
06 证书管理与信任链
证书生命周期与轮换
证书应定期轮换,以降低长期暴露的风险;建立自动化的续签、分发与回滚流程,确保日志传输不中断。
信任链的维护,需要把 CA 证书放入受信任存储,并在中间件中同步更新,防止信任颠簸导致握手失败。
吊销与应急响应,建立证书吊销列表(CRL)或使用 OCSP 来快速识别失效证书,并在发现风险时即时切换到备用证书。
# 证书轮换示例(简化)
# 制作新服务端证书并重新加载
openssl genrsa -out /etc/pki/tls/private/rsyslog-server-new.key 2048
openssl req -new -key /etc/pki/tls/private/rsyslog-server-new.key -out /tmp/rsyslog-server-new.csr -subj "/CN=logserver.example.com"
openssl x509 -req -in /tmp/rsyslog-server-new.csr -CA /etc/pki/CA/certs/ca.pem -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -out /etc/pki/tls/certs/rsyslog-server-new.crt -days 365
# 更新服务器端证书路径配置
$DefaultNetstreamDriverCertFile /etc/pki/tls/certs/rsyslog-server-new.crt
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/rsyslog-server-new.key
07 常见问题与排错
常见错误场景
握手失败,通常由证书不匹配、私钥错配或时间同步偏差引起,需要检查证书链、私钥及系统时钟。
证书过期或吊销,导致 TLS 验证失败,应设定自动化轮换与告警机制,确保及时更新证书。
网络阻断或防火墙策略,请确认 TCP 端口(6514、2514 等)对日志源/目标是开放状态,且未被中间设备阻断。
# 常见诊断命令(示例)
# 验证证书和密钥配对
openssl verify -CAfile /etc/pki/tls/certs/ca.pem /etc/pki/tls/certs/rsyslog-server.crt# 测试与服务器的 TLS 握手
openssl s_client -connect logserver.example.com:6514 -CAfile /etc/pki/tls/certs/ca.pem# 查看 rsyslog 日志(排错阶段)
tail -f /var/log/rsyslogd.log


