PostgreSQL-Verschlüsselungskonfiguration

Übersicht

Dieser Abschnitt enthält mehrere Beispiele für die Verschlüsselungskonfiguration für CentOS 8.2 und PostgreSQL 13.

Die Verbindung zwischen dem Zabbix-Frontend und PostgreSQL kann nicht verschlüsselt werden (die Parameter in der GUI sind deaktiviert), wenn der Wert des Feldes Database host mit einem Schrägstrich beginnt oder das Feld leer ist.

Voraussetzungen

Installieren Sie die PostgreSQL-Datenbank über das offizielle Repository.

PostgreSQL ist standardmäßig nicht so konfiguriert, dass TLS-Verbindungen akzeptiert werden. Bitte folgen Sie den Anweisungen in der PostgreSQL-Dokumentation zur Zertifikatsvorbereitung mit postgresql.conf sowie zur Benutzerzugriffskontrolle über ph_hba.conf.

Standardmäßig ist der PostgreSQL-Socket an localhost gebunden, damit für Netzwerk-Remoteverbindungen das Lauschen auf der tatsächlichen Netzwerkschnittstelle erlaubt ist.

Die PostgreSQL-Einstellungen für alle Modi können wie folgt aussehen:

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

Passen Sie für die Zugriffskontrolle /var/lib/pgsql/13/data/pg_hba.conf an:

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

Nur-Transport-Verschlüsselung

Frontend

Um nur die Transportverschlüsselung für Verbindungen zwischen dem Zabbix Frontend und der Datenbank zu aktivieren:

  • Database TLS encryption aktivieren
  • Verify database certificate deaktiviert lassen

Server

Um eine Verschlüsselung nur für den Transport für Verbindungen zwischen dem Server und der Datenbank zu aktivieren, bearbeiten Sie die zabbix_server.conf Konfigurationsdatei:

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

Verschlüsselung mit Überprüfung der Zertifizierungsstelle

Frontend

Um die Verschlüsselung mit Zertifizierungsstellenprüfung für Verbindungen zwischen dem Zabbix Frontend und der Datenbank zu aktivieren:

  • Aktivieren Sie Database TLS encryption und Verify database certificate
  • Geben Sie den Pfad zur Database TLS CA file an

Alternativ kann dies in /etc/zabbix/web/zabbix.conf.php festgelegt werden:

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

Server

Um die Verschlüsselung mit Zertifikatsprüfung für Verbindungen zwischen Zabbix Server und der Datenbank zu aktivieren, bearbeiten Sie die zabbix_server.conf Konfigurationsdatei:

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

Verschlüsselung mit vollständiger Verifizierung

Frontend

Um die Verschlüsselung mit Zertifikat und die Überprüfung der Datenbank-Host-Identität für Verbindungen zwischen dem Zabbix Frontend und der Datenbank zu aktivieren:

  • Aktivieren Sie Database TLS encryption und Verify database certificate
  • Geben Sie den Pfad zur Database TLS key file an
  • Geben Sie den Pfad zur Database TLS CA file an
  • Geben Sie den Pfad zur Database TLS certificate file an
  • Aktivieren Sie Database host verification

Alternativ kann dies in /etc/zabbix/web/zabbix.conf.php festgelegt werden:

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

Server

Um die Verschlüsselung mit Zertifikat und die Überprüfung der Datenbank-Host-Identität für Verbindungen zwischen dem Zabbix Server und der Datenbank zu aktivieren, bearbeiten Sie die zabbix_server.conf Konfigurationsdatei:

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