【问题标题】:RSyslog Client With OpenSSL 1.0.2 Cipher Suites Configuration具有 OpenSSL 1.0.2 密码套件配置的 RSyslog 客户端
【发布时间】:2021-11-05 18:56:31
【问题描述】:

在使用 OpenSSL 驱动程序配置 rsyslog 客户端以限制用于 TLS 通信的密码套件时需要帮助。

环境:

使用 Photon 3.x 操作系统。以下是 rsyslog 和 openssl 版本的详细信息。

[/]# rpm -qa | grep rsyslog
rsyslog-8.2106.0-1.ph3.x86_64

[/]# openssl version
OpenSSL 1.0.2za-fips  24 Aug 2021

配置:

以下是 TLS 客户端 /etc/rsyslog.d 文件夹下的 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 的正确方法。

参考资料:

  1. Rsyslog TLS 客户端示例:https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_client.html

  2. Rsyslog 转发输出模块文档:https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html

  3. OpenSSL SSL_CONF_CMD 文档:https://www.openssl.org/docs/man1.0.2/man3/SSL_CONF_cmd.html

  4. OpenSSL CipherString 文档:https://www.openssl.org/docs/man1.0.2/man1/ciphers.html

  5. 关于 FIPS 模式 TLS 的 OpenSSL wiki:https://wiki.openssl.org/index.php/FIPS_mode_and_TLS


更新:也向 rsyslog 团队寻求指导 - https://github.com/rsyslog/rsyslog/issues/4686

【问题讨论】:

  • 在黑暗中拍摄,但尝试将 CipherString= before 至少放在其中一个工作项中,看看是否有什么不同?
  • 嗨@dave_thompson_085,感谢您对此进行调查。我将CipherString= 移到上面两行(即到Curves= 的下一行)并使用以下值进行了测试:'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL(取自wiki.openssl.org/index.php/FIPS_mode_and_TLS#TLS_1.2 的值)。但没有任何区别,仍然是相同的行为。

标签: openssl tls1.2 rsyslog


【解决方案1】:

此问题已在 Rsyslog 版本 v8.2110 - https://github.com/rsyslog/rsyslog/pull/4692 中得到修复

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 2018-07-07
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多