概述
Zabbix 中的每个预共享密钥(PSK)实际上是一对:
- 非秘密 PSK 身份字符串
- 秘密 PSK 字符串值
PSK 标识字符串是一个非空的 UTF-8 字符串。例如,"PSKProxy01"。它是 Zabbix 组件引用此特定 PSK 的唯一名称。PSK 身份字符串在网络上以明文方式传输避免写入敏感信息。
PSK 字符串值是复杂的十六进制数字字符,例如"04e82108ecd1f7ac2c5328962484484c36a16f6087bb5214f28e13bff94c59ec"。
在 Zabbix Server 使用 PSK 连接到Proxy之前,Server会在数据库中查找为该Proxy配置的 PSK 身份和 PSK 值(实际上是在配置缓存中)。收到连接后,Proxy会使用其配置文件中的 PSK 标识和 PSK 值。如果双方具有相同的 PSK 标识字符串和 PSK 值,则连接可能成功。
每个 PSK 标识只能与一个PSK字符串值配对。需要确保不存在具有相同标识字符串但值不同的两个 PSK。不遵守规则可能会导致使用带有此 PSK 标识字符串的 PSK 的 Zabbix 组件之间的通信发生不可预测的中断。
PSK字符串2种生成方式
- 使用OpenSSL:
ubuntu@node01:/opt$ openssl rand -hex 32
04e82108ecd1f7ac2c5328962484484c36a16f6087bb5214f28e13bff94c59ec
- 使用GnuTLS:
ubuntu@node01:/opt$ sudo psktool -u psk_identity -p database.psk -s 32
Generating a random key for user 'psk_identity'
Key stored to database.psk
查看psktool生成的psk 文件
代码语言:javascript复制ubuntu@node01:/opt$ sudo cat database.psk
psk_identity:23a80711aceb463a9e4fc97a226cf2dba5af12b916ac20cfd050fb8bb29aaa17
注意:使用 psktool 生成一个带有 PSK 标识及其关联 PSK 的数据库文件。Zabbix只需要PSK文件中的PSK,因此应该从文件中删除"psk_identity:"。
Zabbix Server==Zabbix Proxy PSK通信加密
1,使用OpenSSL生成PSK值
代码语言:javascript复制ubuntu@zabbix-proxy01:/etc/zabbix$ pwd
/etc/zabbix
ubuntu@zabbix-proxy01:/etc/zabbix$ openssl rand -hex 32
8e8fa61998bb6bd955c6dec12bfb2dec87fca842720edf6634116b5b0f4996f6
2,PSK值写入到文件中
代码语言:javascript复制ubuntu@zabbix-proxy01:/etc/zabbix$ sudo echo '8e8fa61998bb6bd955c6dec12bfb2dec87fca842720edf6634116b5b0f4996f6' >zabbix_proxy01.psk
3,设置 PSK 文件的访问权限 - Zabbix 用户读取
代码语言:javascript复制ubuntu@zabbix-proxy01:/etc/zabbix$ chown zabbix.zabbix zabbix_proxy01.psk
ubuntu@zabbix-proxy01:/etc/zabbix$ sudo chmod 600 zabbix_proxy01.psk
ubuntu@zabbix-proxy01:/etc/zabbix$ ll zabbix_proxy01.psk
-rw------- 1 zabbix zabbix 65 Mar 18 03:41 zabbix_proxy01.psk
4,Zabbix Proxy配置文件zabbix_proxy.conf中编辑TLS参数
代码语言:javascript复制[root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf
TLSConnect=psk # 加密链接方式
TLSAccept=psk # 接受psk的请求
TLSPSKIdentity=PSKProxy01 # 身份认证名
TLSPSKFile=/etc/zabbix/zabbix_proxy01.psk # psk加密文件位置
Zabbix Proxy将使用 PSK 连接到Zabbix Server。PSK 标识将是“PSKProxy01”。
5,在 Zabbix 前端为此Proxy配置 PSK。转到管理→Proxies,选择Proxy,转到"加密"选项卡。在"来自Proxy的连接"标记PSK中。将"PSK 身份"字段"PSKProxy01"和"PSK字符串"粘贴到"PSK"字段中。点击"更新"。
6,重新启动Zabbix Proxy。将开始使用基于 PSK 的加密连接到Zabbix Server。检查服务器和代理日志文件中的错误消息。
对于Proxy被动模式,过程相似。唯一的区别 TLSAccept=psk在代理配置文件中设置并将 Zabbix 前端中的"连接到Proxy"设置为PSK。
官方文档
https://www.zabbix.com/documentation/6.0/en/manual/encryption/using_pre_shared_keys