Benutzer-Werkzeuge


Sidebar

ASV-Webseite

Dokumentation

Hilfe


Webseiten-Werkzeuge

Profil


Druck/Export

Drucken/PDF erzeugen

Umstellung des PostgreSQL-Datenbanksystems von MD5- auf SCRAM-SHA-256-Authentifizierung

Vom ASV-Team wird kein Support für den PostgreSQL-Datenbankserver geleistet. Dennoch stellen wir Ihnen im Folgenden eine Vorgehensbeschreibung für die Umstellung von MD5 auf SCRAM-SHA-256 zur Verfügung.

Von ASV-Seite sind keinerlei Konfigurationsänderungen erforderlich.

Für die hier beschriebenen Konfigurationsarbeiten ist es nicht erforderlich, den DSS zu stoppen oder die Arbeit mit ASV zu unterbrechen. Die Schritte können im laufenden Betrieb vollzogen werden.

Begründung der Notwendigkeit und technischer Hintergrund

Das bislang landläufig im Einsatz befindliche MD5-Verfahren, um die Benutzerpasswörter des PostgreSQL-Datenbankservers verschlüsselt zu speichern, weist Schwachstellen auf und muss daher im produktiven Einsatz durch SCRAM-SHA-256 abgelöst werden:

https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Download/IT-GS-Bausteine/Webservices/Baustein-Web-Services-B5_24.pdf?__blob=publicationFile&v=1 (Punkt G 4.35)

SCRAM-SHA-256 wird ab PostgreSQL Version 10.x unterstützt. Unabhängig davon ist der Betrieb ab der ASV-Version 3.23.4 nur noch mit PostgreSQL Version 12 aufwärts möglich.

Alle Schulen und Betreiber, die ASV in der Enterprise-Variante (d. h. mit PostgreSQL als Datenbank-Backend) einsetzen, sind daher aufgefordert, zum nächstmöglichen Zeitpunkt von der MD5-Verschlüsselung auf das neue, sichere SCRAM-SHA-256-Verfahren umzustellen.

Beachten Sie, dass auch in den PostgreSQL-Versionen 11 und 12 standardmäßig noch mit MD5 verschlüsselt wird – d. h. hier besteht in der Regel Handlungsbedarf.

Schritt 1: Prüfen, für welche Datenbank-Benutzer Handlungsbedarf besteht

Liefert das nachfolgende SQL-Statement Treffer, bei denen has_upgraded den Wert FALSE hat, so sind die PostgreSQL-Passwörter der betroffenen Benutzer noch mit dem MD5-Verfahren verschlüsselt.

SELECT rolname, rolpassword ~ '^SCRAM-SHA-256\$' AS has_upgraded
FROM pg_authid
WHERE rolcanlogin;

Schritt 2: Umstellung der Passwortverschlüsselungsmethode

Unter Windows befinden sich die nachfolgend zu bearbeitenden Dateien in der Regel im Verzeichnis C:\Program Files\PostgreSQL\12\data, wobei 12 ggf. durch die verwendete PostgreSQL-Version zu ersetzen ist.

In der Datei postgresql.conf muss die Einstellung, welche Methode zur Passwortverschlüsselung eingesetzt wird, wie folgt eingetragen bzw. abgeändert werden (ein vorhandenes Hashtag # am Zeilenanfang ist zu entfernen!):

password_encryption = scram-sha-256

Damit die Änderung wirksam wird, speichern Sie die Datei und laden Sie die PostgreSQL-Konfiguration neu:

SELECT pg_reload_conf();

Das Absetzen des SQL-Statements

SHOW password_encryption;

muss nun als Verschlüsselungsverfahren scram-sha-256 zurückliefern.

Schritt 3: Aktualisierung aller bislang MD5-verschlüsselten Passwörter

Bei den im Ergebnis des SQL-Statements aus Schritt 1 aufgelisteten, noch nicht auf SCRAM-SHA-256 migrierten Benutzern muss das Passwort noch einmal aktiv neu gesetzt werden, damit es mit SCRAM-SHA-256 verschlüsselt wird. Dieser Vorgang ist nicht automatisierbar, da PostgreSQL das Passwort nicht im Klartext kennt, sondern nur dessen MD5-Hash.

Öffnen Sie dazu eine psql-Konsole. Beispiel für Windows und PostgreSQL-Version 12:

"C:\Program Files\PostgreSQL\12\bin\psql.exe" -h localhost -U postgres

Setzen Sie nun für die betroffenen Benutzer (i. d. R. geht es nur um die beiden Benutzer postgres sowie asv) deren bestehendes Passwort erneut:

\password postgres

bzw.

\password asv

Anschließend muss das jeweilige Passwort sowie dessen Wiederholung eingegeben werden.

Bitte beachten Sie, dass Sie während der Eingabe keine Rückmeldung (in Form von „Sternchen“ o. ä.) erhalten, sondern die Passwort-Eingabe vollständig „blind“ erfolgt. Lassen Sie sich davon nicht irritieren und schließen Sie die Eingabe des vollständigen Passworts (sowie dessen Wiederholung) jeweils durch Drücken der „Enter“-Taste ab.

Schritt 4: Erneute Überprüfung der Benutzer

Die abermalige Ausführung des SQL-Statements aus Schritt 1 sollte nun bei allen Benutzern für has_upgraded den Wert TRUE oder NULL zurückliefern.

Damit ist sichergestellt, dass die Tabelle pg_authid keine MD5-verschlüsselten Passwörter mehr enthält.

Schritt 5: Anpassung der Datei pg_hba.conf, um SCRAM-SHA-256 zu erzwingen

Öffnen Sie die Datei pg_hba.conf. In der Regel bietet sich folgendes Bild (falls der DSS auf einer anderen Maschine läuft als PostgreSQL, können es auch einige Zeilen mehr sein):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Ändern Sie alle Zeilen, die als Verschlüsselungsmethode (Spalte METHOD) bisher md5 ausweisen, auf scram-sha-256 ab:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

Speichern Sie anschließend die Datei und laden Sie die Postgres-Konfiguration noch einmal neu, um die Änderungen anzuziehen:

SELECT pg_reload_conf();

Die Umstellung auf SCRAM-SHA-256 (für bestehende und zukünftig vergebene Passwörter) ist damit abgeschlossen.