Zabbix 支持使用传输层安全协议(TLS)v.1.2 和 1.3(取决于加密库)在 Zabbix 组件之间进行加密通信。支持基于证书和基于预共享密钥的加密。
可以对以下连接配置加密:
加密是可选的,并且可以为各个组件单独配置:
Zabbix 守护进程使用一个监听端口来处理加密和未加密的入站连接。添加加密不需要在防火墙上打开新端口。
为了支持加密,Zabbix 必须使用以下受支持的加密库之一进行编译和链接:
tls_*()
LibreSSL 特定的 API 函数。 使用 LibreSSL 编译的 Zabbix 组件将无法使用 PSK,只能使用证书。有关为 Zabbix 前端设置 SSL 的更多信息,请参阅这些 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
用于 Zabbix proxy 的配置文件中(在 主动模式(仅指定与服务器的连接)和Zabbix agent(用于 主动检查)。在Zabbix前端中,TLSConnect对应的参数是 数据收集 → 主机 → <某处 中的 连接到 主机 字段 主机 > 加密选项卡及连接到proxy字段 管理 → Proxies → <某些 proxy> → 加密* 选项卡。如果 配置的连接加密类型失败,无其他可用加密方式 将尝试类型。
TLSAccept
用于 Zabbix proxy 的配置文件中(位于 被动模式(仅指定来自服务器的连接)和Zabbix agent (适用于被动检查)。在Zabbix前端中,对应的TLSAccept参数是 数据收集 → 主机 → <某处 中的 来自 主机 的连接 字段 主机 > 加密* 选项卡及 来自 proxy 的连接 字段 管理 → Proxies → <某些 proxy> → 加密 标签页
通常您只需为传入连接配置一种加密类型 但您可能需要切换加密类型,例如从 从非加密方式迁移到基于证书的认证方式(实现最小停机时间并支持回滚) 为实现这一目标:
TLSAccept=unencrypted,cert
重启 Zabbix agentTLSAccept=cert
中设置 agent配置file并重启Zabbix agent。现在agent 将仅接受基于加密证书的连接。 未加密和基于PSK的连接将被拒绝。同样地,该功能在服务器和proxy上也适用。如果在Zabbix前端中 主机 配置 来自 主机 的连接 设置为"证书"时 仅接受基于证书的加密连接 agent(主动检查)和 zabbix_sender(trapper 监控项)。
您很可能需要配置入站和出站连接以使用 相同的加密类型或完全不加密。但从技术上讲, 可以非对称配置,例如基于证书 传入连接使用加密,传出连接基于PSK(预共享密钥)。
每个主机的加密配置会在Zabbix中显示 前端,在数据收集 → 主机的Agent 加密列中。 例如:
示例 | 连接到 主机 | 来自 主机 的允许连接 | 来自 主机 的被拒绝连接 |
---|---|---|---|
![]() |
未加密 | 未加密 | 加密,基于证书和PSK的加密 |
![]() |
基于证书的加密 | 基于证书的加密 | 未加密及基于PSK的加密 |
![]() |
基于PSK的加密 | 基于PSK的加密 | 未加密及基于证书的加密 |
![]() |
基于PSK的加密 | 未加密及基于PSK的加密 | 基于证书的加密 |
![]() |
基于证书的加密通信 | 基于PSK或证书的未加密通信 | - |
默认情况下连接未加密。加密 必须为每个主机和proxy单独配置。
请参阅 zabbix_get 和 zabbix_sender 手册页,了解如何将它们与加密功能一起使用。
默认情况下,密码套件在 Zabbix 启动期间内部进行配置。
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 | 适用于 TLS 1.3 协议的有效 OpenSSL 1.1.1 cipher strings(其值将传递给 OpenSSL 函数 SSL_CTX_set_ciphersuites() )。 |
TLS 1.3 的基于证书的加密套件选择标准 仅适用于 OpenSSL 1.1.1 或更高版本。 |
TLSCipherCert | 适用于 TLS 1.2 的有效 OpenSSL cipher strings 或适用于 GnuTLS 的有效 priority strings。它们的值分别传递给 SSL_CTX_set_cipher_list() 或 gnutls_priority_init() 函数。 |
TLS 1.2/1.3(GnuTLS)、TLS 1.2(OpenSSL)的基于证书的加密套件选择标准 | |
PSK 的加密套件选择 | TLSCipherPSK13 | 适用于 TLS 1.3 协议的有效 OpenSSL 1.1.1 cipher strings(其值将传递给 OpenSSL 函数 SSL_CTX_set_ciphersuites() )。 |
TLS 1.3 的基于 PSK 的加密套件选择标准 仅适用于 OpenSSL 1.1.1 或更高版本。 |
TLSCipherPSK | 适用于 TLS 1.2 的有效 OpenSSL cipher strings 或适用于 GnuTLS 的有效 priority strings。它们的值分别传递给 SSL_CTX_set_cipher_list() 或 gnutls_priority_init() 函数。 |
TLS 1.2/1.3(GnuTLS)、TLS 1.2(OpenSSL)的基于 PSK 的加密套件选择标准 | |
证书和 PSK 的组合加密套件列表 | TLSCipherAll13 | 适用于 TLS 1.3 协议的有效 OpenSSL 1.1.1 cipher strings(其值将传递给 OpenSSL 函数 SSL_CTX_set_ciphersuites() )。 |
TLS 1.3 的加密套件选择标准 仅适用于 OpenSSL 1.1.1 或更高版本。 |
TLSCipherAll | 适用于 TLS 1.2 的有效 OpenSSL cipher strings 或适用于 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 server 和 proxy:
连接设置 | 加密套件配置 |
---|---|
使用 PSK 的传出连接 | TLSCipherPSK, TLSCipherPSK13 |
使用证书的传入连接 | TLSCipherAll, TLSCipherAll13 |
如果服务器没有证书,则使用 PSK 的传入连接 | TLSCipherPSK, TLSCipherPSK13 |
如果服务器有证书,则使用 PSK 的传入连接 | TLSCipherAll, TLSCipherAll13 |
从上面两个表中可以看出一些模式:
以下表格显示了 TLSCipher*
的内置默认值。它们可以作为您自定义值的良好起点。
参数 | GnuTLS 3.6.12 |
---|---|
TLSCipherCert | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-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 | NONE:+VERS-TLS1.2:+ECDHE-RSA:+RSA:+ECDHE-PSK:+PSK:+AES-128-GCM:+AES-128-CBC:+AEAD:+SHA256:+SHA1:+CURVE-ALL:+COMP-NULL:+SIGN-ALL:+CTYPE-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',或对zabbix_sender使用-vv选项。
在get到理想的加密套件之前,可能需要对TLSCipher参数进行一些实验。仅为了调整TLSCipher参数而多次重启Zabbix server、proxy或agent很不方便。更便捷的选择是使用zabbix_sender或openssl命令。我们将展示这两种方法。
1. 使用zabbix_sender
创建一个测试配置文件file,例如/home/zabbix/test.conf,采用file的zabbix_agentd.conf语法:
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
此处显示的是默认选择的加密套件。这些默认值是为了确保与运行在旧版OpenSSL系统(从1.0.1开始)上的Zabbix agents互操作性。
对于新系统,您可以通过仅允许少数加密套件(例如仅具有PFS(完美前向保密)的加密套件)来增强安全性。让我们尝试使用TLSCipher*参数仅允许具有PFS的加密套件。
如果使用PSK,结果将无法与使用OpenSSL 1.0.1和1.0.2的系统互操作。基于证书的加密应该可以正常工作。
在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
"certificate ciphersuites"和"PSK ciphersuites"列表已更改——它们比以前更短,仅包含TLS 1.3加密套件和TLS 1.2 ECDHE-*加密套件,符合预期。
2. TLSCipherAll和TLSCipherAll13无法通过zabbix_sender测试;它们不会影响上面示例中显示的"certificate and PSK ciphersuites"值。要调整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
您可能更喜欢使用openssl ciphers和-V选项以获得更详细的输出:
$ 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
Cipher suites for 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
Protocols: VERS-TLS1.2
Ciphers: AES-128-GCM, AES-128-CBC
MACs: AEAD, SHA256
Key Exchange Algorithms: ECDHE-RSA
Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-X448, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192
PK-signatures: 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作为数据的内置默认算法。假设您正在使用证书并希望切换到AES256,在OpenSSL 1.1.1中。
可以通过在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
中: