6 Sichere Verbindung zum Frontend

Überblick

Dieser Abschnitt enthält Schritte zur Einrichtung von Zabbix sowie Konfigurationsbeispiele für sichere TLS-Verbindungen zwischen dem Zabbix Frontend und dem Zabbix Server.

Konfiguration

Standardmäßig ist die Kommunikation zwischen Zabbix Frontend und Zabbix Server unverschlüsselt. Für mehr Sicherheit aktivieren Sie TLS auf beiden Seiten. Nachfolgend ist ein Beispiel für die einfachste Vorgehensweise beschrieben.

1. Zertifikate und Schlüssel generieren.

Erstellen Sie ein Arbeitsverzeichnis:

sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl

Erstellen Sie ein CA-Zertifikat (passen Sie den Wert MyZabbixCA an den tatsächlichen Common Name an):

sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"

Erzeugen Sie einen privaten Schlüssel und ein Zertifikat für den Zabbix Server (passen Sie den Wert zabbix-server.example.com an den tatsächlichen Common Name an):

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

Erzeugen Sie einen privaten Schlüssel und ein Zertifikat für das Zabbix Frontend (passen Sie den Wert zabbix-frontend-node an den tatsächlichen Common Name an):

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. Setzen Sie die richtigen Berechtigungen.

Für den Zabbix Server (passen Sie Eigentümer/Gruppe entsprechend dem Benutzer des Zabbix-Server-Daemons Ihrer Distribution an):

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

Für das Frontend (passen Sie Eigentümer/Gruppe entsprechend dem Webserver-Benutzer Ihrer Distribution an):

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 Server konfigurieren.

Fügen Sie in zabbix_server.conf Folgendes hinzu:

TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# Optional:
# TLSFrontendCertIssuer=CN=MyZabbixCA
# TLSFrontendCertSubject=CN=zabbix-frontend-node

Starten Sie anschließend den Server neu:

sudo systemctl restart zabbix-server

4. Zabbix Frontend konfigurieren.

Aktivieren Sie während der Installation der Weboberfläche die Option Verbindungen von der Weboberfläche verschlüsseln (und bei Bedarf die Option Serverzertifikatsaussteller und -subject überprüfen) und füllen Sie die Felder TLS CA file, TLS key file, TLS certificate file (und bei Bedarf die Felder Server TLS certificate issuer und Server TLS certificate subject) aus:

Parameter Beschreibung
TLS CA file Geben Sie den vollständigen Pfad zur Zertifizierungsstellen-(CA)-Zertifikatsdatei an, die zur Überprüfung des Serverzertifikats verwendet wird.
TLS key file Geben Sie den vollständigen Pfad zur privaten Schlüsseldatei des Clients an, die dem Client-Zertifikat entspricht.
TLS certificate file Geben Sie den vollständigen Pfad zur Client-Zertifikatsdatei an, wenn eine gegenseitige TLS-Authentifizierung erforderlich ist.
Server TLS certificate issuer Geben Sie einen Distinguished Name (DN) des Ausstellers an, der mit dem Serverzertifikat abgeglichen werden soll.
Server TLS certificate subject Geben Sie einen Distinguished Name (DN) des Subjects an, der mit dem Serverzertifikat abgeglichen werden soll.

Bei bestehenden Installationen bearbeiten Sie die folgenden Felder in 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';
// Optional:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = 'CN=MyZabbixCA';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = 'CN=zabbix-server.example.com';

5. Überprüfen Sie die Verschlüsselung, indem Sie sicherstellen, dass weder im Zabbix Frontend noch in der Protokolldatei des Zabbix Servers Fehlermeldungen vorhanden sind:

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