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 finden Sie ein Beispiel für die einfachste Möglichkeit, dies zu tun.

1. Zertifikate und Schlüssel erzeugen.

Erstellen Sie ein Arbeitsverzeichnis:

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

Erstellen Sie ein CA-Zertifikat (passen Sie den Wert MyZabbixCA so an, dass er dem tatsächlichen Common Name entspricht):

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 so an, dass er dem tatsächlichen Common Name entspricht):

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 so an, dass er dem tatsächlichen Common Name entspricht):

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. Korrekte Berechtigungen festlegen.

Für den Zabbix Server (passen Sie Eigentümer/Gruppe entsprechend dem Zabbix-Server-Daemon-Benutzer 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 dann den Server neu:

sudo systemctl restart zabbix-server

4. Zabbix Frontend konfigurieren.

Aktivieren Sie während der Installation der Weboberfläche die Option Encrypt connections from Web interface (und bei Bedarf die Option Verify server certificate issuer and subject) und füllen Sie die Felder TLS CA file, TLS key file, TLS certificate file (sowie bei Bedarf 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 Clientzertifikat entspricht.
TLS certificate file Geben Sie den vollständigen Pfad zur Clientzertifikatsdatei 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 Subjekts an, der mit dem Serverzertifikat abgeglichen werden soll.

Bearbeiten Sie bei bestehenden Installationen 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 im Zabbix Frontend oder in der Zabbix-Server-Protokolldatei keine Fehlermeldungen vorhanden sind:

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