Konfiguracja szyfrowania PostgreSQL

Przegląd

Ta sekcja zawiera kilka przykładów konfiguracji szyfrowania dla CentOS 8.2 i PostgreSQL 13.

Połączenie między frontend Zabbix a PostgreSQL nie może być szyfrowane (parametry w GUI są wyłączone), jeśli wartość pola Database host zaczyna się od ukośnika lub pole jest puste.

Wymagania wstępne

Zainstaluj bazę danych PostgreSQL, korzystając z oficjalnego repozytorium.

PostgreSQL nie jest domyślnie skonfigurowany do akceptowania połączeń TLS. Postępuj zgodnie z instrukcjami z dokumentacji PostgreSQL dotyczącymi przygotowania certyfikatów z plikiem postgresql.conf oraz kontroli dostępu użytkowników za pomocą ph_hba.conf.

Domyślnie gniazdo PostgreSQL jest powiązane z localhost, aby dla zdalnych połączeń sieciowych umożliwić nasłuchiwanie na rzeczywistym interfejsie sieciowym.

Ustawienia PostgreSQL dla wszystkich trybów mogą wyglądać następująco:

/var/lib/pgsql/13/data/postgresql.conf:

...
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
ssl_prefer_server_ciphers = on
ssl_min_protocol_version = 'TLSv1.3'
...

Dla kontroli dostępu dostosuj /var/lib/pgsql/13/data/pg_hba.conf:

...
### require
hostssl all all 0.0.0.0/0 md5

### verify CA
hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca

### verify full
hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
...

Szyfrowanie tylko transportu

Frontend

Aby włączyć szyfrowanie tylko transportu dla połączeń między frontendem Zabbixa a bazą danych:

  • Zaznacz Database TLS encryption
  • Pozostaw Verify database certificate niezaznaczone

Serwer

Aby włączyć szyfrowanie wyłącznie transportowe dla połączeń między serwerem a bazą danych, edytuj plik konfiguracyjny serwera:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=required
...

Szyfrowanie z weryfikacją urzędu certyfikacji

Frontend

Aby włączyć szyfrowanie z weryfikacją urzędu certyfikacji dla połączeń między frontend a bazą danych:

  • Zaznacz Szyfrowanie TLS bazy danych oraz Weryfikuj certyfikat bazy danych
  • Określ ścieżkę do pliku CA TLS bazy danych

Alternatywnie można to ustawić w pliku konfiguracyjnym frontend (zabbix.conf.php):

...
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
...

Serwer

Aby włączyć szyfrowanie z weryfikacją certyfikatu dla połączeń między serwerem Zabbix a bazą danych, edytuj plik konfiguracyjny serwera:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_ca
DBTLSCAFile=/etc/ssl/pgsql/root.crt
...

Szyfrowanie z pełną weryfikacją

Frontend

Aby włączyć szyfrowanie za pomocą certyfikatu oraz weryfikację tożsamości hosta bazy danych dla połączeń między frontend a bazą danych:

  • Zaznacz Szyfrowanie TLS bazy danych oraz Weryfikuj certyfikat bazy danych
  • Określ ścieżkę do pliku klucza TLS bazy danych
  • Określ ścieżkę do pliku CA TLS bazy danych
  • Określ ścieżkę do pliku certyfikatu TLS bazy danych
  • Zaznacz Weryfikacja hosta bazy danych

Alternatywnie można to skonfigurować w pliku konfiguracyjnym frontend (zabbix.conf.php):

$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...

Serwer

Aby włączyć szyfrowanie z weryfikacją certyfikatu i tożsamości hosta bazy danych dla połączeń między serwerem Zabbix a bazą danych, edytuj plik konfiguracyjny serwera:

...
DBHost=10.211.55.9
DBName=zabbix
DBUser=zbx_srv
DBPassword=<strong_password>
DBTLSConnect=verify_full
DBTLSCAFile=/etc/ssl/pgsql/root.crt
DBTLSCertFile=/etc/ssl/pgsql/client.crt
DBTLSKeyFile=/etc/ssl/pgsql/client.key
...