This is a translation of the original English documentation page. Help us make it better.

#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.