5 Drošs savienojums ar datubāzi

Pārskats

Šajā sadaļā ir sniegti Zabbix iestatīšanas soļi un konfigurācijas piemēri drošiem TLS savienojumiem starp:

Datubāze Zabbix komponenti
MySQL Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris
PostgreSQL Zabbix lietotāja saskarne, Zabbix serveris, Zabbix starpniekserveris

Lai iestatītu savienojuma šifrēšanu DBVS ietvaros, skatiet oficiālo piegādātāja dokumentāciju, lai iegūtu sīkāku informāciju:

  • MySQL: avota un replikas replikācijas datubāzu serveri.
  • MySQL: grupu replikācijas u.c. datubāzu serveri.
  • PostgreSQL šifrēšanas iespējas.

Visi piemēri ir balstīti uz MySQL CE (8.0) un PgSQL (13) GA laidieniem, kas pieejami oficiālajās repozitorijās un izmanto CentOS 8.

Prasības

Lai iestatītu šifrēšanu, ir nepieciešams:

  • Izstrādātāja atbalstīta operētājsistēma ar OpenSSL >=1.1.X vai alternatīvu.

Ieteicams izvairīties no operētājsistēmām, kuru dzīves cikls ir beidzies, īpaši jaunu instalāciju gadījumā

  • Datu bāzes dzinis (RDBMS), kas ir instalēts un uzturēts no oficiālās repozitorija, ko nodrošina izstrādātājs. Operētājsistēmas bieži tiek piegādātas ar novecojušām datubāzu programmatūras versijām, kurām šifrēšanas atbalsts nav ieviests, piemēram, uz RHEL 7 balstītas sistēmas un PostgreSQL 9.2, MariaDB 5.5 bez šifrēšanas atbalsta.
Terminoloģija

Iestatot šo opciju, tiek piespiests izmantot TLS savienojumu ar datubāzi no Zabbix servera/starpniekservera un lietotāja saskarnes uz datubāzi:

  • required - izveidot savienojumu, izmantojot TLS kā transporta režīmu bez identitātes pārbaudēm
  • verify_ca - izveidot savienojumu, izmantojot TLS, un pārbaudīt sertifikātu
  • verify_full - izveidot savienojumu, izmantojot TLS, pārbaudīt sertifikātu un pārbaudīt, vai datubāzes identitāte (CN), kas norādīta DBHost, atbilst tās sertifikātam

Zabbix konfigurācija

Lietotāja saskarne uz datubāzi

Drošu savienojumu ar datubāzi var konfigurēt lietotāja saskarnes instalēšanas laikā:

  • Atzīmējiet izvēles rūtiņu Database TLS encryption solī Configure DB connection, lai iespējotu pārraides šifrēšanu.
  • Atzīmējiet izvēles rūtiņu Verify database certificate, kas parādās, kad ir atzīmēts lauks TLS encryption, lai iespējotu šifrēšanu ar sertifikātiem.

MySQL gadījumā izvēles rūtiņa Database TLS encryption ir atspējota, ja Database host ir iestatīts uz localhost, jo savienojumu, kas izmanto ligzdas failu (Unix sistēmās) vai koplietojamo atmiņu (Windows sistēmās), nevar šifrēt.
PostgreSQL gadījumā izvēles rūtiņa TLS encryption ir atspējota, ja lauka Database host vērtība sākas ar slīpsvītru vai lauks ir tukšs.

Tālāk norādītie parametri kļūst pieejami TLS šifrēšanas režīmā ar sertifikātiem (ja ir atzīmētas abas izvēles rūtiņas):

Parameter Description
Database TLS CA file Norādiet pilnu ceļu uz derīgu TLS sertifikācijas iestādes (CA) failu.
Database TLS key file Norādiet pilnu ceļu uz derīgu TLS atslēgas failu.
Database TLS certificate file Norādiet pilnu ceļu uz derīgu TLS sertifikāta failu.
Database host verification Atzīmējiet šo izvēles rūtiņu, lai aktivizētu hosta pārbaudi.
Atspējots MYSQL gadījumā, jo PHP MySQL bibliotēka neļauj izlaist vienādranga sertifikāta validācijas soli.
Database TLS cipher list Norādiet pielāgotu derīgu šifru sarakstu. Šifru saraksta formātam jāatbilst OpenSSL standartam.
Pieejams tikai MySQL.

TLS parametriem jānorāda uz derīgiem failiem. Ja tie norāda uz neeksistējošiem vai nederīgiem failiem, tas izraisīs autorizācijas kļūdu.
Ja sertifikātu faili ir rakstāmi, lietotāja saskarne ģenerē brīdinājumu atskaitē System information, ka "TLS certificate files must be read-only." (tiek parādīts tikai tad, ja PHP lietotājs ir sertifikāta īpašnieks).

Ar parolēm aizsargāti sertifikāti netiek atbalstīti.

Lietošanas gadījumi

Zabbix lietotāja saskarne izmanto GUI saskarni, lai definētu iespējamās opcijas: required, verify_ca, verify_full. Norādiet nepieciešamās opcijas instalēšanas vedņa solī Configure DB connections. Šīs opcijas tiek attēlotas konfigurācijas failā (zabbix.conf.php) šādi:

GUI iestatījumi Konfigurācijas fails Apraksts Rezultāts
...
// Izmanto TLS savienojumam.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...
Atzīmējiet Database TLS encryption
Atstājiet Verify database certificate neatzīmētu
Iespējo required režīmu.
...
$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. Atzīmējiet Database TLS encryption un Verify database certificate
2. Norādiet ceļu uz Database TLS CA file
Iespējo verify_ca režīmu.
...
// Izmanto TLS savienojumam ar stingri noteiktu Cipher sarakstu.
$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>';
...

Vai:

...
// Izmanto TLS savienojumam bez definēta Cipher saraksta - to izvēlas MySQL serveris
$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. Atzīmējiet Database TLS encryption un Verify database certificate
2. Norādiet ceļu uz Database TLS key file
3. Norādiet ceļu uz Database TLS CA file
4. Norādiet ceļu uz Database TLS certificate file
5. Norādiet Database TLS cipher list (neobligāti)
Iespējo verify_full režīmu 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. Atzīmējiet Database TLS encryption un Verify database certificate
2. Norādiet ceļu uz Database TLS key file
3. Norādiet ceļu uz Database TLS CA file
4. Norādiet ceļu uz Database TLS certificate file
5. Atzīmējiet Database host verification
Iespējo verify_full režīmu PostgreSQL.

Skatiet arī: Šifrēšanas konfigurācijas piemēri MySQL, Šifrēšanas konfigurācijas piemēri PostgreSQL.

Zabbix servera/starpniekservera konfigurācija

Drošus savienojumus ar datubāzi var konfigurēt ar attiecīgajiem parametriem Zabbix servera un/vai starpniekservera konfigurācijas failā.

Konfigurācija Rezultāts
Nav Savienojums ar datubāzi bez šifrēšanas.
1. Iestatiet DBTLSConnect=required Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi. Nešifrēts savienojums nav atļauts.
1. Iestatiet DBTLSConnect=verify_ca
2. Iestatiet DBTLSCAFile - norādiet TLS sertifikācijas iestādes failu
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi pēc datubāzes sertifikāta pārbaudes.
1. Iestatiet DBTLSConnect=verify_full
2. Iestatiet DBTLSCAFile - norādiet TLS sertifikācijas iestādes failu
Serveris/starpniekserveris izveido TLS savienojumu ar datubāzi pēc datubāzes sertifikāta un datubāzes hosta identitātes pārbaudes.
1. Iestatiet DBTLSCAFile - norādiet TLS sertifikācijas iestādes failu
2. Iestatiet DBTLSCertFile - norādiet klienta publiskās atslēgas sertifikāta failu
3. Iestatiet DBTLSKeyFile - norādiet klienta privātās atslēgas failu
Serveris/starpniekserveris, veidojot savienojumu ar datubāzi, nodrošina klienta sertifikātu.
1. Iestatiet DBTLSCipher - šifrēšanas šifru saraksts, ko klients atļauj savienojumiem, izmantojot TLS protokolus līdz TLS 1.2

vai DBTLSCipher13 - šifrēšanas šifru saraksts, ko klients atļauj savienojumiem, izmantojot TLS 1.3 protokolu
(MySQL) TLS savienojums tiek izveidots, izmantojot šifru no norādītā saraksta.
(PostgreSQL) Šīs opcijas iestatīšana tiks uzskatīta par kļūdu.