Zabbix Agentとの通信をPSKで暗号化する

以前から使用しているZabbixですが、ついサボってエージェントとの通信を暗号化していませんでした。流石に拙いかなと思い立ち、PSK(Pre-Shared Key・事前共有鍵)による暗号化設定をした際のメモです。

準備する情報は次の通りです。

TLSPSKIdentityzabbix-www.example.com
事前共有鍵Open SSLでランダムな文字列を生成(後述)

Zabbix Agent側(監視対象)で作業します。先ずはPSKを生成します。

# mkdir -p /etc/zabbix/tls
# openssl rand -hex 32 > /etc/zabbix/tls/zabbix_agentd.psk
# cat /etc/zabbix/tls/zabbix_agentd.psk
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Zabbix Agentの設定を変更します。

# vi /etc/zabbix/zabbix_agentd.conf
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=zabbix-www.example.com
TLSPSKFile=/etc/zabbix/tls/zabbix_agentd.psk

Zabbix ServerではGUIから設定します。「設定」⇒「ホスト」⇒対象のホストを選択し、暗号化タブに設定を入力します。ホストへの接続を「PSK」、ホストからの接続の「暗号化なし」のチェックを外し、「PSK」のチェックを入れ、「PSKアイデンティティ」にTLSPSKIdentityの値、PSKに生成したPSKの値を入れます。「更新」ボタンを押すと同時に、Zabbix Agent側でエージェントを再起動します。

# systemctl restart zabbix-agent

サーバ側のホスト一覧画面で、エージェント暗号化に「PSK」が2つグリーンで表示されれば成功です。失敗すると「Zabbix agent on www.example.com is unreachable for 5 minutes」と怒られます。

以上です。

参考サイト