Zabbix中的每个预共享密钥(PSK)实际上是一对:
PSK 标识字符串是非空 UTF-8 字符串。例如,"PSK ID 001 Zabbix agentd"。它是一个唯一的名称,Zabbix组件通过该名称引用此特定PSK。不要将敏感信息放在 PSK 标识字符串中 - 它是通过未加密的网络传输的。
PSK 值是一个难以猜测的十六进制数字字符串,例如, "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"。
Zabbix中的PSK标识和值有大小限制,在某些情况下,加密库可以具有下限:
组件 | PSK标识最大尺寸 | PSK值最小尺寸 | PSK值最大尺寸 |
---|---|---|---|
Zabbix | 128个UTF-8字符 | 128位(16字节PSK,输入为32个十六进制数字) | 2048位(256字节PSK,输入为512个十六进制数字) |
GnuTLS | 128字节(可能包括UTF-8字符) | - | 2048位(256字节PSK,输入为512个十六进制数字) |
OpenSSL 1.0.x, 1.1.0 | 127 字节(可能包括 UTF-8 字符) | - | 2048 位(256 字节 PSK,输入为 512 个十六进制数字) |
OpenSSL 1.1.1 | 127 字节(可能包括 UTF-8 字符) | - | 512 位(64 字节 PSK,输入为 128 个十六进制数字) |
OpenSSL 1.1.1a 及更高版本 | 127 字节(可能包括 UTF-8 字符) | - | 2048 位(256 字节 PSK,输入为 512 个十六进制数字) |
Zabbix 前端允许配置最多128 个字符长的 PSK 标识字符串和 2048 位长的 PSK,而不考虑使用哪种加密库。
如果某些Zabbix组件支持下限,则用户有责任为这些组件配置具有允许长度的PSK标识和值。
超过长度限制会导致Zabbix组件之间的通信故障。
在Zabbix服务器使用PSK连接到代理之前,服务器会在数据库(实际上是在配置缓存中)中查找为该代理配置的PSK标识和PSK值。收到连接后,代理使用其配置文件中的PSK标识和PSK值。 如果双方具有相同的PSK标识字符串和PSK值,则连接可能会成功。
用户有责任确保没有两个具有相同标识字符串但值不同的PSK。 否则,使用带有此PSK标识字符串的PSK的Zabbix组件之间的通信可能会出现不可预测的中断。
例如,可以使用以下命令生成 256 位 (32 字节)PSK:
请注意,上面的"psktool"会生成一个具有 PSK 标识及其关联 PSK 的数据库文件。 Zabbix 期望 PSK 文件中只有一个 PSK,因此应从文件中删除标识字符串和冒号 (':')。
在代理主机上,将 PSK 值写入文件,例如,/home/zabbix/zabbix_agentd.psk
。该文件必须在第一个文本字符串中包含 PSK,例如:
1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952
设置PSK文件的访问权限 - 它必须只能由Zabbix用户读取。
在代理配置文件 zabbix_agentd.conf
中编辑TLS参数,例如,设置:
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
代理将连接到服务器(活动检查)并只接受来自zabbix_get
使用PSK的服务器连接。 PSK 标识将是 "PSK 001"。
重新启动代理。现在,您可以使用 zabbix_get
测试连接,例如:
$ zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk \
--tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk
(为了最大限度地减少停机时间,请参阅如何在 连接加密管理)中更改连接类型
在 Zabbix 前端中为此代理配置 PSK 加密:
例如:
所有必填字段都标有红色星号。
当配置缓存与数据库同步时,新连接将使用 PSK。检查服务器和代理日志文件中是否有错误消息。
在代理上,将 PSK 值写入文件,例如, /home/zabbix/zabbix_proxy.psk
。该文件必须在第一个文本字符串中包含 PSK,例如:
e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9
设置PSK文件的访问权限 - 它必须只能由Zabbix用户读取。
在代理配置文件 zabbix_proxy.conf
中编辑TLS参数, 例如,设置:
TLSConnect=psk
TLSPSKFile=/home/zabbix/zabbix_proxy.psk
TLSPSKIdentity=PSK 002
代理将使用 PSK 连接到服务器。PSK 标识将是 "PSK 002"。
(为最大限度地减少停机时间,请参阅 连接加密管理)。
在 Zabbix 前端中为此代理配置 PSK。 转到管理→代理, 选择代理, 转到 "加密" 选项卡。 在"来自代理的连接" 中,标记PSK
。将"PSK 002"粘贴到"PSK 标识"字段中,将"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" 粘贴到"PSK" 字段。 点击 "更新"。
重新启动代理。它将开始使用基于 PSK 的加密连接到服务器。检查服务器和代理日志文件中是否有错误消息。
对于被动代理,该过程非常相似。唯一的区别是 - 在代理配置文件中设置 TLSAccept=psk
,并将Zabbix前端中的 "连接到 代理" 设置为 PSK
。