Webインターフェースへの安全な接続

概要

このセクションでは、Zabbix Webインターフェースと 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
# オプション:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node

次に、サーバーを再起動します。

sudo systemctl restart zabbix-server

4. Zabbix Webインターフェースを設定します。

Webインターフェースのインストール中に、Webインターフェースからの接続を暗号化 オプションを有効にします(必要に応じて、サーバー証明書の発行者とサブジェクトを検証 オプションも有効にします)。次に、TLS CAファイルTLSキーファイルTLS証明書ファイル の各フィールド(必要に応じて、サーバーTLS証明書の発行者 および サーバーTLS証明書のサブジェクト フィールドも)に値を入力します。

パラメーター 説明
TLS CAファイル サーバーの証明書の検証に使用する認証局(CA)証明書ファイルの完全なパスを指定します。
TLSキーファイル クライアント証明書に対応するクライアント秘密鍵ファイルの完全なパスを指定します。
TLS証明書ファイル 相互TLS認証が必要な場合は、クライアント証明書ファイルの完全なパスを指定します。
サーバーTLS証明書の発行者 サーバーの証明書と照合する発行者の識別名(DN)を指定します。
サーバーTLS証明書のサブジェクト サーバーの証明書と照合するサブジェクトの識別名(DN)を指定します。

既存のインストール環境では、Webインターフェース設定ファイルで次のパラメーターを編集します。

$ZBX_SERVER_TLS['ACTIVE'] = 'true';
$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 WebインターフェースまたはZabbixサーバーのログファイルにエラーメッセージがないことを確認して、暗号化を検証します。

tail -f /var/log/zabbix/zabbix_server.log