4 Beveiligde verbinding met de database
Overzicht
Dit gedeelte biedt Zabbix-instellingen en configuratievoorbeelden voor beveiligde TLS-verbindingen tussen:
| Database | Zabbix-componenten |
|---|---|
| MySQL | Zabbix-frontend, Zabbix-server, Zabbix-proxy |
| PostgreSQL | Zabbix-frontend, Zabbix-server, Zabbix-proxy |
Om verbindingsversleuteling binnen het DBMS in te stellen, raadpleegt u de officiële documentatie van de leverancier voor details:
- MySQL: bron- en replica-replicatie databaseservers.
- MySQL: groepsreplicatie, etc. databaseservers.
- PostgreSQL versleutelingsopties.
Alle voorbeelden zijn gebaseerd op de GA-releases van MySQL CE (8.0) en PgSQL (13) die beschikbaar zijn via officiële repositories met behulp van AlmaLinux 8.
Vereisten
Het volgende is vereist om encryptie in te stellen:
- Door ontwikkelaars ondersteund besturingssysteem met OpenSSL >=1.1.X of alternatief.
Het wordt aanbevolen om OS in de end-of-life-status te vermijden, vooral bij nieuwe installaties
- Database-engine (RDBMS) geïnstalleerd en onderhouden door de officiële opslagplaats beschikbaar gesteld door de ontwikkelaar. Besturingssystemen worden vaak verzonden met verouderde databasesoftwareversies waarvoor versleuteling ondersteuning is niet geïmplementeerd, bijvoorbeeld op RHEL 7 gebaseerde systemen en PostgreSQL 9.2, MariaDB 5.5 zonder coderingsondersteuning.
Terminologie
Door deze optie in te stellen wordt afgedwongen om TLS-verbinding met database te gebruiken van Zabbix-server/proxy en frontend naar database:
- vereist - verbinding maken met TLS als transportmodus zonder identiteit cheques;
- verifieer_ca - maak verbinding via TLS en verifieer het certificaat;
- verifieer_full - maak verbinding via TLS, verifieer certificaat en verifieer dat database-identiteit (CN) gespecificeerd door DBHost komt overeen met zijn certificaat;
Zabbix-configuratie
Frontend naar de database
Een beveiligde verbinding met de database kan worden geconfigureerd tijdens de frontend installatie:
- Schakel het selectievakje Database TLS-codering in bij DB configureren verbinding stap om transportversleuteling in te schakelen.
- Schakel het selectievakje Verifieer databasecertificaat in dat verschijnt wanneer TLS-codering veld is aangevinkt om codering in te schakelen met certificaten.
Voor MySQL is het selectievakje Database TLS-codering:
uitgeschakeld, als Databasehost is ingesteld op localhost, omdat verbinding
die een socketbestand (op Unix) of gedeeld geheugen (op Windows) gebruikt, kan niet
versleuteld zijn.
Voor PostgreSQL is het selectievakje TLS-codering uitgeschakeld als de waarde
van het veld Databasehost begint met een schuine streep of het veld is leeg.
De volgende parameters komen beschikbaar in de TLS-codering in certificatenmodus (als beide selectievakjes zijn gemarkeerd):
| Parameter | Beschrijving |
|---|---|
| Database TLS CA-bestand | Geef het volledige pad op naar een geldig TLS-certificaatautoriteit (CA)-bestand. |
| Database TLS-sleutelbestand | Geef het volledige pad op naar een geldig TLS-sleutelbestand. |
| Database TLS-certificaatbestand | Geef het volledige pad op naar een geldig TLS-certificaatbestand. |
| Databasehostverificatie | Vink dit selectievakje aan om hostverificatie te activeren. Uitgeschakeld voor MYSQL, omdat de PHP MySQL-bibliotheek het niet toestaat om de peercertificaatvalidatiestap over te slaan. |
| Database TLS-coderingslijst | Geef een aangepaste lijst met geldige cijfers op. Het formaat van de cijferlijst moet voldoen aan de OpenSSL-standaard. Alleen beschikbaar voor MySQL. |
TLS-parameters moeten verwijzen naar geldige bestanden. Indien zij
verwijzen naar niet-bestaande of ongeldige bestanden, zal dit leiden tot de
autorisatiefout.
Als certificaatbestanden schrijfbaar zijn, genereert de frontend een waarschuwing in
het systeem
informatie](/manual/web_interface/frontend_sections/reports/status_of_zabbix)
melden dat "TLS-certificaatbestanden alleen-lezen moeten zijn." (alleen weergegeven)
als de PHP-gebruiker de eigenaar is van het certificaat).
Met wachtwoorden beveiligde certificaten worden niet ondersteund.
Gebruiksgevallen
Zabbix frontend gebruikt GUI-interface om mogelijke opties te definiëren: vereist, verifiëren_ca, verifiëren_volledig. Specificeer de vereiste opties in de installatie wizard stap DB-verbindingen configureren. Deze opties zijn toegewezen aan de configuratiebestand (zabbix.conf.php) op de volgende manier:
| GUI instellingen | Configuratiebestand | Beschrijving | Resultaat |
|---|---|---|---|
![]() |
... // Gebruikt voor TLS-verbinding. $DB ['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $ DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = '';< br>... |
Controleer Database TLS-codering Laat Verifieer databasecertificaat niet aangevinkt |
Schakel 'vereist' modus in. |
![]() |
... $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. Controleer Database TLS-codering en Verifieer databasecertificaat 2. Geef het pad op naar Database TLS CA-bestand |
Schakel 'verify_ca'-modus in. |
![]() |
... // Gebruikt voor TLS-verbinding met strikt gedefinieerde coderingslijst. $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>'; ... Of: ... // Gebruikt voor TLS-verbinding zonder coderingslijst gedefinieerd - geselecteerd door 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. Controleer Database TLS-codering en Verifieer databasecertificaat 2. Geef het pad op naar Database TLS-sleutelbestand 3. Geef het pad op naar Database TLS CA-bestand 4. Geef het pad op naar Database TLS-certificaatbestand 6. Geef TLS-coderingslijst op (optioneel) |
Schakel 'verify_full'-modus in voor MySQL. |
![]() |
... $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. Controleer Database TLS-codering en Verifieer databasecertificaat 2. Geef het pad op naar Database TLS-sleutelbestand 3. Geef het pad op naar Database TLS CA-bestand 4. Geef het pad op naar Database TLS-certificaatbestand 6. Controleer Databasehostverificatie |
Schakel 'verify_full'-modus in voor PostgreSQL. |
Zie ook: Versleutelingsconfiguratievoorbeelden voor MySQL, Encryptie configuratievoorbeelden voor PostgreSQL.
Zabbix server/proxy configuratie
Beveiligde verbindingen met de database kunnen worden geconfigureerd met de respectievelijke parameters in de Zabbix server en/of proxy configuratiebestand.
| Configuratie | Resultaat |
|---|---|
| Geen | Verbinding met de database zonder encryptie. |
| 1. Set DBTLSConnect=required | Server/proxy maak een TLS-verbinding met de database. Een niet-versleutelde verbinding is niet toegestaan. |
| 1. Stel DBTLSConnect=verify_ca 2 in. Set DBTLSCAFile - specificeer het TLS-certificaatautoriteitbestand |
Server/proxy maak een TLS-verbinding met de database na verificatie van het databasecertificaat. |
| 1. Stel DBTLSConnect=verify_full 2 in. Stel DBTLSCAFile in - geef het TLS-certificaatautoriteitbestand op |
Server/proxy maakt een TLS-verbinding met de database na verificatie van het databasecertificaat en de identiteit van de databasehost. |
| 1. Stel DBTLSCAFile in - specificeer het TLS-certificaatautoriteitbestand 2. Stel DBTLSCertFile in - geef het certificaatbestand met de openbare sleutel van de client op 3. Stel DBTLSKeyFile in - specificeer het bestand met de persoonlijke sleutel van de client |
Server/proxy levert een clientcertificaat terwijl u verbinding maakt met de database. |
| 1. Stel DBTLSCipher in - de lijst met coderingscoderingen die de client toestaat voor verbindingen met behulp van TLS-protocollen tot TLS 1.2 of DBTLSCipher13 - de lijst met coderingscoderingen die de client toestaat voor verbindingen met behulp van het TLS 1.3-protocol |
(MySQL) TLS verbinding wordt gemaakt met behulp van een cijfer uit de opgegeven lijst. (PostgreSQL) Het instellen van deze optie wordt als een fout beschouwd. |



