Univention Bugzilla – Bug 22108
Integration von Heimdal-Patches aus UCS 2.x
Last modified: 2011-12-13 15:49:28 CET
Die Heimdal-Patches aus UCS 2.x müssen geprüft und übernommen werden.
Die folgenden vier Patches wurden übernommen: 22_disable-ftp-and-pop-server.patch 23_disable-telnet.patch 31_univention-mount-homedir.patch 35_univention-username-length.patch Unklar ist derzeit noch, was mit den anderen Patches passieren soll. Das hängt davon ab, wie die Passwort-Richtlinien ausgewertet werden sollen.
(In reply to comment #1) > Unklar ist derzeit noch, was mit den anderen Patches passieren soll. Das hängt > davon ab, wie die Passwort-Richtlinien ausgewertet werden sollen. Verschoben auf MS2.
Die Patches benötigen wir weiterhin, vor allem für nicht Samba 4 Szenarien. Eine Überlegung ist noch, dass wir im kpasswdd die UDM Schnittstelle zum Setzen des Passworts verwenden. Dann müssen wir nicht den gesamten Passwortänderunsgcode ein zweites Mal in C pflegen.
Aktuell kann das Passwort nicht mehr kpasswd geändert werden. Das Problem tritt bei allen Heimdal 1.4er Versionen auf. Als Ausgabe erhält man: # kpasswd daniel daniel@DEADLOCK4.LOCAL's Password: New password for daniel@DEADLOCK4.LOCAL: Verifying - New password for daniel@DEADLOCK4.LOCAL: Auth error : Authentication failed Nach einigem Debug konnte ich feststellen, dass der Call krb5_decrypt_ticket in der Funktion krb5_verify_ap_req2 in der Datei lib/krb5/rd_req.c nicht erfolgreich ist. Ggf. passen die Keys nicht?
Folgendes konnte ich feststellen. Wenn ich in der kdc.conf das File-Backend aktiviere, beispielsweise dbname = /var/lib/heimdal-kdc/heimdal anschließend per kstash --random-key kadmin -l init --realm-max-ticket-life=unlimited --realm-max-renewable-life=unlimited $REALM kadmin -l add me die Kerbeors Umgebung initialisiere und den Benutzer me anlege, dann kann ich das Passwort ändern. Wenn ich das gleiche mit dem LDAP-Backend mache dbname = ldap:<ldap/base> dann kann ich zwar für den Benutzer auch ein Ticket bekommen, aber kpasswd für den Benutzer scheitert. Ein "kadmin -l dump *" sieht für beide Backends identisch aus.
Provides: ftp-server sollte wieder entfernt werden.
(In reply to comment #6) > Provides: ftp-server sollte wieder entfernt werden. Provides ftp-server + pop3-server wurde entfernt und Conflicts ftp-server + pop3-server wurde entfernt und
Der kpasswdd funktioniert soweit. Ein Problem ist noch, dass jetzt unsere password-Lib die Passwörter setzt und auch der Daemon selbst. Dann gibt es die folgende Fehlermeldung: kadm5_s_chpass_principal_cond: Password reuse forbidden
Es ist jetzt so, dass das Kerberos Passwort auch über die univnetion-lib geändert wird. Der kpasswdd lädt die Python Lib. Falls es dort Probleme gibt, beispielsweise dass der Benutzer im UCS LDAP nicht gefunden wurde, dann geht die Passwortänderung normal über Kerberos. Der Hauptvorteil ist, dass der Patch deutlich kleiner geworden ist und das Passwort über den gleichen Weg modifiziert wird.
Das Passwort wird wie folgt an Python übergeben: args = Py_BuildValue("ss", client, pwd_data->data); krb5_data scheint jedoch nicht 0x00-terminiert zu sein: typedef struct _krb5_data { int length; char *data; } krb5_data; darum werden "zufällige" Daten an die Passworte bei der Übergabe angehängt: univention26 → univention269 univention27 → univention27\t\x03
Wurde angepasst.
Folgendes tritt bei der Installation von univention-ftp auf: 0 aktualisiert, 2 neu installiert, 0 zu entfernen und 18 nicht aktualisiert. Es müssen 2.410 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 4.202 kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren [J/n]? y WARNUNG: Die folgenden Pakete können nicht authentifiziert werden! proftpd-basic univention-ftp Authentifizierungswarnung überstimmt. Hole:1 http://192.168.0.10/build2/ ucs_3.0-0/amd64/ proftpd-basic 1.3.3a-6.33.201105191052 [2.408 kB] Hole:2 http://192.168.0.10/build2/ ucs_3.0-0/all/ univention-ftp 5.0.0-3.24.201110051338 [2.678 B] Es wurden 2.410 kB in 2 s geholt (1.032 kB/s) Vorkonfiguration der Pakete ... Vormals abgewähltes Paket proftpd-basic wird gewählt. (Lese Datenbank ... 84953 Dateien und Verzeichnisse sind derzeit installiert.) Entpacken von proftpd-basic (aus .../proftpd-basic_1.3.3a-6.33.201105191052_amd64.deb) ... dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/proftpd-basic_1.3.3a-6.33.201105191052_amd64.deb (--unpack): Versuch, »/usr/share/man/man5/ftpusers.5.gz« zu überschreiben, welches auch in Paket heimdal-servers 1.4.0+git201110101743~lorikeet-3.197.201110101900 ist configured to not write apport reports dpkg-deb: Unterprozess einfügen mit Signal (Datenübergabe unterbrochen (broken pipe)) getötet Vormals abgewähltes Paket univention-ftp wird gewählt. Entpacken von univention-ftp (aus .../univention-ftp_5.0.0-3.24.201110051338_all.deb) ... Trigger für man-db werden verarbeitet ... Fehler traten auf beim Bearbeiten von: /var/cache/apt/archives/proftpd-basic_1.3.3a-6.33.201105191052_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
Die manpage wurde umbenannt.
FAILED - {SASL}... in userPassword überlebt kpasswd nicht OK - Passwort Änderungen via kpasswd OK - Passwort Policies: -> ucr search --brief password/qu password/quality/credit/digits: 2 password/quality/credit/lower: 2 password/quality/credit/other: 2 password/quality/credit/upper: 2 password/quality/forbidden/chars: abc password/quality/required/chars: xyz -> udm policies/pwhistory list DN: cn=default-settings,cn=pwhistory,cn=users,cn=policies,dc=iii20,dc=zzz10 ARG: None length: 3 _view_referencing_objects: None name: default-settings emptyAttributes: None expiryInterval: None fixedAttributes: None requiredObjectClasses: None pwQualityCheck: TRUE prohibitedObjectClasses: None pwLength: 8 -> kpasswd felix felix@III20.ZZZ10's Password: New password for felix@III20.ZZZ10: Verify password - New password for felix@III20.ZZZ10: Soft error : Password does not contain one of required characters: "xyz" -> kpasswd felix felix@III20.ZZZ10's Password: New password for felix@III20.ZZZ10: Verify password - New password for felix@III20.ZZZ10: Soft error : Password contains forbidden characters -> kpasswd felix felix@III20.ZZZ10's Password: New password for felix@III20.ZZZ10: Verify password - New password for felix@III20.ZZZ10: Soft error : is too simple ... mit dem Passwort 12QeWrxDzeiy"! hat es dann geklappt. OK - Passwort Änderungen bei Benutzer mit Umlauten -> kdestroy -> kpasswd möller möller@III20.ZZZ10's Password: New password for möller@III20.ZZZ10: Verify password - New password for möller@III20.ZZZ10: Success : Password changed -> kinit möller möller@III20.ZZZ10's Password: -> klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: möller@III20.ZZZ10 Issued Expires Principal Nov 22 04:24:46 2011 Nov 22 14:24:46 2011 krbtgt/III20.ZZZ10@III20.ZZZ10 OK - Installation (mit proftpd) OK - Patches wurden soweit nötig übernommen OK - Passwort-Änderung mit {K5KEY} in userPassword -> univention-ldapsearch -LLL uid=felix userpassword| ldapsearch-decode64 dn: uid=felix,cn=users,dc=iii20,dc=zzz10 userPassword: {K5KEY} -> kpasswd felix -> univention-ldapsearch -LLL uid=felix userpassword dn: uid=felix,cn=users,dc=iii20,dc=zzz10 userPassword:: e2NyeXB0fSQ2JGhPcFFjUDZtWloyUHlYalUkNFRzTUlk...
(In reply to comment #14) > FAILED - {SASL}... in userPassword überlebt kpasswd nicht Bei mir schon: root@master61:~# ucr set directory/manager/web/modules/users/user/auth/saslpassthrough=keep Create directory/manager/web/modules/users/user/auth/saslpassthrough root@master61:~# univention-ldapsearch -xLLL uid=test0 >test0.ldif root@master61:~# vim test0.ldif root@master61:~# eval $(ucr shell) root@master61:~# ldapmodify -x -D cn=admin,$ldap_base -w $(</etc/ldap.secret) -f test0.ldif modifying entry "uid=test0,ou=benutzer,dc=deadlock6,dc=local" root@master61:~# univention-ldapsearch -xLLL uid=test0 userPassword | grep ^userPassword userPassword:: e1NBU0x9Zm9vYmFy root@master61:~# kpasswd test0 test0@DEADLOCK6.LOCAL's Password: New password for test0@DEADLOCK6.LOCAL: root@master61:~# /etc/init.d/samba4 stop Stopping Samba 4 daemon: samba.. root@master61:~# ucr set kerberos/autostart=yes Setting kerberos/autostart root@master61:~# /etc/init.d/heimdal-kdc restart Starting Heimdal KDC: heimdal-kdc. Starting Heimdal password server: kpasswdd. root@master61:~# kpasswd test0 test0@DEADLOCK6.LOCAL's Password: New password for test0@DEADLOCK6.LOCAL: Verify password - New password for test0@DEADLOCK6.LOCAL: Success : Password changed root@master61:~# univention-ldapsearch -xLLL uid=test0 userPassword | grep ^userPassword userPassword:: e1NBU0x9Zm9vYmFy root@master61:~#
(In reply to comment #15) > (In reply to comment #14) > > FAILED - {SASL}... in userPassword überlebt kpasswd nicht > > Bei mir schon: > Ja, klappt doch -> ucr get directory/manager/web/modules/users/user/auth/saslpassthrough keep -> univention-ldapsearch -LLLL uid=felix userpassword| ldapsearch-decode64 dn: uid=felix,cn=users,dc=iii20,dc=zzz10 userPassword: {SASL}felix@III20.ZZZ10 -> kpasswd felix felix@III20.ZZZ10's Password: New password for felix@III20.ZZZ10: Verify password - New password for felix@III20.ZZZ10: Success : Password changed -> univention-ldapsearch -LLLL uid=felix userpassword| ldapsearch-decode64 dn: uid=felix,cn=users,dc=iii20,dc=zzz10 userPassword: {SASL}felix@III20.ZZZ10 Changelog Eintrag vorhanden
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"