Zabbix の各事前共有キー (PSK) は、次のペアです。
PSK ID 文字列は、空ではないUTF-8の文字列です。 たとえば"PSK ID 001 Zabbix agentd"などです。この特定の PSK が Zabbix コンポーネントによって参照される一意の名前です。暗号化されずにネットワーク経由で送信されますので、機密情報を PSK ID 文字列に含めないでください。
PSK 文字列値は推測しにくい 16 進数の文字列です。たとえば、"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"などです。
Zabbix には PSK ID と値のサイズ制限があります。場合によっては、暗号化ライブラリの制限がより低くなることがあります。
コンポーネント | PSK ID 最大サイズ | PSK値 最小サイズ | PSK値 最大サイズ |
---|---|---|---|
Zabbix | 128 UTF-8 文字列 | 128-bit (16-bytes PSK, 16進数32桁) | 2048-bit (256-bytes PSK, 16進数512桁) |
GnuTLS | 128 bytes (UTF-8 文字列を含む) | - | 2048-bit (256-byte PSK, 16進数512桁) |
OpenSSL 1.0.x, 1.1.0 | 127 bytes (UTF-8 文字列を含む) | - | 2048-bit (256-byte PSK, 16進数512桁) |
OpenSSL 1.1.1 | 127 bytes (UTF-8 文字列を含む) | - | 512-bit (64-byte PSK, 16進数128桁) |
OpenSSL 1.1.1a 以降 | 127 bytes (UTF-8 文字列を含む) | - | 2048-bit (256-byte PSK, 16進数512桁) |
Zabbix フロントエンドでは使用する暗号化ライブラリに関係なく、最大128文字の PSK ID 文字列と 2048 ビットの PSK を設定できます。Zabbix コンポーネントが下限をサポートしている場合、これらのコンポーネントに許可された長さで PSK ID文字列 と PSK 値を設定するのはユーザーの責任です。、Zabbix コンポーネント間で通信障害が発生します。
Zabbix サーバーが PSK を使用してエージェントに接続する前に、サーバーはそのエージェント用に構成された PSK ID と PSK 値をデータベース (実際には構成キャッシュ) で検索します。 接続を受信すると、エージェントは設定ファイルから PSK ID と PSK 値を使用します。 双方が同じ PSK ID 文字列と PSK 値を持っている場合、接続が成功します。
各 PSK ID は、1 つの値のみとペアにする必要があります。 ID 文字列が同じで値が異なる 2 つの PSK が存在しないことを確認するのは、ユーザーの責任です。 そうしないと、予測できないエラーが発生したり、この PSK ID 文字列を持つ PSK を使用する Zabbix コンポーネント間の通信が中断したりする可能性があります。
たとえば、256 ビット (32 バイト) の PSK は、次のコマンドを使用して生成できます。
$ psktool -u psk_identity -p database.psk -s 32
Generating a random key for user 'psk_identity'
Key stored to database.psk
$ cat database.psk
psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb
上記の「psktool」は、PSK ID とそれに関連付けられた PSK を含むデータベース ファイルを生成することに注意してください。 Zabbix は PSK ファイルに PSK のみを想定しているため、識別文字列とコロン (':') をファイルから削除する必要があります。
エージェント ホストで PSK 値をファイルに書き込みます (例: /home/zabbix/zabbix_agentd.psk
)。 ファイルには、最初のテキスト文字列に PSK が含まれている必要があります。次に例を示します。
PSK ファイルへのアクセス権を設定します。Zabbix ユーザーだけが読み取れるようにする必要があります。
エージェント構成ファイル zabbix_agentd.conf
で TLS パラメータを編集します。たとえば次のように設定します。
エージェントはサーバーに接続し、PSK を使用したサーバー(アクティブチェック)とzabbix_get
からの接続のみを受けつけます。PSK ID は"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 が含まれている必要があります。次に例を示します。
PSK ファイルへのアクセス権を設定します。Zabbix ユーザーだけが読み取れるようにする必要があります。
プロキシ構成ファイル zabbix_proxy.conf
で TLS パラメータを編集します。たとえば、次のように設定します。
プロキシは PSK を使用してサーバーに接続します。 PSK ID は"PSK 002"になります。
(ダウンタイムを最小限に抑えるには、接続暗号化の管理 で接続タイプを変更する方法を参照してください)。
Zabbix フロントエンドでこのプロキシの PSK を構成します。 [管理]→[プロキシ] に移動し、プロキシを選択して、[暗号化] タブに移動します。 "プロキシからの接続"でPSK
にチェックします。 "PSKアイデンティティ"フィールドに"PSK 002"を貼り付け、 "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"を"PSK"フィールドに入力して、"更新"をクリックします。
プロキシを再起動して、 サーバーへの PSK ベースの暗号化された接続の使用を開始します。 サーバーとプロキシのログファイルでエラー メッセージを確認してください。
パッシブ プロキシの場合、手順は非常に似ています。 唯一の違いは、プロキシ構成ファイルでTLSAccept=psk
を設定し、Zabbix フロントエンドで"プロキシへの接続"をPSK
に設定することです。