5 Sichere Verbindung zur Datenbank
Übersicht
Dieser Abschnitt enthält Schritte zur Einrichtung von Zabbix sowie Konfigurationsbeispiele für sichere TLS-Verbindungen zwischen:
| Datenbank | Zabbix-Komponenten |
|---|---|
| MySQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
| PostgreSQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
Um die Verbindungsverschlüsselung innerhalb des DBMS einzurichten, finden Sie Einzelheiten in der offiziellen Dokumentation des jeweiligen Anbieters:
- MySQL: Quell- und Replikat-Replikationsdatenbankserver.
- 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 offizielle Repositories für CentOS 8 verfügbar sind.
Voraussetzungen
Für die Einrichtung der Verschlüsselung ist Folgendes erforderlich:
- Ein 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.
- Eine Datenbank-Engine (RDBMS), die aus dem offiziellen Repository des Entwicklers installiert und gepflegt wird. Betriebssysteme werden häufig mit veralteten Versionen von Datenbanksoftware ausgeliefert, für die keine Unterstützung für Verschlüsselung implementiert ist, zum Beispiel RHEL-7-basierte Systeme und PostgreSQL 9.2, MariaDB 5.5 ohne Unterstützung für Verschlüsselung.
Terminologie
Das Setzen dieser Option erzwingt die Verwendung einer TLS-Verbindung zur Datenbank vom Zabbix Server/Proxy und Frontend zur Datenbank:
required- Verbindung über TLS als Transportmodus ohne Identitätsprüfungen herstellenverify_ca- Verbindung über TLS herstellen und das Zertifikat verifizierenverify_full- Verbindung über TLS herstellen, das Zertifikat verifizieren und prüfen, dass die durch DBHost angegebene Datenbankidentität (CN) mit ihrem Zertifikat übereinstimmt
Zabbix-Konfiguration
Frontend zur Datenbank
Eine sichere Verbindung zur Datenbank kann während der Installation des Frontends konfiguriert werden:
- Aktivieren Sie im Schritt Configure DB connection das Kontrollkästchen Database TLS encryption, um die Transportverschlüsselung zu aktivieren.
- Aktivieren Sie das Kontrollkästchen Verify database certificate, das erscheint, 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 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-Datei (CA) 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-Verifizierung zu aktivieren. Für MYSQL deaktiviert, da die PHP-MySQL-Bibliothek das Überspringen der Validierung des Peer-Zertifikats nicht erlaubt. |
| Database TLS cipher list | Geben Sie eine benutzerdefinierte Liste gültiger Chiffren an. Das Format der Chiffrenliste 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 schreibbar sind, erzeugt das Frontend im Bericht
System
information
eine Warnung mit dem Hinweis „TLS certificate files must be read-only.“ (wird nur angezeigt,
wenn der PHP-Benutzer Eigentümer des Zertifikats ist).
Passwortgeschützte Zertifikate werden nicht unterstützt.
Anwendungsfälle
Das Zabbix Frontend verwendet eine GUI-Oberfläche, um mögliche Optionen zu definieren: required,
verify_ca, verify_full. Geben Sie die erforderlichen Optionen im Schritt
Configure DB connections des Installationsassistenten an. Diese Optionen werden
wie folgt der Konfigurationsdatei (zabbix.conf.php) zugeordnet:
| GUI-Einstellungen | Konfigurationsdatei | Beschreibung | Ergebnis |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Database TLS encryption aktivieren Verify database certificate nicht aktivieren |
Modus required 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. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS CA file angeben |
Modus verify_ca aktivieren. |
![]() |
... // Used for TLS connection with strictly defined Cipher list. $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: ... // Used for TLS connection without Cipher list defined - selected by 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. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS key file angeben 3. Pfad zur Database TLS CA file angeben 4. Pfad zur Database TLS certificate file angeben 5. Database TLS cipher list angeben (optional) |
Modus verify_full 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. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS key file angeben 3. Pfad zur Database TLS CA file angeben 4. Pfad zur Database TLS certificate file angeben 5. Database host verification aktivieren |
Modus verify_full für PostgreSQL aktivieren. |
Siehe auch: Beispiele für die Verschlüsselungskonfiguration für MySQL, Beispiele für die Verschlüsselungskonfiguration für PostgreSQL.
Zabbix Server/Proxy-Konfiguration
Sichere Verbindungen zur Datenbank können mit den entsprechenden Parametern in der Zabbix-server- und/oder proxy-Konfigurationsdatei eingerichtet werden.
| Konfiguration | Ergebnis |
|---|---|
| Keine | Verbindung zur Datenbank ohne Verschlüsselung. |
1. DBTLSConnect=required setzen |
Server/Proxy stellen eine TLS-Verbindung zur Datenbank her. Eine unverschlüsselte Verbindung ist nicht zulässig. |
1. DBTLSConnect=verify_ca setzen2. DBTLSCAFile setzen - 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 setzen2. DBTLSCAFile setzen - die Datei der TLS-Zertifizierungsstelle angeben |
Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats und der Identität des Datenbank-Host eine TLS-Verbindung zur Datenbank her. |
1. DBTLSCAFile setzen - die Datei der TLS-Zertifizierungsstelle angeben2. DBTLSCertFile setzen - die Datei des öffentlichen Client-Schlüsselzertifikats angeben3. DBTLSKeyFile setzen - die Datei des privaten Client-Schlüssels angeben |
Server/Proxy stellen beim Verbinden mit der Datenbank ein Client-Zertifikat bereit. |
1. DBTLSCipher setzen - die Liste der Verschlüsselungsverfahren, die der Client für Verbindungen mit TLS-Protokollen bis TLS 1.2 zulässtoder DBTLSCipher13 - die Liste der Verschlüsselungsverfahren, die der Client für Verbindungen mit dem TLS-1.3-Protokoll zulässt |
(MySQL) Die TLS-Verbindung wird mit einem Verschlüsselungsverfahren aus der angegebenen Liste hergestellt. (PostgreSQL) Das Setzen dieser Option wird als Fehler betrachtet. |



