2 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 frontendem Zabbix a PostgreSQL nie może być szyfrowane (parametry w GUI są wyłączone), jeśli wartość pola Host bazy danych 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. Proszę postępować zgodnie z instrukcjami w dokumentacji PostgreSQL dotyczącymi przygotowania certyfikatu z postgresql.conf oraz kontroli dostępu użytkowników przez pg_hba.conf.

Domyślnie gniazdo PostgreSQL jest przypisane do localhost, aby umożliwić zdalne połączenia sieciowe, pozwól na 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'
       ...

Aby dostosować kontrolę dostępu, zmodyfikuj /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
       ...

Tryb required

Frontend

Aby włączyć wyłącznie szyfrowanie warstwy transportowej dla połączeń między frontendem Zabbix a bazą danych:

  • Zaznacz Szyfrowanie bazy danych TLS
  • Pozostaw niezaznaczone Zweryfikuj certyfikat bazy danych

Serwer

Aby włączyć wyłącznie szyfrowanie warstwy transportowej dla połączeń między serwerem a bazą danych, skonfiguruj /etc/zabbix/zabbix_server.conf:

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

Tryb Verify CA

Frontend

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

  • Zaznacz Szyfrowanie bazy danych TLS i Zweryfikuj certyfikat bazy danych
  • Określ ścieżkę dopliku w parametrze Plik TLS CA bazy danych

Alternatywnie, można to ustawić w /etc/zabbix/web/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, skonfiguruj /etc/zabbix/zabbix_server.conf:

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

Tryb Verify full

Frontend

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

  • Zaznacz Szyfrowanie bazy danych TLS i Zweryfikuj certyfikat bazy danych
  • Określ ścieżkę do pliku w parametrze Plik klucza TLS bazy danych
  • Określ ścieżkę do pliku w parametrze Plik TLS CA bazy danych
  • Określ ścieżkę do pliku w parametrze Plik certyfikatu TLS bazy danych
  • Zaznacz Weryfikacja hosta bazy danych

Alternatywnie, można to ustawić w /etc/zabbix/web/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, skonfiguruj /etc/zabbix/zabbix_server.conf:

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