このセクションでは、ZabbixフロントエンドとZabbixサーバー間の安全なTLS接続のためのZabbixセットアップ手順と設定例を示します。
デフォルトでは、ZabbixフロントエンドとZabbixサーバー間の通信は暗号化されていません。セキュリティを強化するために、両方でTLSを有効にしてください。以下は、その最も簡単な方法の例です。
1. 証明書と鍵を生成します。
作業ディレクトリを作成します:
CA証明書を作成します(MyZabbixCAの値は実際のコモンネームに合わせて調整してください):
sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"Zabbixサーバー用の秘密鍵と証明書を生成します(zabbix-server.example.comの値は実際のコモンネームに合わせて調整してください):
sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crtZabbixフロントエンド用の秘密鍵と証明書を生成します(zabbix-frontend-nodeの値は実際のコモンネームに合わせて調整してください):
sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt2. 適切なパーミッションを設定します。
Zabbixサーバー用(ディストリビューションのZabbixサーバーデーモンユーザーに合わせて所有者/グループを調整してください):
sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crtフロントエンド用(ディストリビューションのWebサーバーユーザーに合わせて所有者/グループを調整してください):
sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt3. Zabbixサーバーを設定します。
zabbix_server.confに以下を追加します:
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# オプション:
# TLSFrontendCertIssuer=/CN=MyZabbixCA/
# TLSFrontendCertSubject=/CN=zabbix-frontend-node/その後、サーバーを再起動します:
4. Zabbixフロントエンドを設定します。
Webインターフェースのインストール時に、Webインターフェースからの接続の暗号化オプション(必要に応じてサーバー証明書の発行者とサブジェクトの検証オプション)を有効にし、TLS CAファイル、TLS鍵ファイル、TLS証明書ファイルの各フィールド(必要に応じてサーバーTLS証明書の発行者およびサーバーTLS証明書のサブジェクトフィールド)に入力します:

| パラメータ | 説明 |
|---|---|
| TLS CAファイル | サーバー証明書の検証に使用する認証局(CA)証明書ファイルへのフルパスを指定します。 |
| TLS鍵ファイル | クライアント証明書に対応するクライアント秘密鍵ファイルへのフルパスを指定します。 |
| TLS証明書ファイル | 相互TLS認証が必要な場合は、クライアント証明書ファイルへのフルパスを指定します。 |
| サーバーTLS証明書の発行者 | サーバー証明書と照合する発行者の識別名(DN)を指定します。 |
| サーバーTLS証明書のサブジェクト | サーバー証明書と照合するサブジェクトの識別名(DN)を指定します。 |
既存のインストールでは、zabbix.conf.phpの以下のフィールドを編集します:
$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// オプション:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';5. ZabbixフロントエンドまたはZabbixサーバーログファイルにエラーメッセージが表示されていないことを確認して、暗号化を確認します: