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.
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:
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.
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;
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.
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.
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.
Ö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.