2 PostgreSQL-Verschlüsselungskonfiguration

Übersicht

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

Die Verbindung zwischen dem Zabbix Frontend und PostgreSQL kann nicht verschlüsselt werden (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 Remote-Verbindungen über das Netzwerk möglich sind, muss das Lauschen auf der tatsächlichen Netzwerkschnittstelle erlaubt werden.

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

Für die Zugriffskontrolle passen Sie /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
...

Ausschließliche Transportverschlüsselung

Frontend

Um eine reine Transportverschlüsselung für Verbindungen zwischen dem Zabbix-Frontend und der Datenbank zu aktivieren:

  • Aktivieren Sie Database TLS encryption
  • Lassen Sie Verify database certificate deaktiviert

Server

Um für Verbindungen zwischen Server und Datenbank eine reine Transportverschlüsselung zu aktivieren, konfigurieren Sie /etc/zabbix/zabbix_server.conf:

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

Verschlüsselung mit Verifizierung der Zertifizierungsstelle

Frontend

So aktivieren Sie die Verschlüsselung mit Überprüfung der Zertifizierungsstelle für Verbindungen zwischen dem Zabbix Frontend und der Datenbank:

  • 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 dem Zabbix Server und der Datenbank zu aktivieren, konfigurieren Sie /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
...

Verschlüsselung mit vollständiger Verifizierung

Frontend

Um Verschlüsselung mit Zertifikat und Überprüfung der Identität des Datenbank-Hosts für Verbindungen zwischen 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 Identität des Datenbank-Hosts für Verbindungen zwischen Zabbix-Server und der Datenbank zu aktivieren, konfigurieren Sie /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
...