Zabbix支持使用加密通信在Zabbix组件之间 传输层安全(TLS)协议v1.2和1.3(取决于 加密库). 基于证书和预共享密钥的加密 支持。
可以配置以下连接的加密方式:
在 Zabbix server、Zabbix proxy、Zabbix agent、Zabbix web服务、zabbix_sender之间 以及zabbix_get实用工具
To Zabbix database [from Zabbix frontend and
server/proxy](/manual/appendix/install/db_encrypt)
加密是可选的,并且可针对各个组件进行配置:
某些proxies和agents可配置为使用基于证书的 与服务器进行加密,而其他设备可以使用预共享密钥 基于密钥的加密,而其他仍保持未加密 通信(同前)
服务器(proxy)可为不同连接采用不同的加密配置
different hosts
Zabbix守护进程程序使用一个监听端口用于加密和 未加密的传入连接。添加加密不需要 在防火墙上开放新端口
要支持加密功能,Zabbix必须使用以下任一加密库进行编译和链接:
GnuTLS - 从version 3.1.18版本开始支持
OpenSSL - 支持1.0.1、1.0.2、1.1.0、1.1.1、3.0.x版本。注意3.0.x版本从Zabbix 6.0.4开始支持
LibreSSL - 测试通过的版本包括2.7.4、2.8.2:
tls_*()
LibreSSL-specific API functions are not used. Zabbix components compiled with LibreSSL will not be able to use PSK, only certificates can be used.tls_*()
未使用LibreSSL特有的API功能 使用LibreSSL编译的Zabbix组件将无法使用PSK,仅能使用证书
您可以通过这些best practices了解更多关于为Zabbix前端设置SSL的信息。
通过向"configure"脚本指定相应选项来选择加密库:
--with-gnutls[=DIR]
--with-openssl[=DIR]
(也适用于LibreSSL)例如,要为server 和 agent配置OpenSSL源代码,可以使用类似以下命令:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl
不同的Zabbix组件可以使用不同的加密库编译 (例如服务器使用OpenSSL,agent使用GnuTLS)。
如果您计划使用预共享密钥(PSK), 建议在使用PSK的Zabbix组件中使用GnuTLS或OpenSSL 1.1.0(或更新版本)库。 GnuTLS和OpenSSL 1.1.0库支持具有完美前向保密性的PSK密码套件。 较旧版本的OpenSSL库(1.0.1、1.0.2c)也支持PSK,但可用的PSK密码套件不提供完美前向保密性。
Zabbix中的连接可使用:
有两个重要参数用于指定加密方式 Zabbix组件:
TLSConnect - 指定用于传出连接的加密方式 连接(未加密、PSK或证书)
TLSAccept - 指定允许的连接类型
incoming connections (unencrypted, PSK or certificate). One or more values can be specified.
TLSConnect
用于 Zabbix proxy 的配置文件中(在 主动模式,仅指定与服务器的连接)和Zabbix agent(用于 主动检查)。在Zabbix前端中,TLSConnect的对应项是 配置 → 主机 → <某个中的连接到 主机字段 主机 > 加密选项卡和连接到proxy字段 管理 → Proxies → <某些 proxy> → 加密* 标签页。如果 配置的连接加密类型失败,无其他可用加密方式 将尝试类型。
TLSAccept
用于 Zabbix proxy 的配置文件中(在 被动模式(仅指定来自服务器的连接)和Zabbix agent (用于被动检查)。在Zabbix前端中,TLSAccept的等效参数是 配置 → 主机 → <某个中的来自主机的连接字段 主机> → 加密* 选项卡和 来自 proxy 的连接 字段 管理 → Proxies → <某些 proxy> → 加密 标签
通常您只需为传入配置一种加密类型 连接。但您可能需要切换加密类型,例如从 从非加密到基于证书的转换,实现最短停机时间和回滚能力 可能性。为实现此目标:
在agent配置file中设置TLSAccept=unencrypted,cert
重启 Zabbix agent
使用证书通过zabbix_get测试与agent的连接。如果 它正常工作,您可以在Zabbix中为那个agent重新配置加密 前端在配置 → 主机 → <某个 主机> → 加密 选项卡,通过将 连接到 主机 设置为 "证书"。
当服务器configuration cache更新时(且proxy 配置会在以下情况下更新:如果主机由proxy监控 与那个agent的连接将被加密
如果一切按预期运行,您可以在 TLSAccept=cert
中设置
agent configuration file and restart Zabbix agent. Now the agent will be accepting only encrypted certificate-based connections. Unencrypted and PSK-based connections will be rejected.
同样地,它也适用于服务器和proxy。如果在Zabbix前端中 主机配置 来自主机的连接 设置为"证书"时 仅接受基于证书的加密连接 agent(主动检查)和zabbix_sender(trapper 监控项)。
您很可能需要配置入站和出站连接以使用 相同的加密类型或完全不加密。但从技术上讲 可以非对称配置,例如基于证书 传入连接使用加密,传出连接基于PSK(预共享密钥)。
每个主机的加密配置显示在Zabbix中 前端,在配置 → 主机中的Agent加密列。 例如:
示例 | 连接到 主机 | 来自 主机 的允许连接 | 来自 主机 的被拒绝连接 |
---|---|---|---|
![]() |
未加密 | 未加密 | 加密, 基于证书和PSK的加密 |
![]() |
基于证书的加密 | 基于证书的加密 | 基于PSK的加密及未加密 |
![]() |
基于PSK加密 | 基于PSK加密 | 未加密及基于证书加密 |
![]() |
基于PSK的加密 | 未加密及基于PSK的加密 | 基于证书的加密 |
![]() |
基于证书的加密 | 基于PSK或证书的未加密 | - |
默认情况下连接未加密。加密 必须为每个主机和proxy单独配置。
请参阅zabbix_get和 zabbix_sender手册页以了解如何配合 加密功能使用它们.
默认情况下,密码套件在Zabbix启动时内部配置完成 在Zabbix 4.0.19和4.4.7版本之前,这些配置不可由用户自定义。
自Zabbix 4.0.19和4.4.7版本起,GnuTLS和OpenSSL开始支持 用户自定义密码套件。用户可根据自身安全策略 配置密码套件。此功能为可选使用 (内置默认密码套件仍可正常工作)。
对于采用默认设置编译的加密库,Zabbix内置规则 通常会产生以下密码套件(按优先级从高到低排序):
加密库 | 证书密码套件 | PSK密码套件 |
---|---|---|
GnuTLS 3.1.18 | TLS_ECDHE_RSA_AES_128_GCM_SHA256 TLS_ECDHE_RSA_AES_128_CBC_SHA256 TLS_ECDHE_RSA_AES_128_CBC_SHA1 TLS_RSA_AES_128_GCM_SHA256 TLS_RSA_AES_128_CBC_SHA256 TLS_RSA_AES_128_CBC_SHA1 |
TLS_ECDHE_PSK_AES_128_CBC_SHA256 TLS_ECDHE_PSK_AES_128_CBC_SHA1 TLS_PSK_AES_128_GCM_SHA256 TLS_PSK_AES_128_CBC_SHA256 TLS_PSK_AES_128_CBC_SHA1 |
OpenSSL 1.0.2c | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-SHA256 AES128-SHA |
PSK-AES128-CBC-SHA |
OpenSSL 1.1.0 | ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA |
ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA |
OpenSSL 1.1.1d | TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA |
TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA |
内置的加密套件选择标准可通过用户配置的加密套件进行覆盖。
用户配置加密套件功能专为高级用户设计, 这些用户需理解TLS加密套件、其安全性及配置错误的后果, 并能够熟练进行TLS故障排查。
可通过以下参数覆盖内置加密套件选择标准:
覆盖范围 | 参数 | 取值 | 描述 |
---|---|---|---|
证书的加密套件选择 | TLSCipherCert13 | 有效的OpenSSL 1.1.1 cipher strings(其值会传递给OpenSSL函数SSL_CTX_set_ciphersuites() )。 |
TLS 1.3协议的证书加密套件选择标准 仅限OpenSSL 1.1.1或更新版本。 |
TLSCipherCert | 有效的OpenSSL cipher strings(TLS 1.2)或有效的GnuTLS priority strings。其值会分别传递给SSL_CTX_set_cipher_list() 或gnutls_priority_init() 函数。 |
TLS 1.2/1.3(GnuTLS)和TLS 1.2(OpenSSL)的证书加密套件选择标准 | |
PSK的加密套件选择 | TLSCipherPSK13 | 有效的OpenSSL 1.1.1 cipher strings(其值会传递给OpenSSL函数SSL_CTX_set_ciphersuites() )。 |
TLS 1.3协议的PSK加密套件选择标准 仅限OpenSSL 1.1.1或更新版本。 |
TLSCipherPSK | 有效的OpenSSL cipher strings(TLS 1.2)或有效的GnuTLS priority strings。其值会分别传递给SSL_CTX_set_cipher_list() 或gnutls_priority_init() 函数。 |
TLS 1.2/1.3(GnuTLS)和TLS 1.2(OpenSSL)的PSK加密套件选择标准 | |
证书和PSK的联合加密套件列表 | TLSCipherAll13 | 有效的OpenSSL 1.1.1 cipher strings(其值会传递给OpenSSL函数SSL_CTX_set_ciphersuites() )。 |
TLS 1.3协议的加密套件选择标准 仅限OpenSSL 1.1.1或更新版本。 |
TLSCipherAll | 有效的OpenSSL cipher strings(TLS 1.2)或有效的GnuTLS priority strings。其值会分别传递给SSL_CTX_set_cipher_list() 或gnutls_priority_init() 函数。 |
TLS 1.2/1.3(GnuTLS)和TLS 1.2(OpenSSL)的加密套件选择标准 |
要覆盖zabbix_get和zabbix_sender工具中的加密套件选择, 请使用以下命令行参数:
--tls-cipher13
--tls-cipher
新参数为可选参数。若未指定参数,则使用内部默认值。若定义了参数,则参数值不可为空。
若加密库中TLSCipher*值设置失败, 则服务器、proxy或agent将无法启动,并记录错误日志。
理解每个参数的适用场景至关重要。
最简单的场景是出站连接:
--tls-cipher13
或--tls-cipher
(加密方式通过--tls-connect
参数明确指定)对于传入连接来说稍微复杂一些,因为规则是 特定于组件和配置。
对于Zabbix agent:
Agent 连接设置 | 密码配置 |
---|---|
TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
对于Zabbix 服务器和proxy:
连接设置 | 密码配置 |
---|---|
使用PSK的出站连接 | TLSCipherPSK, TLSCipherPSK13 |
使用证书的传入连接 | TLSCipherAll, TLSCipherAll13 |
当服务器无证书时使用PSK的传入连接 | TLSCipherPSK, TLSCipherPSK13 |
当服务器拥有证书时使用PSK的传入连接 | TLSCipherAll, TLSCipherAll13 |
从上述两个表格中可以看出一些规律:
以下表格展示了TLSCipher*
内置的默认值。它们 可以作为您自定义值的良好起点。
参数 | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | 无:+支持TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+所有曲线:+空压缩:+所有签名:+证书类型X.509 |
TLSCipherPSK | NONE:+VERS-TLS1.2:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL |
TLSCipherAll | 无:+支持TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+支持所有曲线:+空压缩:+支持所有签名:+证书类型X.509 |
参数 | OpenSSL 1.1.1d 1 |
---|---|
TLSCipherCert13 | |
TLSCipherCert | EECDH+aRSA+AES128:RSA+aRSA+AES128 |
TLSCipherPSK13 | TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 |
TLSCipherPSK | kECDHEPSK+AES128:kPSK+AES128 |
TLSCipherAll13 | |
TLSCipherAll | EECDH+aRSA+AES128:RSA+aRSA+AES128:kECDHEPSK+AES128:kPSK+AES128 |
1 旧版OpenSSL(1.0.1)的默认值有所不同 1.0.2, 1.1.0), 对于LibreSSL以及当OpenSSL编译时未包含PSK支持的情况 支持
用户配置的加密套件示例
请参阅以下用户配置的加密套件示例:
要查看已选择的加密套件,您需要设置 在配置file中设置'DebugLevel=4',或使用-vv
选项 zabbix_sender
可能需要对TLSCipher*
参数进行一些实验 在get所需的密码套件之前。重启操作会带来不便 Zabbix server、proxy或agent多次仅为了调整TLSCipher*
parameters. 更便捷的选项是使用zabbix_sender或 openssl
命令。让我们同时展示两者。
1. 使用zabbix_sender.
让我们做一个测试配置file,例如 /home/zabbix/test.conf
,语法为zabbix_agentd.conf
file:
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=cert
TLSCAFile=/home/zabbix/ca.crt
TLSCertFile=/home/zabbix/agent.crt
TLSKeyFile=/home/zabbix/agent.key
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agent.psk
在此示例中,您需要有效的CA和agent证书以及PSK。 根据您的环境调整证书和PSK file的路径及名称。
如果您不使用证书,仅使用PSK,可以采用更简单的 测试 file:
Hostname=nonexisting
ServerActive=nonexisting
TLSConnect=psk
TLSPSKIdentity=nonexisting
TLSPSKFile=/home/zabbix/agentd.psk
可以通过运行zabbix_sender查看所选的密码套件(示例 使用OpenSSL 1.1.d编译):
$ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA
zabbix_sender [41271]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA
此处显示的是默认选中的加密套件。这些默认值 被选为确保与运行在Zabbix agents上的系统互操作性 使用较旧版本OpenSSL(1.0.1起)的系统
在较新的系统中,您可以选择通过仅允许...来加强安全性 少数密码套件,例如仅包含PFS(完美前向保密)的密码套件 保密性)。让我们尝试仅允许使用具有PFS(完美前向保密)的密码套件 TLSCipher*
参数
结果将无法与其他系统互操作 使用OpenSSL 1.0.1和1.0.2时,若采用PSK(预共享密钥)方式。基于证书的 加密功能应正常工作。
在test.conf
配置file中添加两行:
并再次测试:
$ zabbix_sender -vv -c /home/zabbix/test.conf -k nonexisting_item -o 1 2>&1 | grep ciphersuites
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() PSK ciphersuites: TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
zabbix_sender [42892]: DEBUG: zbx_tls_init_child() certificate and PSK ciphersuites: TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA AES128-GCM-SHA256 AES128-CCM8 AES128-CCM AES128-SHA256 AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA PSK-AES128-GCM-SHA256 PSK-AES128-CCM8 PSK-AES128-CCM PSK-AES128-CBC-SHA256 PSK-AES128-CBC-SHA
"证书密码套件"和"PSK密码套件"列表已更改 - 它们比以前更短,仅包含TLS 1.3密码套件 TLS 1.2 ECDHE-* 密码套件符合预期。
2. TLSCipherAll 和 TLSCipherAll13 无法通过以下方式测试 zabbix_sender; 它们不影响"证书和PSK密码套件" 上述示例中显示的值。要调整TLSCipherAll和 TLSCipherAll13 你需要对 agent、proxy 或服务器进行实验。
因此,要仅允许PFS密码套件,您可能需要添加最多三个 参数
TLSCipherCert=EECDH+aRSA+AES128
TLSCipherPSK=kECDHEPSK+AES128
TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128
到 zabbix_agentd.conf、zabbix_proxy.conf 和 zabbix_server_conf 如果 每个都配置了证书,且agent还拥有PSK。
如果您的Zabbix环境仅使用基于PSK的加密且未 证书,则仅需一个:
现在您已了解其工作原理,可以测试密码套件 在Zabbix之外也能进行选择,使用openssl
命令。让我们测试 所有三个 TLSCipher*
参数值:
$ openssl ciphers EECDH+aRSA+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA
$ openssl ciphers kECDHEPSK+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
$ openssl ciphers EECDH+aRSA+AES128:kECDHEPSK+AES128 | sed 's/:/ /g'
TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-SHA ECDHE-PSK-AES128-CBC-SHA256 ECDHE-PSK-AES128-CBC-SHA
您可能更倾向于使用带有选项-V
的openssl ciphers
以获得更详细的输出 输出
$ openssl ciphers -V EECDH+aRSA+AES128:kECDHEPSK+AES128
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
0xC0,0x37 - ECDHE-PSK-AES128-CBC-SHA256 TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA256
0xC0,0x35 - ECDHE-PSK-AES128-CBC-SHA TLSv1 Kx=ECDHEPSK Au=PSK Enc=AES(128) Mac=SHA1
同样地,您可以测试GnuTLS的优先级字符串:
$ gnutls-cli -l --priority=NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509 NONE:+VERS-TLS1.2:+ECDHE-RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-X.509的密码套件 TLS_ECDHE_RSA_AES_128_GCM_SHA256 0xc0, 0x2f TLS1.2 TLS_ECDHE_RSA_AES_128_CBC_SHA256 0xc0, 0x27 TLS1.2
协议:VERS-TLS1.2 Ciphers: AES-128-GCM, AES-128-CBC MACs: AEAD, SHA256 密钥交换算法: ECDHE-RSA 组别: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-X448, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192 PK签名算法: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-EdDSA-Ed448, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1
Zabbix默认使用AES128作为内置数据加密算法。假设您正在使用证书并希望在OpenSSL 1.1.1环境下切换至AES256。
这可以通过在zabbix_server.conf
中添加相应参数实现:
TLSCAFile=/home/zabbix/ca.crt
TLSCertFile=/home/zabbix/server.crt
TLSKeyFile=/home/zabbix/server.key
TLSCipherCert13=TLS_AES_256_GCM_SHA384
TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384
TLSCipherPSK13=TLS_CHACHA20_POLY1305_SHA256
TLSCipherPSK=kECDHEPSK+AES256:-SHA1
TLSCipherAll13=TLS_AES_256_GCM_SHA384
TLSCipherAll=EECDH+aRSA+AES256:-SHA1:-SHA384
虽然仅会使用与证书相关的加密套件,但仍需定义TLSCipherPSK*
参数以避免其默认值包含安全性较低的加密算法(这些默认值是为保证更广泛的互操作性而设)。在server/proxy上无法完全禁用PSK加密套件。
以及在zabbix_agentd.conf
中配置:
TLSConnect=cert TLSAccept=cert TLSCAFile=/home/zabbix/ca.crt TLSCertFile=/home/zabbix/agent.crt TLSKeyFile=/home/zabbix/agent.key TLSCipherCert13=TLS_AES_256_GCM_SHA384 TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384