You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rsyslog客户端TLS连接时Client Hello cipher套件过多问题求助

问题描述

已配置Rsyslog over TLS,但Debian与Redhat 8机器均出现客户端Hello消息发送过多密码套件的情况:

  • Rsyslog版本:8.2404
  • GnuTLS版本:3.7.1
  • 当前客户端Hello暴露31个密码套件,抓包可见该现象

服务器配置

$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog-keys/server-cert.pem
$DefaultNetstreamDriverKeyFile /etc/rsyslog-keys/server-key.pem

$ModLoad imtcp  
$InputTCPServerStreamDriverMode 1  
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerRun 6514  

客户端配置

$DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/private/client-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/client-key.pem
$DefaultNetStreamDriver gtls

$ActionSendStreamDriverMode 1   
$ActionSendStreamDriverAuthMode anon
*.*     @@<ip>:6514

已尝试修改rsyslog配置、调整Gnutls优先级字符串等方法但均无效,如何将密码套件数量限制为指定数量?


解决方案

要限制Rsyslog通过GnuTLS使用的密码套件数量,需在服务器端和客户端的rsyslog配置中正确指定GnuTLS优先级字符串,注意配置项的位置和语法:

1. 添加密码套件优先级配置

在服务器和客户端的rsyslog配置中,添加$DefaultNetstreamDriverPriorityString配置项,必须放在$DefaultNetstreamDriver gtls之后、其他流驱动配置之前,否则不会生效。

服务器端修改示例

$DefaultNetstreamDriver gtls
# 指定仅允许的密码套件,示例为TLS 1.2/1.3的安全套件
$DefaultNetstreamDriverPriorityString "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM"
$DefaultNetstreamDriverCAFile /etc/rsyslog-keys/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog-keys/server-cert.pem
$DefaultNetstreamDriverKeyFile /etc/rsyslog-keys/server-key.pem

$ModLoad imtcp  
$InputTCPServerStreamDriverMode 1  
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerRun 6514  

客户端修改示例

$DefaultNetStreamDriver gtls
# 与服务器端保持一致的优先级配置,确保套件匹配
$DefaultNetstreamDriverPriorityString "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM"
$DefaultNetstreamDriverCAFile /etc/pki/tls/private/ca.pem
$DefaultNetstreamDriverCertFile /etc/pki/tls/private/client-cert.pem
$DefaultNetstreamDriverKeyFile /etc/pki/tls/private/client-key.pem

$ActionSendStreamDriverMode 1   
$ActionSendStreamDriverAuthMode anon
*.*     @@<ip>:6514

2. 优先级字符串语法说明

GnuTLS的优先级字符串可精确控制协议版本和密码套件:

  • NORMAL:基础安全配置集
  • :-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:禁用所有协议,仅启用TLS1.2和TLS1.3
  • :-CIPHER-ALL:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM:禁用所有套件,仅保留指定的3个安全套件

可根据需求调整套件列表,比如只保留AES-256-GCM,删除其他套件即可。

3. 验证配置

  • 重启rsyslog服务:
    • Debian/Ubuntu:systemctl restart rsyslog
    • Redhat 8:systemctl restart rsyslog
  • 再次抓包,查看客户端Hello中的密码套件数量是否符合预期
  • 用gnutls-cli工具测试连接,验证可用套件:
    gnutls-cli --priority "NORMAL:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:-CIPHER-ALL:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM" <server-ip>:6514
    

常见排查点

  • 确认$DefaultNetstreamDriverPriorityString的位置在$DefaultNetstreamDriver gtls之后
  • 检查GnuTLS版本是否支持指定的套件(GnuTLS 3.7.1支持上述示例中的所有套件)
  • 确保客户端与服务器端的优先级配置一致,否则可能导致连接失败

内容的提问来源于stack exchange,提问作者Chandra Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:57:09