14.5. 配置 TLS 加密的远程日志记录
默认情况下,Rsyslog 以纯文本格式发送 remote-logging 通信。如果您的场景需要保护这个通信频道,您可以使用 TLS 加密它。
要通过 TLS 使用加密传输,请同时配置服务器和客户端。服务器收集和分析由一个或多个客户端系统发送的日志。
				您可以使用 ossl 网络流驱动程序(OpenSSL)或 gtls 流驱动程序(GnuTLS)。
			
如果您的系统具有更高的安全性,例如,没有连接到任何网络或有严格授权的系统,请使用独立的系统作为认证授权(CA)。
				您可以在服务器端上,在 global、module 和 input 级别上使用流驱动程序自定义连接设置,在客户端上,在 global 和 action 级别上使用流驱动程序自定义连接设置。更为具体的配置会覆盖更常规的配置。例如,您可以在全局设置中对大多数连接使用 ossl,而在 input 和 action 设置只对特定连接使用 gtls。
			
先决条件
- 
						有对客户端和服务器系统的 root访问权限。
- 以下软件包安装在服务器和客户端系统上: - 
								rsyslog软件包。
- 
								对于 ossl网络流驱动程序,是rsyslog-openssl软件包。
- 
								对于 gtls网络流驱动程序,是rsyslog-gnutls软件包。
- 
								对于使用 certtool命令生成证书,是gnutls-utils软件包。
 
- 
								
- 在您的日志服务器中,以下证书位于 - /etc/pki/ca-trust/source/anchors/目录中,并使用- update-ca-trust命令更新您的系统配置:- 
								ca-cert.pem- 一个 CA 证书,它可以在日志记录服务器和客户端上验证密钥和证书。
- 
								server-cert.pem- 日志记录服务器的公钥。
- 
								server-key.pem- 日志记录服务器的私钥。
 
- 
								
- 在您的日志记录客户端中,以下证书位于 - /etc/pki/ca-trust/source/anchors/目录中,并使用- update-ca-trust来更新您的系统配置:- 
								ca-cert.pem- 一个 CA 证书,它可以在日志记录服务器和客户端上验证密钥和证书。
- 
								client-cert.pem- 客户端的公钥。
- 
								client-key.pem- 客户端的私钥。
- 如果服务器运行 RHEL 9.2 或更高版本,且启用了 FIPS 模式,客户端必须支持 Extended Master Secret(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制实施 TLS 扩展"Extended Master Secret" 。
 
- 
								
流程
- 配置服务器以从您的客户端系统接收加密日志: - 
								在 /etc/rsyslog.d/目录中创建一个新文件,例如securelogser.conf。
- 要加密通信,配置文件必须包含指向服务器的证书文件的路径、所选身份验证方法,以及支持 TLS 加密的流驱动程序。在 - /etc/rsyslog.d/securelogser.conf文件中添加以下行:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果您更喜欢 GnuTLS 驱动程序,请使用 - StreamDriver.Name="gtls"配置选项。有关比- x509/name严格性低的验证模式的更多信息,请参阅使用- rsyslog-doc软件包安装的文档。
- 可选:在 RHEL 9.4 中提供的 Rsyslog 版本 8.2310 开始,您可以自定义连接配置。为此,将 - input部分替换为以下内容:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										根据您要使用的驱动程序,将 <driver>替换为ossl或gtls。
- 
										将 <ca1>替换为 CA 证书,将<server1-cert>替换为证书,将<server1-key>替换为自定义连接的密钥。
 
- 
										根据您要使用的驱动程序,将 
- 
								将更改保存到 /etc/rsyslog.d/securelogser.conf文件。
- 验证 - /etc/rsyslog.conf文件的语法以及- /etc/rsyslog.d/目录中的任何文件:- rsyslogd -N 1 - # rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 确保 - rsyslog服务在日志记录服务器中运行并启用:- systemctl status rsyslog - # systemctl status rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重启 - rsyslog服务:- systemctl restart rsyslog - # systemctl restart rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:如果没有启用 Rsyslog,请确保 - rsyslog服务在重启后自动启动:- systemctl enable rsyslog - # systemctl enable rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
								在 
- 配置客户端以将加密日志发送到服务器: - 
								在客户端系统上,在 /etc/rsyslog.d/目录中创建一个名为 的新文件,如securelogcli.conf。
- 在 - /etc/rsyslog.d/securelogcli.conf文件中添加以下行:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果您更喜欢 GnuTLS 驱动程序,请使用 - StreamDriver.Name="gtls"配置选项。
- 可选:在 RHEL 9.4 中提供的 Rsyslog 版本 8.2310 开始,您可以自定义连接配置。为此,将 - action部分替换为以下内容:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 
										根据您要使用的驱动程序,将 <driver>替换为ossl或gtls。
- 
										将 <ca1>替换为 CA 证书,将<client1-cert>替换为证书,将<client1-key>替换为自定义连接的密钥。
 
- 
										根据您要使用的驱动程序,将 
- 
								将更改保存到 /etc/rsyslog.d/securelogcli.conf文件中。
- 验证 - /etc/rsyslog.conf文件的语法以及- /etc/rsyslog.d/目录中的其他文件:- rsyslogd -N 1 - # rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 确保 - rsyslog服务在日志记录服务器中运行并启用:- systemctl status rsyslog - # systemctl status rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 重启 - rsyslog服务:- systemctl restart rsyslog - # systemctl restart rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:如果没有启用 Rsyslog,请确保 - rsyslog服务在重启后自动启动:- systemctl enable rsyslog - # systemctl enable rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
								在客户端系统上,在 
验证
要验证客户端系统向服务器发送信息,请按照以下步骤执行:
- 在客户端系统中发送测试信息: - logger test - # logger test- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在服务器系统上,查看 - /var/log/messages日志,例如:- cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: test - # cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: test- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 其中 - <hostname>是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为- root。