Zabbixは、暗号化ライブラリに応じて、トランスポート・レイヤー・セキュリティ(TLS)プロトコルv1.2および1.3を使用したZabbixコンポーネント間の暗号化通信をサポートしています。証明書ベースおよび事前共有鍵ベースの暗号化がサポートされています。
暗号化は以下の接続で設定できます:
暗号化はオプションであり、個々のコンポーネントごとに設定できます:
Zabbixデーモンプログラムは、暗号化された接続と暗号化されていない接続の両方に対して1つのリスニングポートを使用します。暗号化を追加しても、ファイアウォールで新しいポートを開く必要はありません。
暗号化をサポートするには、Zabbixをサポートされているいずれかの暗号ライブラリでコンパイルおよびリンクする必要があります。
tls_*()LibreSSL固有のAPI関数は使用されません。 LibreSSLでコンパイルされたZabbixコンポーネントはPSKを使用できず、証明書のみが使用可能です。ZabbixフロントエンドのSSL設定については、ベストプラクティスを参照してください。
ライブラリは、"configure"スクリプトにそれぞれのオプションを指定して選択します。
--with-gnutls[=DIR]--with-openssl[=DIR](LibreSSLにも使用)例えば、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(またはそれ以降)のライブラリを使用することを検討してください。GnuTLSおよびOpenSSL 1.1.0ライブラリは、Perfect Forward Secrecyを備えたPSK暗号スイートをサポートしています。OpenSSLライブラリの古いバージョン(1.0.1、1.0.2c)もPSKをサポートしていますが、利用可能なPSK暗号スイートはPerfect Forward Secrecyを提供しません。
Zabbixの接続では以下を使用できます:
Zabbixコンポーネント間の暗号化を指定するために使用される重要なパラメータが2つあります:
TLSConnectは、Zabbixプロキシの設定ファイル(アクティブモードではサーバーへの接続のみを指定)およびZabbixエージェント(アクティブチェック用)で使用されます。Zabbixフロントエンドでは、TLSConnectに相当するものがデータ収集 → ホスト → <あるホスト> → 暗号化タブのホストへの接続フィールド、および管理 → プロキシ → <あるプロキシ> → 暗号化タブのプロキシへの接続フィールドです。接続のために設定された暗号化タイプで失敗した場合、他の暗号化タイプは試行されません。
TLSAcceptは、Zabbixプロキシの設定ファイル(パッシブモードではサーバーからの接続のみを指定)およびZabbixエージェント(パッシブチェック用)で使用されます。Zabbixフロントエンドでは、TLSAcceptに相当するものがデータ収集 → ホスト → <あるホスト> → 暗号化タブのホストからの接続フィールド、および管理 → プロキシ → <あるプロキシ> → 暗号化タブのプロキシからの接続フィールドです。
通常、着信接続には1種類の暗号化のみを設定します。しかし、例えば暗号化なしから証明書ベースに切り替えるなど、ダウンタイムを最小限に抑え、ロールバックの可能性を残したまま暗号化タイプを切り替えたい場合があります。そのためには:
TLSAccept=unencrypted,certを設定し、Zabbixエージェントを再起動しますTLSAccept=certを設定し、Zabbixエージェントを再起動できます。これでエージェントは証明書ベースの暗号化接続のみを受け付けるようになります。暗号化なしおよびPSKベースの接続は拒否されます。同様の方法でサーバーやプロキシでも動作します。Zabbixフロントエンドのホスト設定でホストからの接続が「証明書」に設定されている場合、エージェント(アクティブチェック)およびzabbix_sender(トラッパーアイテム)からの証明書ベースの暗号化接続のみが受け付けられます。
ほとんどの場合、着信および発信接続の両方で同じ暗号化タイプ、または暗号化なしを設定します。しかし、技術的には非対称に設定することも可能です。例えば、着信は証明書ベース、発信はPSKベースの暗号化などです。
各ホストの暗号化設定は、Zabbixフロントエンドのデータ収集 → ホストのエージェント暗号化列に表示されます。例:
| 例 | ホストへの接続 | ホストからの許可された接続 | ホストからの拒否された接続 |
|---|---|---|---|
![]() |
暗号化なし | 暗号化なし | 暗号化、証明書およびPSKベースの暗号化 |
![]() |
暗号化、証明書ベース | 暗号化、証明書ベース | 暗号化なしおよびPSKベースの暗号化 |
![]() |
暗号化、PSKベース | 暗号化、PSKベース | 暗号化なしおよび証明書ベースの暗号化 |
![]() |
暗号化、PSKベース | 暗号化なしおよびPSKベースの暗号化 | 証明書ベースの暗号化 |
![]() |
暗号化、証明書ベース | 暗号化なし、PSKまたは証明書ベースの暗号化 | - |
接続はデフォルトで暗号化されていません。暗号化は各ホストおよびプロキシごとに個別に設定する必要があります。
zabbix_get と zabbix_sender manpages のマニュアルを参照してください。
暗号スイートはデフォルトでZabbixの起動時に内部的に設定されます。
また、GnuTLSおよびOpenSSLではユーザーが設定した暗号スイートもサポートされています。ユーザーは 設定で セキュリティポリシーに従って暗号スイートを設定できます。この機能の使用は任意です(組み込みの デフォルト暗号スイートも引き続き動作します)。
デフォルト設定でコンパイルされた暗号ライブラリの場合、Zabbixの組み込み ルールは通常、以下の暗号スイート(優先度の高い順)となります。
| ライブラリ | 証明書暗号スイート | PSK暗号スイート |
|---|---|---|
| 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のトラブルシューティングに慣れている上級ユーザー向けの機能です。
組み込みの暗号スイート選択基準は、以下のパラメータを使用して上書きできます。
| 上書き範囲 | パラメータ | 値 | 説明 |
|---|---|---|---|
| 証明書用の暗号スイート選択 | TLSCipherCert13 | TLS 1.3プロトコル用の有効なOpenSSL 1.1.1 cipher strings(値はOpenSSL関数SSL_CTX_set_ciphersuites()に渡されます)。 |
TLS 1.3用の証明書ベースの暗号スイート選択基準 OpenSSL 1.1.1以降のみ。 |
| TLSCipherCert | TLS 1.2用の有効なOpenSSL cipher stringsまたは有効なGnuTLS priority strings。値はそれぞれSSL_CTX_set_cipher_list()またはgnutls_priority_init()関数に渡されます。 |
TLS 1.2/1.3(GnuTLS)、TLS 1.2(OpenSSL)用の証明書ベースの暗号スイート選択基準 | |
| PSK用の暗号スイート選択 | TLSCipherPSK13 | TLS 1.3プロトコル用の有効なOpenSSL 1.1.1 cipher strings(値はOpenSSL関数SSL_CTX_set_ciphersuites()に渡されます)。 |
TLS 1.3用のPSKベースの暗号スイート選択基準 OpenSSL 1.1.1以降のみ。 |
| TLSCipherPSK | TLS 1.2用の有効なOpenSSL cipher stringsまたは有効なGnuTLS priority strings。値はそれぞれSSL_CTX_set_cipher_list()またはgnutls_priority_init()関数に渡されます。 |
TLS 1.2/1.3(GnuTLS)、TLS 1.2(OpenSSL)用のPSKベースの暗号スイート選択基準 | |
| 証明書とPSKの両方の暗号スイートリスト | TLSCipherAll13 | TLS 1.3プロトコル用の有効なOpenSSL 1.1.1 cipher strings(値はOpenSSL関数SSL_CTX_set_ciphersuites()に渡されます)。 |
TLS 1.3用の暗号スイート選択基準 OpenSSL 1.1.1以降のみ。 |
| TLSCipherAll | TLS 1.2用の有効なOpenSSL cipher stringsまたは有効なGnuTLS priority strings。値はそれぞれSSL_CTX_set_cipher_list()またはgnutls_priority_init()関数に渡されます。 |
TLS 1.2/1.3(GnuTLS)、TLS 1.2(OpenSSL)用の暗号スイート選択基準 |
zabbix_getおよび zabbix_senderユーティリティで暗号スイート選択を上書きするには、コマンドラインパラメータを使用します。
--tls-cipher13--tls-cipher新しいパラメータはオプションです。パラメータが指定されていない場合は、内部のデフォルト値が使用されます。パラメータが定義されている場合は空にできません。
暗号ライブラリでTLSCipher*値の設定に失敗した場合、サーバー、プロキシ、またはエージェントは起動せず、エラーが記録されます。
各パラメータがいつ適用されるかを理解することが重要です。
最も単純なケースは外部接続です:
--tls-cipher13 または --tls-cipher を使用できます(暗号化は --tls-connect パラメータで明確に指定されます)着信接続の場合は、ルールがコンポーネントや設定に固有であるため、少し複雑です。
Zabbix エージェントの場合:
| エージェント接続設定 | 暗号スイート設定 |
|---|---|
| TLSConnect=cert | TLSCipherCert, TLSCipherCert13 |
| TLSConnect=psk | TLSCipherPSK, TLSCipherPSK13 |
| TLSAccept=cert | TLSCipherCert, TLSCipherCert13 |
| TLSAccept=psk | TLSCipherPSK, TLSCipherPSK13 |
| TLSAccept=cert,psk | TLSCipherAll, TLSCipherAll13 |
Zabbix サーバーおよびプロキシの場合:
| 接続設定 | 暗号スイート設定 |
|---|---|
| PSKを使用した発信接続 | TLSCipherPSK, TLSCipherPSK13 |
| 証明書を使用した着信接続 | TLSCipherAll, TLSCipherAll13 |
| サーバーに証明書がない場合のPSKを使用した着信接続 | TLSCipherPSK, TLSCipherPSK13 |
| サーバーに証明書がある場合のPSKを使用した着信接続 | TLSCipherAll, TLSCipherAll13 |
上記2つの表には、いくつかのパターンが見られます:
以下の表は、TLSCipher* の組み込みデフォルト値を示しています。これらは独自のカスタム値を設定する際の良い出発点となります。
| パラメータ | 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 |
| パラメータ | 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サポートなしでコンパイルされている場合は異なります。
ユーザー設定の暗号スイートの例
以下に、ユーザー設定の暗号スイートの例を示します:
どの暗号スイートが選択されたかを確認するには、設定ファイルで 'DebugLevel=4'を設定するか、zabbix_senderに-vvオプションを使用する必要があります。
目的の暗号スイートを得るには、TLSCipher*パラメータでいくつか試行錯誤が必要な場合があります。 TLSCipher*パラメータを調整するためだけにZabbixサーバー、プロキシ、エージェントを何度も再起動するのは不便です。 より便利な方法は、zabbix_senderやopensslコマンドを使用することです。両方の方法を紹介します。
1. zabbix_senderを使用する場合。
例えば/home/zabbix/test.confというテスト用設定ファイルを作成します。 zabbix_agentd.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エージェントとの相互運用性を確保するために選択されています。
新しいシステムでは、PFS(Perfect Forward Secrecy)付きの暗号スイートのみを許可するなど、セキュリティを強化することができます。 TLSCipher*パラメータを使用してPFS付きの暗号スイートのみを許可してみましょう。
PSKを使用する場合、OpenSSL 1.0.1および1.0.2を使用するシステムとの相互運用性は失われます。 証明書ベースの暗号化は動作するはずです。
test.conf設定ファイルに2行追加します:
そして再度テストします:
$ 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ではテストできません。 これらは上記の例で表示される"certificate and PSK ciphersuites"の値には影響しません。 TLSCipherAllおよびTLSCipherAll13を調整するには、エージェント、プロキシ、サーバーで試行する必要があります。
したがって、PFS暗号スイートのみを許可するには、最大3つのパラメータを
TLSCipherCert=EECDH+aRSA+AES128
TLSCipherPSK=kECDHEPSK+AES128
TLSCipherAll=EECDH+aRSA+AES128:kECDHEPSK+AES128zabbix_agentd.conf、zabbix_proxy.conf、zabbix_server_confに追加する必要があります。 それぞれに証明書が設定されており、エージェントにもPSKがある場合です。
Zabbix環境がPSKベースの暗号化のみを使用し、証明書を使用しない場合は、1つだけで十分です:
仕組みが理解できたので、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-SHA1Zabbixはデータ用のビルトインデフォルトとして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 でも: