This is a translation of the original English documentation page. Help us make it better.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

17. 暗号化

概要

Zabbixは、トランスポートレイヤーセキュリティ(TLS)プロトコルv.1.2、1.3 (cryptoライブラリによる)を使用した Zabbix コンポーネント間の
暗号化通信をサポートしています。証明書ベースと事前共有キーベースの暗号化がサポートされています。

暗号化は以下の接続に設定することができます:

暗号化はオプションで、個々のコンポーネントに設定可能:

  • proxy や agent の中には、server との間で証明書ベースの暗号化を使用するように設定できるものもあれば、事前共有鍵ベースの 暗号化を使用できるものもあり、また暗号化されていない通信を続けるものもあります。(以前と同様です)
  • server(proxy)は、ホストごとに異なる暗号化設定を使用することができます。

Zabbixのデーモンプログラムでは、暗号化された接続と暗号化されていない接続に1つのリスニングポートを使用します。
暗号化を追加する場合、ファイアウォールに新しいポートを開く必要はありません。

制限事項

  • 秘密鍵は起動時に Zabbix コンポーネントが読み込み可能なファイルにプレーンテキストで保存されます。
  • 事前共有鍵は Zabbix フロントエンドで入力され、Zabbix データベースにプレーンテキストで保存されます。
  • 内蔵の暗号化では、通信は保護されません。
    • Zabbix フロントエンドが動作するウェブサーバとユーザのウェブブラウザ間
    • Zabbix フロントエンドと Zabbix サーバ間
  • 現在、暗号化された接続は完全な TLS ハンドシェイクで開かれ、セッションキャッシュとチケットは実装されていません。
  • 暗号化を追加すると、ネットワーク遅延に応じてアイテムのチェックとアクションにかかる時間が増加します。
    • 例えば、パケット遅延が100msの場合、TCP 接続を開き、暗号化されていないリクエストを送信するのに約200msかかります。 暗号化では、TLS 接続の確立に約1000msが追加されます。
    • タイムアウトを増やす必要があるかもしれません。そうしないと、agent 上でリモートスクリプトを実行するいくつかのアイテムや アクションが、暗号化されていない接続では動作するのに、暗号化されているとタイムアウトで失敗する可能性があります。
  • 暗号化は、network discoveryではサポートされていません。Zabbix agent が 暗号化されていない接続を拒否するように設定されている場合、ネットワークディスカバリーが実行するZabbix agent の チェックは成功しません。

暗号化をサポートした Zabbix のコンパイル

暗号化をサポートするために、Zabbix は以下のいずれかのライブラリとコンパイル、リンクする必要があります:

  • GnuTLS - from version 3.1.18
  • OpenSSL - versions 1.0.1, 1.0.2, 1.1.0, 1.1.1, 3.0.x. Note that 3.0.x is supported since Zabbix 6.0.4.
  • LibreSSL - tested with versions 2.7.4, 2.8.2:
    • LibreSSL 2.6.x はサポートされていません。
    • LibreSSL は OpenSSL の互換性のある代替品としてサポートされています。新しい tls_*() LibreSSL 固有の API関数は使用されません。 LibreSSL を使用してコンパイルされた Zabbix コンポーネントは PSK を使用できず、証明書のみ使用可能です。

ライブラリの選択は、"configure "スクリプトにそれぞれのオプションを指定することで行います:

  • --with-gnutls[=DIR]
  • --with-openssl[=DIR] (also used for LibreSSL)

例えば、server と agent のソースを OpenSSL で設定する場合、次のようになります:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openssl

異なる Zabbix コンポーネントは異なる暗号化ライブラリを使用してコンパイルされている場合があります。
(例:サーバはOpenSSL、エージェントはGnuTLSなど)

事前共有鍵(PSK)の使用を計画している場合、PSKを使用している Zabbix コンポーネントで GnuTLS または OpenSSL 1.1.0
(またはそれ以降)ライブラリの使用を検討してください。GnuTLSOpenSSL 1.1.0ライブラリは、Perfect Forward Secrecy
PSK暗号をサポートしています。
古いバージョンの OpenSSL ライブラリ(1.0.1、1.0.2c)も PSK をサポートしていますが、利用可能なPSK暗号スイートは
Perfect Forward Secrecy を提供しません。

接続の暗号化管理

Zabbix のコネクションは以下を使用することができます:

Zabbix コンポーネント間の暗号化を指定するために、2つの重要なパラメータがあります:

  • TLSConnect - 発信接続に使用する暗号化方式を指定します (非暗号化、PSK、または証明書)。
  • TLSAccept - 着信接続で許可される接続の種類を指定します (非暗号化、PSK、または証明書)。 1つまたは複数の値を指定できます。

TLSConnectは、Zabbix proxy (アクティブモードで、server への接続のみを指定)とZabbix agent (アクティブチェック用)の
設定ファイルで使用されています。Zabbixフロントエンドでは、TLSConnectに相当するのは
Configuration → Hosts → <some host> → Encryptionタブの Connections to host フィールドと
Administration → Proxies → <some proxy> → Encryption タブの Connections to proxy フィールドになります。
接続に設定された暗号化方式が失敗した場合、他の暗号化方式は試されません。

TLSAcceptはZabbix proxy (パッシブモード、server からの接続のみ指定)と Zabbix agent (パッシブチェック用)の
設定ファイルで使用されています。Zabbixフロントエンドでは、TLSAcceptに相当するのは
Configuration → Hosts → <some host> → Encryption* タブの Connections from host フィールドと
Administration → Proxies → <some proxy> → Encryption タブの Connections from proxy フィールドになります。

通常、受信する暗号化には1種類の暗号化しか設定しません。しかし、ダウンタイムやロールバックを最小限に抑えながら、
暗号化方式を非暗号化から証明書方式に変更したい場合があります。これを実現するために:

  • agent 設定ファイルに TLSAccept=unencrypted,cert を設定し、Zabbix agent を再起動する。
  • zabbix_get を使用して、証明書を使用するエージェントへの接続をテストします。うまくいった場合、 Zabbix フロントエンドでその agent の暗号化を再設定することができます。 フロントエンドの Configuration → Hosts → <some host> → Encryption タブで Connections to host を "Certificate" に設定します。
  • server 設定キャッシュが更新されたとき(およびホストが監視されている場合は proxy 設定が更新されたとき) proxy で監視しているホストの場合は proxy 設定も更新される) と、その agent への接続が暗号化されます。
  • 期待通りに動作していれば、agent 設定ファイルにTLSAccept=certを設定し、Zabbix agent を再起動することができます。 これで、agent は暗号化された証明書ベースの接続のみを受け入れるようになります。暗号化されていない、 PSKベースの接続は拒否されます。

同様に、server と proxy でも動作します。Zabbixフロントエンドのホスト設定でConnections from hostを "Certificate" に
設定すると、agent (アクティブチェック)とzabbix_sender(トラッパーアイテム)からは証明書ベースの暗号化接続のみが
許可されます。

ほとんどの場合、受信接続と送信接続で同じ暗号化タイプを使用するか、まったく暗号化しないように設定します。しかし、
技術的には非対称に設定することが可能です。

各ホストの暗号化設定は、Zabbixフロントエンドの Configuration → HostsAgent encryption 列に表示されます。 例:

Connections to host Allowed connections from host Rejected connections from host
none_none.png Unencrypted Unencrypted Encrypted, certificate and PSK-based encrypted
cert_cert.png Encrypted, certificate-based Encrypted, certificate-based Unencrypted and PSK-based encrypted
psk_psk.png Encrypted, PSK-based Encrypted, PSK-based Unencrypted and certificate-based encrypted
psk_none_psk.png Encrypted, PSK-based Unencrypted and PSK-based encrypted Certificate-based encrypted
cert_all.png Encrypted, certificate-based Unencrypted, PSK or certificate-based encrypted -

デフォルトでは、接続は暗号化されていません。暗号化は、各ホストとプロキシに個別に設定する必要があります。

zabbix_getとzabbix_senderの暗号化機能

zabbix_getzabbix_sender manpages のマニュアルを参照してください。

暗号スイート

暗号スイートはデフォルトでは Zabbix 起動時に内部で設定され、Zabbix 4.0.19以前、4.4.7以前ではユーザが設定することは
できません。

Zabbix 4.0.19、4.4.7 から GnuTLS と OpenSSL のユーザ設定可能な暗号スイートがサポートされるようになりました。
ユーザはセキュリティポリシーに従って暗号スイートを configure することができます。
この機能の使用は任意です。(組み込みのデフォルトの暗号スイートはそのまま機能します)

デフォルト設定でコンパイルされた暗号ライブラリの場合、Zabbixのビルトインルールでは通常以下の暗号スイートを
使用します。(優先度の高いものから低いものの順):

ライブラリ Certificate ciphersuites PSK ciphersuites
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のトラブルシューティングに精通している
上級ユーザー向けの機能です。

組み込みの暗号スイート選択基準は、以下のパラメータを使用して上書きすることができます:

上書きスコープ パラメータ 説明
Ciphersuite selection for certificates TLSCipherCert13 Valid OpenSSL 1.1.1 cipher strings for TLS 1.3 protocol (their values are passed to the OpenSSL function SSL_CTX_set_ciphersuites()). Certificate-based ciphersuite selection criteria for TLS 1.3

Only OpenSSL 1.1.1 or newer.
TLSCipherCert Valid OpenSSL cipher strings for TLS 1.2 or valid GnuTLS priority strings. Their values are passed to the SSL_CTX_set_cipher_list() or gnutls_priority_init() functions, respectively. Certificate-based ciphersuite selection criteria for TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)
Ciphersuite selection for PSK TLSCipherPSK13 Valid OpenSSL 1.1.1 cipher strings for TLS 1.3 protocol (their values are passed to the OpenSSL function SSL_CTX_set_ciphersuites()). PSK-based ciphersuite selection criteria for TLS 1.3

Only OpenSSL 1.1.1 or newer.
TLSCipherPSK Valid OpenSSL cipher strings for TLS 1.2 or valid GnuTLS priority strings. Their values are passed to the SSL_CTX_set_cipher_list() or gnutls_priority_init() functions, respectively. PSK-based ciphersuite selection criteria for TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)
Combined ciphersuite list for certificate and PSK TLSCipherAll13 Valid OpenSSL 1.1.1 cipher strings for TLS 1.3 protocol (their values are passed to the OpenSSL function SSL_CTX_set_ciphersuites()). Ciphersuite selection criteria for TLS 1.3

Only OpenSSL 1.1.1 or newer.
TLSCipherAll Valid OpenSSL cipher strings for TLS 1.2 or valid GnuTLS priority strings. Their values are passed to the SSL_CTX_set_cipher_list() or gnutls_priority_init() functions, respectively. Ciphersuite selection criteria for TLS 1.2/1.3 (GnuTLS), TLS 1.2 (OpenSSL)

zabbix_getzabbix_sender ユーティリティで暗号化スイート選択を
上書きするには、次のコマンドラインパラメータを使用します。:

  • --tls-cipher13
  • --tls-cipher

新しいパラメータはオプションである。パラメータが指定されていない場合、内部のデフォルト値が使用されます。
パラメータが定義されている場合、空にすることはできません。

crypto ライブラリの TLSCipher* 値の設定に失敗すると、server、proxy、または agent は起動せず、エラーが記録されます。

各パラメータがどのような場合に適用されるかを理解することが重要です。

発信コネクション

最も単純なケースは、発信コネクションです:

  • 証明書を使用した発信コネクションの場合 - TLSCipherCert13 または TLSCipherCert を使用します。
  • PSK を使用する発信コネクションには、TLSCipherPSK13 と TLSCipherPSK を使用します。
  • zabbix_と zabbix_ユーティリティの場合、コマンドラインパラメータ --tls-cipher13--tls-cipher を 使用できます。(暗号化は一義的に --tls-connect パラメータで指定されます)
着信コネクション

着信コネクションの場合、ルールがコンポーネントや構成によって異なるため、少し複雑になります。

Zabbix agent の場合 :

Agent connection setup Cipher configuration
TLSConnect=cert TLSCipherCert, TLSCipherCert13
TLSConnect=psk TLSCipherPSK, TLSCipherPSK13
TLSAccept=cert TLSCipherCert, TLSCipherCert13
TLSAccept=psk TLSCipherPSK, TLSCipherPSK13
TLSAccept=cert,psk TLSCipherAll, TLSCipherAll13

Zabbix server と ** proxy** の場合:

Connection setup Cipher configuration
Outgoing connections using PSK TLSCipherPSK, TLSCipherPSK13
Incoming connections using certificates TLSCipherAll, TLSCipherAll13
Incoming connections using PSK if server has no certificate TLSCipherPSK, TLSCipherPSK13
Incoming connections using PSK if server has certificate TLSCipherAll, TLSCipherAll13

上の2つの表でいくつかのパターンを見ることができます:

  • TLSCipherAll および TLSCipherAll13は、証明書とPSKベースの暗号化方式を組み合わせたリストを使用する場合にのみ 指定できます。証明書が設定されている server(proxy)(PSK暗号スイートは、 cryptoライブラリがPSKをサポートしている場合、 server、proxy で常に設定されます)、証明書とPSKベースの両方の受信コネクションを受け入れるように設定された agent の場合
  • その他の場合は、TLSCipherCertTLSCipherPSK の両方またはどちらかで十分です。

以下の表は、TLSCipher* 組み込みのデフォルト値を示しています。これらは、独自のカスタム値のための良い出発点になる
可能性があります。

Parameter 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
Parameter 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 を
サポートせずにコンパイルされた場合、それぞれ異なっています。

** ユーザー設定暗号スイートの例 **

ユーザーが設定した暗号スイートは、以下の例を参照してください:

暗号文字列をテストし、PFS 暗号スイートのみを許可します。

どの暗号スイートが選択されたかを確認するには、設定ファイルで DebugLevel=4 を設定するか、zabbix_sender の
-vv オプションを使用する必要があります。

希望する暗号スイートが得られるまで、TLSCipher*パラメータの実験が必要な場合があります。TLSCipher*パラメータを 調整するために、Zabbix server、proxy、agent を何度も再起動するのは不便です。より便利なオプションは zabbix_senderまたは openssl コマンドを使用することです。ここではその両方を紹介します。

1. zabbix_sender を使う

テスト用の設定ファイルを作成してみましょう。 zabbix_agentd.conf ファイルの構文で、/home/zabbix/test.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 とエージェントの証明書と PSK が必要です。証明書とPSKのファイルパスとファイル名は、
環境に合わせて調整してください。

証明書を使用せず、PSKのみを使用する場合は、より単純なテストファイルを作成することができます:

  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 agent との相互運用性を確保するために選ばれました。

新しいシステムでは、PFS(Perfect Forward Secrecy)を使用する暗号化方式のみなど、一部の暗号化方式のみを許可することで
セキュリティを強化することが可能です。ここでは、TLSCipher* パラメータを使って、PFSを持つ暗号スイートだけを
許可するようにしてみましょう。

PSKを使用した場合、OpenSSL 1.0.1および1.0.2を使用したシステムと相互運用できません。
証明書ベースの暗号化は動作するはずです。

設定ファイル test.conf に2行を追加します:

  TLSCipherCert=EECDH+aRSA+AES128
         TLSCipherPSK=kECDHEPSK+AES128

再度テストします:

  $ 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 ではテストできません。TLSCipherAll と TLSCipherAll13 を
調整するには、agent、proxy、または server で実験する必要があります。

したがって、PFS 暗号スイートのみを許可するには、最大で 3 つのパラメータを追加する必要があります。

  TLSCipherCert=EECDH+aRSA+AES128
         TLSCipherPSK=kECDHEPSK+AES128
         TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128

を zabbix_agentd.conf, zabbix_proxy.conf, zabbix_server_conf に追加する必要があります。

Zabbix環境がPSKベースの暗号化のみを使用し、証明書を使用しない場合は、1つだけにしてください:

  TLSCipherPSK=kECDHEPSK+AES128

この仕組みを理解した上で、Zabbixの外でもopensslコマンドを使用して暗号化方式をテストすることができます。
3つの 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
AES128からAES256への切り替え

Zabbixはデータ用のビルトインデフォルトとしてAES128を使用しています。証明書を使用していて、OpenSSL 1.1.1 の
AES256 に切り替えたい場合を考えてみましょう。

これは、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* パラメータも定義されています。PSK暗号スイートは、server / proxy で完全に無効に することはできません。

zabbix_agentd.conf でも:

  TLSConnect=cert
         TLSAccept=cert
         TLSCAFile=/home/zabbix/ca.crt
         TLSCertFile=/home/zabbix/agent.crt
         TLSKeyFile=/home/zabbix/agent.key
         TLSCipherCert13=TLS_AES_256_GCM_SHA384
         TLSCipherCert=EECDH+aRSA+AES256:-SHA1:-SHA384