6 フロントエンドへの安全な接続
概要
このセクションでは、Zabbix フロントエンドと Zabbix サーバー間のセキュアな TLS 接続を実現するための Zabbix のセットアップ手順と設定例について説明します。
設定
デフォルトでは、Zabbix WebインターフェースとZabbix サーバー間の通信は暗号化されていません。セキュリティを向上させるには、両側でTLSを有効にしてください。以下は、そのための最も簡単な方法の例です。
1. 証明書と鍵を生成します。
作業ディレクトリを作成します。
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
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.crt
Zabbix Webインターフェース用の秘密鍵と証明書を生成します(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.crt
2. 適切な権限を設定します。
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インターフェース用(お使いのディストリビューションの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.crt
3. Zabbix サーバーを設定します。
zabbix_server.conf に以下を追加します。
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Optionally:
# TLSFrontendCertIssuer=/CN=MyZabbixCA/
# TLSFrontendCertSubject=/CN=zabbix-frontend-node/
その後、サーバーを再起動します。
sudo systemctl restart zabbix-server
4. Zabbix Webインターフェースを設定します。
Webインターフェースのインストール時に、Encrypt connections from Web interface オプション(必要に応じて Verify server certificate issuer and subject オプションも)を有効にし、TLS CA file、TLS key file、TLS certificate file の各フィールド(必要に応じて Server TLS certificate issuer および Server TLS certificate subject フィールドも)に入力します。

| Parameter | Description |
|---|---|
| TLS CA file | サーバー証明書の検証に使用する認証局(CA)証明書ファイルのフルパスを指定します。 |
| TLS key file | クライアント証明書に対応するクライアント秘密鍵ファイルのフルパスを指定します。 |
| TLS certificate file | 相互TLS認証が必要な場合に、クライアント証明書ファイルのフルパスを指定します。 |
| Server TLS certificate issuer | サーバー証明書と照合する発行者の識別名(DN)を指定します。 |
| Server TLS certificate subject | サーバー証明書と照合するサブジェクトの識別名(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';
// Optionally:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER'] = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';
5. Zabbix WebインターフェースまたはZabbix サーバーのログファイルにエラーメッセージがないことを確認し、暗号化を検証します。
tail -f /var/log/zabbix/zabbix_server.log