在 Linux 运维工作中,syslog 作为系统日志的基石,默认采用明文传输,极易导致敏感信息泄露。为确保日志数据的机密性与完整性,对 syslog 日志进行加密保护已成为一项必要选择。下面将详细拆解几种常用的加密实现方案,步骤并不复杂,关键是根据自身环境选择最合适的方案。
方案一:利用 Syslog-ng 的 TLS 模块直接加密
Syslog-ng 原生支持 TLS 加密,只需加载对应的协议模块。具体操作分为三步:
安装 Syslog-ng
在基于 Debian 的发行版中,一条命令即可完成安装:
sudo apt-get install syslog-ng
配置 TLS 监听
编辑主配置文件(通常位于 /etc/syslog-ng/syslog-ng.conf),在 options 段之后,添加一个通过 TLS 监听的源。以下是一份典型配置示例:
@version: 3.24
options {
flush_lines(0);
time_reopen(0);
chain_hostnames(off);
use_dns(no);
create_dirs(yes);
};
source s_tls {
tcp(
ip(0.0.0.0)
port(514)
transport("tls")
tls(
key_file("/etc/ssl/private/syslog-ng.key")
cert_file("/etc/ssl/certs/syslog-ng.crt")
)
);
};
destination d_encrypted {
file("/var/log/syslog-ng/encrypted.log"
template("${ISODATE} ${HOST} ${LEVEL}: ${MESSAGE}\n")
);
};
log {
source(s_tls);
destination(d_encrypted);
};
注意这里使用了 transport("tls") 并指定了证书和私钥路径。当然,你需要提前准备好对应的证书文件。
重启服务
配置完成后,重新启动 Syslog-ng 服务:
sudo systemctl restart syslog-ng
这样一来,所有通过 TCP 514 端口发送的 syslog 消息都会被 TLS 加密传输。
方案二:rsyslog + Stunnel 经典组合拳
rsyslog 本身不直接内置 TLS 支持,但借助轻量级 TLS 隧道工具 Stunnel,可以轻松实现加密传输。步骤稍多,但胜在稳定灵活。
安装软件
一条命令同时安装 rsyslog 和 stunnel4:
sudo apt-get install rsyslog stunnel4
配置 Stunnel
新建 Stunnel 配置文件,例如 /etc/stunnel/stunnel.conf,内容如下:
[syslog]
accept = 514
connect = 127.0.0.1:6514
cert = /etc/ssl/certs/stunnel.pem
该配置让 Stunnel 在 514 端口接受明文连接,然后通过加密隧道转发到本地的 6514 端口。rsyslog 则监听 6514 端口接收解密后的日志数据。
配置 rsyslog
在 /etc/rsyslog.d/ 目录下创建一个新文件(例如 50-default.conf),将日志定向到 Stunnel 监听的本地端口:
if $programname == 'syslog' then @@localhost:6514
& stop
注意这里的 @@ 表示使用 TCP 协议。
生成自签名证书
Stunnel 需要证书,可以使用 OpenSSL 快速生成:
sudo mkdir -p /etc/ssl/certs /etc/ssl/private
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/stunnel.pem \
-out /etc/ssl/certs/stunnel.pem
生产环境建议使用正规 CA 签发的证书,以增强安全性。
启动服务
依次重启 rsyslog 和 stunnel4:
sudo systemctl restart rsyslog
sudo systemctl restart stunnel4
完成上述配置后,客户端发送到 514 端口的 syslog 消息会被自动加密传输,而 rsyslog 接收到的则是解密后的原始日志内容。
方案三:借助第三方日志管理工具(更省心)
如果觉得手动配置 TLS 过于繁琐,或者需要更强大的日志分析能力,可以直接采用商业方案。Sysdig Secure、Splunk、Graylog 等工具均内置了日志加密传输功能,并提供搜索、告警和可视化面板。它们通常基于 Agent 收集端到端的加密通道,运维负担更小。当然,成本也相应提高。
无论选择哪种方法,加密证书和私钥一定要妥善保管。一旦泄露,加密便形同虚设。建议将密钥文件权限设为 600,并定期轮换证书,以确保持续的安全防护。
