Verbindungsparameter von PostgreSQL-Anwendungen richtig konfigurieren

Das URZ stellt einen zentralen PostgreSQL-Datenbankdienst bereit. Wie bei vielen Netzwerkdienste des URZ kommt hier eine Verschlüsselung auf Basis von TLS-Zertifikaten zum Einsatz. Diese Art der Verschlüsselung ist heute Stand der Technik. Beim Zugriff auf den PostgreSQL-Dienst ist jedoch eine Besonderheit zu beachten. Dies liegt im Verhalten der PostgreSQL-Client-Bibliotheken begründet. Wir empfehlen daher allen Administratoren, die Konfiguration Ihrer Datenbankanwendungen zu überprüfen, um höchstmögliche Datensicherheit zu erreichen.

Standardmäßig wird eine verschlüsselte Verbindung zwischen Client und Server aufgebaut. Diese Verbindung gegen Abhören durch Dritte geschützt. Für TLS-geschützte Verbindungen muss der Client allerdings weitere Prüfungen durchführen.

  1. Er muss prüfen, ob das TLS-Zertifikat auf den Hostnamen des Datenbankservers ausgestellt ist.
  2. Er muss prüfen, ob das Zertifikat durch eine Zertifizierungsstelle (CA, Certificate Authority) unterschrieben ist.
  3. Er muss prüfen, ob die Zertifizierungsstelle im Betriebssystem als vertrauenswürdig gekennzeichnet ist.

Diese Schritte werden in der Standardkonfiguration des PostgreSQL-Client nicht durchgeführt. Hierdurch ist es theoretisch möglich, dass ein Angreifer die Datenbankverbindung auf seinen eigenen Server umleitet oder sich als Mittler in die Verbindung zwischenschaltet.

Um die oben genannte Zertifikatsprüfung zu aktivieren, empfehlen wir die Verbindungsparameter der Datenbankanwendung per sog. Connection-String festzulegen. Der Connection-String muss folgenden Aufbau haben.

host=$SERVER dbname=$DATENBANK user=$NUTZER password=$PASSWORT sslmode=verify-full sslrootcert=/etc/pki/tls/certs/ca-bundle.crt

Die Parameter für Server, Datenbankname, Nutzername und Passwort sind entsprechend zu ergänzen. Unter Scientific Linux bzw. RedHat sind die vertrauenswürdigen Zertifizierungsstellen unter /etc/pki/tls/certs/ca-bundle.crt konfiguriert. Auf anderen Linux-Systemen, muss stattdessen /etc/ssl/certs/ca-certificates.crt eingesetzt werden.

Bei dem beschriebenen Verhalten handelt es sich um ein generelles Verhalten aller PostgreSQL-Clients, das nicht auf den Datenbankdienst des URZs beschränkt ist.

Veröffentlicht in Allgemein

Schreibe einen Kommentar

    Archive