具有 OpenSSL 1.0.2 密码套件配置的 RSyslog 客户端
RSyslog Client With OpenSSL 1.0.2 Cipher Suites Configuration
在使用 OpenSSL 驱动程序配置 rsyslog 客户端以限制用于 TLS 通信的密码套件方面需要帮助。
环境:
使用光子 3.x OS。以下是 rsyslog 和 openssl 版本的详细信息。
[/]# rpm -qa | grep rsyslog
rsyslog-8.2106.0-1.ph3.x86_64
[/]# openssl version
OpenSSL 1.0.2za-fips 24 Aug 2021
配置:
下面是 /etc/rsyslog.d 文件夹下 TLS 客户端的 rsyslog 配置。
global(
# make ossl driver the default
DefaultNetstreamDriver="ossl"
# certificate files
DefaultNetstreamDriverCAFile="/path/to/syslogCACert.pem"
DefaultNetstreamDriverCertFile="/path/to/syslogClientCert.pem"
DefaultNetstreamDriverKeyFile="/path/to/syslogClientKey.pem"
)
if $programname == ["program-1", "program-2"] then {
action(type="omfwd"
protocol="tcp"
StreamDriver="ossl"
StreamDriverAuthMode="x509/name"
StreamDriverMode="1"
StreamDriverPermittedPeers="server.ca.com"
target="192.168.20.21"
port="6515"
gnutlsPriorityString="Protocol=TLSv1.2
Curves=P-384
ClientSignatureAlgorithms=RSA+SHA384:ECDSA+SHA384
SignatureAlgorithms=RSA+SHA384:ECDSA+SHA384
CipherString=<How to configure>"
)
}
使用上述配置,协议、曲线和签名算法按预期受到限制。参考带有受限曲线和签名算法的 wireshark 跟踪 - https://i.stack.imgur.com/GmiFs.png
我试图限制密码套件仅具有以下值
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA384
对于上面 rsyslog 配置文件中的 CipherString
键,我尝试了下面参考文档#4 和文档#5 中列出的各种值。不知何故,我无法让它按预期工作。在 wireshark 中,我始终可以观察到 rsyslog 向远程 TLS 服务器提供的 53 个密码套件。
以下是我尝试过的一些选项,但似乎没有任何效果。
CipherString=ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
CipherString=ECDHE-RSA-AES256-GCM-SHA384
CipherString='ECDHE-RSA-AES256-GCM-SHA384'
CipherString=SHA384 # To restrict ciphers with SHA384 only
CipherString='SHA384' # Same as above, but with quotes
CipherString=kECDHE+aRSA+AESGCM+SHA384 # To match the first cipher in above list
CipherString=kECDHE:aRSA:AESGCM:SHA384 # To match the first cipher in above list
CipherString=AESGCM
CipherString=DEFAULT@SECLEVEL=2 # Just to see the if it makes any difference
请建议正确配置 CipherString 的方法。
参考文献:
Rsyslog TLS 客户端示例:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_client.html
Rsyslog 转发输出模块文档:https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html
OpenSSL SSL_CONF_CMD 文档:https://www.openssl.org/docs/man1.0.2/man3/SSL_CONF_cmd.html
OpenSSL CipherString 文档:https://www.openssl.org/docs/man1.0.2/man1/ciphers.html
关于 FIPS 模式 TLS 的 OpenSSL wiki:https://wiki.openssl.org/index.php/FIPS_mode_and_TLS
更新:也向 rsyslog 团队寻求指导 - https://github.com/rsyslog/rsyslog/issues/4686
此问题已作为 Rsyslog 版本 v8.2110 的一部分得到修复 - https://github.com/rsyslog/rsyslog/pull/4692
在使用 OpenSSL 驱动程序配置 rsyslog 客户端以限制用于 TLS 通信的密码套件方面需要帮助。
环境:
使用光子 3.x OS。以下是 rsyslog 和 openssl 版本的详细信息。
[/]# rpm -qa | grep rsyslog
rsyslog-8.2106.0-1.ph3.x86_64
[/]# openssl version
OpenSSL 1.0.2za-fips 24 Aug 2021
配置:
下面是 /etc/rsyslog.d 文件夹下 TLS 客户端的 rsyslog 配置。
global(
# make ossl driver the default
DefaultNetstreamDriver="ossl"
# certificate files
DefaultNetstreamDriverCAFile="/path/to/syslogCACert.pem"
DefaultNetstreamDriverCertFile="/path/to/syslogClientCert.pem"
DefaultNetstreamDriverKeyFile="/path/to/syslogClientKey.pem"
)
if $programname == ["program-1", "program-2"] then {
action(type="omfwd"
protocol="tcp"
StreamDriver="ossl"
StreamDriverAuthMode="x509/name"
StreamDriverMode="1"
StreamDriverPermittedPeers="server.ca.com"
target="192.168.20.21"
port="6515"
gnutlsPriorityString="Protocol=TLSv1.2
Curves=P-384
ClientSignatureAlgorithms=RSA+SHA384:ECDSA+SHA384
SignatureAlgorithms=RSA+SHA384:ECDSA+SHA384
CipherString=<How to configure>"
)
}
使用上述配置,协议、曲线和签名算法按预期受到限制。参考带有受限曲线和签名算法的 wireshark 跟踪 - https://i.stack.imgur.com/GmiFs.png
我试图限制密码套件仅具有以下值
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA384
对于上面 rsyslog 配置文件中的 CipherString
键,我尝试了下面参考文档#4 和文档#5 中列出的各种值。不知何故,我无法让它按预期工作。在 wireshark 中,我始终可以观察到 rsyslog 向远程 TLS 服务器提供的 53 个密码套件。
以下是我尝试过的一些选项,但似乎没有任何效果。
CipherString=ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
CipherString=ECDHE-RSA-AES256-GCM-SHA384
CipherString='ECDHE-RSA-AES256-GCM-SHA384'
CipherString=SHA384 # To restrict ciphers with SHA384 only
CipherString='SHA384' # Same as above, but with quotes
CipherString=kECDHE+aRSA+AESGCM+SHA384 # To match the first cipher in above list
CipherString=kECDHE:aRSA:AESGCM:SHA384 # To match the first cipher in above list
CipherString=AESGCM
CipherString=DEFAULT@SECLEVEL=2 # Just to see the if it makes any difference
请建议正确配置 CipherString 的方法。
参考文献:
Rsyslog TLS 客户端示例:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_client.html
Rsyslog 转发输出模块文档:https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html
OpenSSL SSL_CONF_CMD 文档:https://www.openssl.org/docs/man1.0.2/man3/SSL_CONF_cmd.html
OpenSSL CipherString 文档:https://www.openssl.org/docs/man1.0.2/man1/ciphers.html
关于 FIPS 模式 TLS 的 OpenSSL wiki:https://wiki.openssl.org/index.php/FIPS_mode_and_TLS
更新:也向 rsyslog 团队寻求指导 - https://github.com/rsyslog/rsyslog/issues/4686
此问题已作为 Rsyslog 版本 v8.2110 的一部分得到修复 - https://github.com/rsyslog/rsyslog/pull/4692