15.3. 使用带有 TLS 的 logging RHEL 系统角色
传输层安全性(TLS)是一种加密协议,旨在允许计算机网络上的安全通信。
您可以使用 logging
RHEL 系统角色配置日志消息的安全传输,其中一个或多个客户端从 systemd-journal
服务获取日志,并在使用 TLS 时将它们传送到远程服务器。
通常,在远程日志记录解决方案中传输日志的 TLS 在不可信或公共网络(如互联网)发送敏感数据时使用。另外,通过在 TLS 中使用证书,您可以确保客户端将日志转发到正确的可信服务器。这可以防止诸如"man-in-the-middle"的攻击。
15.3.1. 配置带有 TLS 的客户端日志
您可以使用 logging
RHEL 系统角色在 RHEL 客户端上配置日志,并使用 TLS 加密将日志传送到远程日志系统。
此流程创建私钥和证书。接下来,它会在 Ansible 清单中 clients 组的所有主机上配置 TLS。TLS 对信息的传输进行加密,确保日志在网络安全传输。
您不必在 playbook 中调用 certificate
RHEL 系统角色来创建证书。当设置了
变量时,logging RHEL 系统角色会自动调用它。
logging
_certificates
要让 CA 能够为创建的证书签名,受管节点必须在 IdM 域中注册。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 受管节点已在 IdM 域中注册。
- 如果要在管理节点上配置的日志服务器运行 RHEL 9.2 或更高版本,且启用了 FIPS 模式,则客户端必须支持Extended Master Secre(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅 强制 TLS 扩展"Extended Master Secret" 知识库文章。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying files input and forwards output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: files input_log_path: /var/log/containers/*.log logging_outputs: - name: output_name type: forwards target: your_target_host tcp_port: 514 tls: true pki_authmode: x509/name permitted_server: 'server.example.com' logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
示例 playbook 中指定的设置包括以下内容:
logging_certificates
-
此参数的值被传给
certificate
RHEL 系统角色中的certificate_requests
,并用来创建私钥和证书。 logging_pki_files
使用这个参数,您可以配置日志记录用来查找 CA 证书和用于 TLS 的密钥文件的路径和其他设置,使用以下子参数指定:
ca_cert
、ca_cert_src
、cert
、cert_src
、private_key
、private_key_src
和tls
。注意如果您使用
logging_certificates
在受管节点上创建文件,请不要使用ca_cert_src
,cert_src
, 和private_key_src
,用于复制由logging_certificates
创建的文件。ca_cert
-
表示受管节点上 CA 证书文件的路径。默认路径为
/etc/pki/tls/certs/ca.pem
,文件名由用户设置。 cert
-
表示受管节点上证书文件的路径。默认路径为
/etc/pki/tls/certs/server-cert.pem
,文件名由用户设置。 private_key
-
表示受管节点上私钥文件的路径。默认路径为
/etc/pki/tls/private/server-key.pem
,文件名由用户设置。 ca_cert_src
-
代表控制节点上 CA 证书文件的路径,该路径被复制到目标主机上由
ca_cert
指定的位置。如果使用logging_certificates
,请不要使用它。 cert_src
-
代表控制节点上证书文件的路径,该文件的路径被复制到目标主机上由
cert
指定的位置。如果使用logging_certificates
,请不要使用它。 private_key_src
-
代表控制节点上私钥文件的路径,该路径被复制到目标主机上由
private_key
指定的位置。如果使用logging_certificates
,请不要使用它。 tls
-
将此参数设为
true
以确保通过网络安全地传输日志。如果您不想要一个安全的包装程序,您可以设置tls: false
。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
文件。验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
文件 -
/usr/share/doc/rhel-system-roles/logging/
目录 -
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
文件 -
/usr/share/doc/rhel-system-roles/certificate/
目录 - 使用 RHEL 系统角色请求证书。
-
rsyslog.conf (5)
和syslog (3)
手册页
15.3.2. 配置带有 TLS 的服务器日志
您可以使用 logging
RHEL 系统角色在 RHEL 服务器上配置日志,并将它们设置为使用 TLS 加密从远程日志系统接收日志。
此流程创建私钥和证书。接下来,它会在 Ansible 清单中 server 组中的所有主机上配置 TLS。
您不必在 playbook 中调用 certificate
RHEL 系统角色来创建证书。logging
RHEL 系统角色会自动调用它。
要让 CA 能够为创建的证书签名,受管节点必须在 IdM 域中注册。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 受管节点已在 IdM 域中注册。
- 如果要在管理节点上配置的日志服务器运行 RHEL 9.2 或更高版本,且启用了 FIPS 模式,则客户端必须支持Extended Master Secre(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅 强制 TLS 扩展"Extended Master Secret" 知识库文章。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Configure remote logging solution using TLS for secure transfer of logs hosts: managed-node-01.example.com tasks: - name: Deploying remote input and remote_files output with certs ansible.builtin.include_role: name: rhel-system-roles.logging vars: logging_certificates: - name: logging_cert dns: ['localhost', 'www.example.com'] ca: ipa logging_pki_files: - ca_cert: /local/path/to/ca_cert.pem cert: /local/path/to/logging_cert.pem private_key: /local/path/to/logging_cert.pem logging_inputs: - name: input_name type: remote tcp_ports: 514 tls: true permitted_clients: ['clients.example.com'] logging_outputs: - name: output_name type: remote_files remote_log_path: /var/log/remote/%FROMHOST%/%PROGRAMNAME:::secpath-replace%.log async_writing: true client_count: 20 io_buffer_size: 8192 logging_flows: - name: flow_name inputs: [input_name] outputs: [output_name]
示例 playbook 中指定的设置包括以下内容:
logging_certificates
-
此参数的值被传给
certificate
RHEL 系统角色中的certificate_requests
,并用来创建私钥和证书。 logging_pki_files
使用这个参数,您可以配置日志记录用来查找 CA 证书和用于 TLS 的密钥文件的路径和其他设置,使用以下子参数指定:
ca_cert
、ca_cert_src
、cert
、cert_src
、private_key
、private_key_src
和tls
。注意如果您使用
logging_certificates
在受管节点上创建文件,请不要使用ca_cert_src
,cert_src
, 和private_key_src
,用于复制由logging_certificates
创建的文件。ca_cert
-
表示受管节点上 CA 证书文件的路径。默认路径为
/etc/pki/tls/certs/ca.pem
,文件名由用户设置。 cert
-
表示受管节点上证书文件的路径。默认路径为
/etc/pki/tls/certs/server-cert.pem
,文件名由用户设置。 private_key
-
表示受管节点上私钥文件的路径。默认路径为
/etc/pki/tls/private/server-key.pem
,文件名由用户设置。 ca_cert_src
-
代表控制节点上 CA 证书文件的路径,该路径被复制到目标主机上由
ca_cert
指定的位置。如果使用logging_certificates
,请不要使用它。 cert_src
-
代表控制节点上证书文件的路径,该文件的路径被复制到目标主机上由
cert
指定的位置。如果使用logging_certificates
,请不要使用它。 private_key_src
-
代表控制节点上私钥文件的路径,该路径被复制到目标主机上由
private_key
指定的位置。如果使用logging_certificates
,请不要使用它。 tls
-
将此参数设为
true
以确保通过网络安全地传输日志。如果您不想要一个安全的包装程序,您可以设置tls: false
。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
文件。验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.md
文件 -
/usr/share/doc/rhel-system-roles/logging/
目录 - 使用 RHEL 系统角色请求证书。
-
rsyslog.conf (5)
和syslog (3)
手册页