Sichere Verbindung zur Datenbank
Übersicht
Dieser Abschnitt enthält Zabbix-Einrichtungsschritte und Konfigurationsbeispiele für sichere TLS-Verbindungen zwischen:
| Datenbank | Zabbix-Komponenten |
|---|---|
| MySQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
| PostgreSQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
Informationen zum Einrichten der Verbindungsverschlüsselung innerhalb des DBMS finden Sie in der offiziellen Dokumentation des jeweiligen Herstellers:
- MySQL: Replikationsdatenbankserver für Quelle und Replikat.
- MySQL: Datenbankserver für Gruppenreplikation usw.
- PostgreSQL Verschlüsselungsoptionen.
Alle Beispiele basieren auf den GA-Releases von MySQL CE (8.0) und PgSQL (13), die über die offiziellen Repositorys unter CentOS 8 verfügbar sind.
Anforderungen
Folgendes ist für die Einrichtung der Verschlüsselung erforderlich:
- Vom Entwickler unterstütztes Betriebssystem mit OpenSSL >=1.1.X oder einer Alternative.
Es wird empfohlen, Betriebssysteme mit End-of-Life-Status zu vermeiden, insbesondere bei Neuinstallationen
- Datenbank-Engine (RDBMS), installiert und gepflegt aus dem offiziellen Repository des Entwicklers. Betriebssysteme werden oft mit veralteten Versionen von Datenbanksoftware ausgeliefert, für die keine Unterstützung für Verschlüsselung implementiert ist, zum Beispiel auf RHEL-7-basierten Systemen und PostgreSQL 9.2, MariaDB 5.5 ohne Unterstützung für Verschlüsselung.
Terminologie
Durch das Setzen dieser Option wird die Verwendung einer TLS-Verbindung zur Datenbank vom Zabbix Server/Proxy und vom Frontend zur Datenbank erzwungen:
required- Verbindung über TLS als Transportmodus ohne Identitätsprüfungenverify_ca- Verbindung über TLS und Überprüfung des Zertifikatsverify_full- Verbindung über TLS, Überprüfung des Zertifikats und Überprüfung, dass die von DBHost angegebene Datenbankidentität (CN) mit ihrem Zertifikat übereinstimmt
Zabbix-Konfiguration
Frontend zur Datenbank
Eine sichere Verbindung zur Datenbank kann während der Frontend-Installation konfiguriert werden:
- Aktivieren Sie das Kontrollkästchen Database TLS encryption im Schritt Configure DB connection, um die Transportverschlüsselung zu aktivieren.
- Aktivieren Sie das Kontrollkästchen Verify database certificate, das angezeigt wird, wenn das Feld TLS encryption aktiviert ist, um die Verschlüsselung mit Zertifikaten zu aktivieren.
Für MySQL ist das Kontrollkästchen Database TLS encryption deaktiviert, wenn Database host auf localhost gesetzt ist, da eine Verbindung, die eine Socket-Datei (unter Unix) oder Shared Memory (unter Windows) verwendet, nicht verschlüsselt werden kann.
Für PostgreSQL ist das Kontrollkästchen TLS encryption deaktiviert, wenn der Wert des Feldes Database host mit einem Schrägstrich beginnt oder das Feld leer ist.
Die folgenden Parameter werden im Modus der TLS-Verschlüsselung mit Zertifikaten verfügbar (wenn beide Kontrollkästchen aktiviert sind):
| Parameter | Beschreibung |
|---|---|
| Database TLS CA file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Zertifizierungsstellen-(CA)-Datei an. |
| Database TLS key file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Schlüsseldatei an. |
| Database TLS certificate file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Zertifikatsdatei an. |
| Database host verification | Aktivieren Sie dieses Kontrollkästchen, um die Host-Überprüfung zu aktivieren. Für MYSQL deaktiviert, da die PHP-MySQL-Bibliothek das Überspringen des Schritts zur Überprüfung des Peer-Zertifikats nicht zulässt. |
| Database TLS cipher list | Geben Sie eine benutzerdefinierte Liste gültiger Cipher an. Das Format der Cipher-Liste muss dem OpenSSL-Standard entsprechen. Nur für MySQL verfügbar. |
TLS-Parameter müssen auf gültige Dateien verweisen. Wenn sie auf nicht vorhandene oder ungültige Dateien verweisen, führt dies zu einem Autorisierungsfehler.
Wenn Zertifikatsdateien beschreibbar sind, erzeugt das Frontend im Bericht System information eine Warnung, dass "TLS certificate files must be read-only." (wird nur angezeigt, wenn der PHP-Benutzer der Besitzer des Zertifikats ist).
Mit Passwörtern geschützte Zertifikate werden nicht unterstützt.
Anwendungsfälle
Das Zabbix Frontend verwendet eine GUI-Schnittstelle, um mögliche Optionen zu definieren: required, verify_ca, verify_full.
Geben Sie die erforderlichen Optionen im Schritt DB-Verbindungen konfigurieren des Installationsassistenten an.
Diese Optionen werden der Frontend-Konfigurationsdatei (zabbix.conf.php) folgendermaßen zugeordnet:
| GUI-Einstellungen | Konfigurationsdatei | Beschreibung | Ergebnis |
|---|---|---|---|
![]() |
... // Wird für die TLS-Verbindung verwendet. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Datenbank-TLS-Verschlüsselung aktivieren 2. Datenbankzertifikat überprüfen nicht aktivieren |
required-Modus aktivieren. |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Datenbank-TLS-Verschlüsselung und Datenbankzertifikat überprüfen aktivieren 2. Pfad zur CA-Datei für Datenbank-TLS angeben |
verify_ca-Modus aktivieren. |
![]() |
... // Wird für die TLS-Verbindung mit einer strikt definierten Cipher-Liste verwendet. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '<cipher_list>';... Oder: ... // Wird für die TLS-Verbindung ohne definierte Cipher-Liste verwendet – Auswahl durch den MySQL-Server $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '';... |
1. Datenbank-TLS-Verschlüsselung und Datenbankzertifikat überprüfen aktivieren 2. Pfad zur Schlüsseldatei für Datenbank-TLS angeben 3. Pfad zur CA-Datei für Datenbank-TLS angeben 4. Pfad zur Zertifikatsdatei für Datenbank-TLS angeben 5. Cipher-Liste für Datenbank-TLS angeben (optional) |
verify_full-Modus für MySQL aktivieren. |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = ' ';... |
1. Datenbank-TLS-Verschlüsselung und Datenbankzertifikat überprüfen aktivieren 2. Pfad zur Schlüsseldatei für Datenbank-TLS angeben 3. Pfad zur CA-Datei für Datenbank-TLS angeben 4. Pfad zur Zertifikatsdatei für Datenbank-TLS angeben 5. Überprüfung des Datenbank-Hosts aktivieren |
verify_full-Modus für PostgreSQL aktivieren. |
Siehe auch: Beispiele für die Verschlüsselungskonfiguration für MySQL, Beispiele für die Verschlüsselungskonfiguration für PostgreSQL.
Konfiguration des Zabbix Servers/Proxys
Sichere Verbindungen zur Datenbank können mit den entsprechenden Parametern in der Server- und/oder Proxy-Konfigurationsdatei von Zabbix konfiguriert werden.
| Konfiguration | Ergebnis |
|---|---|
| Keine | Verbindung zur Datenbank ohne Verschlüsselung. |
DBTLSConnect=required festlegen |
Server/Proxy stellen eine TLS-Verbindung zur Datenbank her. Eine unverschlüsselte Verbindung ist nicht zulässig. |
1. DBTLSConnect=verify_ca festlegen2. DBTLSCAFile festlegen - die Datei der TLS-Zertifizierungsstelle angeben |
Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats eine TLS-Verbindung zur Datenbank her. |
1. DBTLSConnect=verify_full festlegen2. DBTLSCAFile festlegen - die Datei der TLS-Zertifizierungsstelle angeben |
Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats und der Identität des Datenbank-Hosts eine TLS-Verbindung zur Datenbank her. |
1. DBTLSCAFile festlegen - die Datei der TLS-Zertifizierungsstelle angeben2. DBTLSCertFile festlegen - die Datei mit dem öffentlichen Client-Schlüsselzertifikat angeben3. DBTLSKeyFile festlegen - die Datei mit dem privaten Client-Schlüssel angeben |
Server/Proxy stellen beim Verbindungsaufbau zur Datenbank ein Clientzertifikat bereit. |
DBTLSCipher festlegen - die Liste der Verschlüsselungschiffren, die der Client für Verbindungen mit TLS-Protokollen bis einschließlich TLS 1.2 zulässtoder DBTLSCipher13 - die Liste der Verschlüsselungschiffren, die der Client für Verbindungen mit dem TLS-1.3-Protokoll zulässt |
(MySQL) Die TLS-Verbindung wird mit einer Chiffre aus der bereitgestellten Liste hergestellt. (PostgreSQL) Das Festlegen dieser Option wird als Fehler betrachtet. |



