Univention Bugzilla – Bug 22600
Integration Kerberos / Samba 4
Last modified: 2011-12-13 15:50:30 CET
In UCS 3.0 ist es vorgesehen, dass sowohl Systeme mit Samba 4 installiert werden können, allerdings auch Systeme ohne Samba 4. Auf den Systemen ohne Samba 4 soll trotzdem Kerberos laufen und funktionieren. Im Idealfall kann auch ein nicht Samba 4 System KDC sein. Im Samba4 Scope wurde das Paket univention-heimdal angepasst. Dabei wurden die folgenden krb5.conf Einstellungen ergänzt: + dns_lookup_realm = true + dns_lookup_kdc = true + ticket_lifetime = 24h +[domain_realm] + .@%@domainname@%@ = @%@kerberos/realm@%@ + @%@domainname@%@ = @%@kerberos/realm@%@ Zusätzlich wurden die keytab-Listener-Module entfernt. Das hatte den Grund, dass die keytab-Einträge vom Samba 4 System generiert wurden. Allerdings wurden die Pakete auch nur auf Samba 4 Systemen installiert, weshalb die Anpassung in dem Scope in Ordnung war. Für UCS 3 müssen wir das anders lösen.
ldapsearch -Y GSSAPI gegen das S4 LDAP funktioniert, gegen OpenLDAP noch nicht.
Ergänzung zu Comment 1: * Im Samba4UCS Prototyp, der auf alpha14 basierte funktionierte sowohl ldapsearch per GSSAPI als auch "ssh $(hostname -f) -l Administrator". * Aktuell zeigt ktutil auf dem Master keine des-cbc-md5 oder des-cbc-crc keys für ldap/qamaster.domain.local@DOMAIN.LOCAL an, nur aes256, des3 und arcfour. Ggf. kommt der Samba4-KDC damit nicht zurecht solange man nicht provision mit --function-level=2008_R2 verwendet. Im Prototyp waren da auch die des-cbc-md5 und des-cbc-crc Keys. * auf dem Slave ist ldap/qaslave.domain.local@DOMAIN.LOCAL nicht in der keytab. Dieser Service-Principal ist auch nicht im OpenLDAP angelegt. * Im setup-s4.sh Skript erzeugen wir extra per ldbedit jeweils einen servicePrincipalName in lowercase für ldap/qamaster.domain.local@DOMAIN.LOCAL und host/qamaster.domain.local@DOMAIN.LOCAL. Obwohl das Endergebnis in LDB wie folgt aussieht, zeigt "ktutil list" im aktuellen Zustand keine Keys für die HOST/* Service-Prinzipals mehr: ## root@qamaster:~# LDB_MODULES_PATH=/usr/lib/ldb ldbedit -H /var/lib/samba/private/secrets.ldb -b "flatname=$windows_domain,cn=Primary Domains" ## liefert: # editing 1 records # record 1 dn: flatname=DEADLOCK4,cn=Primary Domains msDS-KeyVersionNumber: 1 objectClass: top objectClass: primaryDomain objectClass: kerberosSecret objectSid: S-1-5-21-865891898-2957623822-1532498290 privateKeytab: secrets.keytab realm: DEADLOCK4.LOCAL saltPrincipal: host/ucs3.deadlock4.local@DEADLOCK4.LOCAL samAccountName: UCS3$ secret: =4vS6hUqH secureChannelType: 6 servicePrincipalName: HOST/ucs3 servicePrincipalName: HOST/ucs3.deadlock4.local servicePrincipalName: host/ucs3.deadlock4.local servicePrincipalName: ldap/ucs3.deadlock4.local objectGUID: a2323940-f839-429e-8c33-14c84e87a198 whenCreated: 20110809045308.0Z uSNCreated: 7 name: DEADLOCK4 flatname: DEADLOCK4 whenChanged: 20110809045318.0Z uSNChanged: 9 distinguishedName: flatname=DEADLOCK4,cn=Primary Domains
Siehe auch Bug 22963.
Erklärung zum Verhalten an Comment 1 und Comment 2 ist: Im UCS 3.0-0 MS1 war der von setup-s4.sh angelegte Symlink und das Backup der ucs-Keytab (/etc/krb5.keytab.BACKUP_UCS_INSTALLATION) nach der Installation nicht vorhanden, sondern die Original-UCS /etc/krb5.keytab war aktiv. Vermutlich war sie zum Zeitpunkt des Skripts (noch) nicht da (daher kein Backup) und wurde dann vom keytab.py Listener gelöscht und neu generiert?! Wenn entweder den Symlink wieder herstellt oder die Anpassung von Bug 22963 vornimmt und dann den slapd neu startet, dann geht ldapsearch -Y GSSAPI wieder.
Erste Änderung betrifft Hosts, die Samba4 service bieten: \item By default the \emph{kdc} option is not set any longer explicitely in krb5.conf. If this option is needed, the \ucsUCRV{kerberos/kdc} can be used to specify kdc hosts (\ucsBug{22600}).
Ich bekomme jetzt diese Meldung beim Update: Vormals abgewähltes Paket univention-heimdal-common wird gewählt. Entpacken von univention-heimdal-common (aus .../univention-heimdal-common_5.0.6-2.98.201108311810_all.deb) ... dpkg: Fehler beim Bearbeiten von /var/cache/apt/archives/univention-heimdal-common_5.0.6-2.98.201108311810_all.deb (--unpack): Versuch, »/etc/univention/templates/files/etc/krb5.conf« zu überschreiben, welches auch in Paket univention-heimdal-kdc 5.0.5-1.96.201108301212 ist configured to not write apport reports tar: ./postrm: Zeitstempel 2011-08-31 18:13:21 liegt 292959.210471686 Sekunden in der Zukunft.
[2011/09/19 14:01:38, 1] ../source4/auth/gensec/gensec_gssapi.c:614(gensec_gssapi_update) GSS server Update(krb5)(1) Update failed: Miscellaneous failure (see text): Failed to find MASTER51$@DEADLOCK5.LOCAL(kvno 1) in keytab FILE:/etc/krb5.keytab (aes256-cts-hmac-sha1-96) Die lokale Keytab wird durch das Listener Modul keytab.py auf dem DC Master überschrieben. Entweder der Filter im Listener Modul wird erweitert oder es wird eine UCR Variable abgefragt.
Das keytab Listener-Modul wurde so angepasst, dass der LDAP-Filter nur auf Systeme passt, die nicht den Service 'Samba 4' bereitstellen.
*** Bug 23569 has been marked as a duplicate of this bug. ***
(In reply to comment #8) > Das keytab Listener-Modul wurde so angepasst, dass der LDAP-Filter nur auf > Systeme passt, die nicht den Service 'Samba 4' bereitstellen. Das funktioniert mit der aktuellen DVD noch nicht: [2011/09/20 08:52:18, 1] ../source4/auth/gensec/gensec_gssapi.c:614(gensec_gssapi_update) GSS server Update(krb5)(1) Update failed: Miscellaneous failure (see text): Failed to find MASTER51$@DEADLOCK5.LOCAL(kvno 1) in keytab FILE:/etc/krb5.keytab (arcfour-hmac-md5) [2011/09/20 08:52:18, 1] ../source4/auth/gensec/spnego.c:550(gensec_spnego_parse_negTokenInit) SPNEGO(gssapi_krb5) NEG_TOKEN_INIT failed: NT_STATUS_LOGON_FAILURE root@master51:~# grep filter /usr/lib/univention-directory-listener/system/keytab.py filter='(&(objectClass=krb5Principal)(objectClass=krb5KDCEntry)(krb5KeyVersionNumber=*)(|(krb5PrincipalName=host/%s@%s)(krb5PrincipalName=ldap/%s@%s)(krb5PrincipalName=host/%s.%s@%s)(krb5PrincipalName=ldap/%s.%s@%s)(krb5PrincipalName=host/%s.%s@%s)(krb5PrincipalName=ldap/%s.%s@%s))(!(univentionService=Samba 4)))' % (hostname, realm, hostname, realm, hostname, domainname, realm, hostname, domainname, realm, hostname, listener.baseConfig['ldap/base'].replace('dc=','').replace(',','.'), realm, hostname, listener.baseConfig['ldap/base'].replace('dc=','').replace(',','.'), realm) root@master51:~# dpkg -l univention-heimdal-kdc | grep ^ii ii univention-heimdal-kdc 5.0.8-1.101.201109191221 root@master51:~# ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 ldap/master51.deadlock5.local@DEADLOCK5.LOCAL 1 des3-cbc-sha1 ldap/master51.deadlock5.local@DEADLOCK5.LOCAL 1 arcfour-hmac-md5 ldap/master51.deadlock5.local@DEADLOCK5.LOCAL root@master51:~#
Das keytab Listener-Modul wurde so angepasst, dass es nur läuft, wenn die UCR-Variable samba4/role aktuell nicht dem Wert "DC" hat. Das Paket univention-heimdal-kdc wird im Moment auch weiterhin auf Domaincontrollern installiert, auch wenn univention-samba4 installiert wird. Das ist insbesondere notwendig, damit der Listener keytab-member.py die Keytab für die Memberserver extrahiert und zum download bereitstellt. Diese keytabs werden wie bisher auch aus dem OpenLDAP-Backend extrahiert. kadmin verwendet bisher weiter das OpenLDAP-Backend. Der Versuch, kadmin gegen das Samba4-Backend zu konfigurieren scheiterte bisher daran, dass das ldapi-Interface von Samba4 keine Authentifizierung akzeptiert, kadmin aber SASL-Authentifikation versucht. In diesen Fällen kann samba-tool eine Alternative sein (habe ich aber z.B. zur Extraktion der Keytab-daten bisher noch nicht erfolgreich eingesetzt). ldapsearch -Y GSSAPI gegen OpenLDAP und Kerberos-Authentifikation gegen SSH funktioniert. Changelog ist angepasst.
(In reply to comment #11) > Das keytab Listener-Modul wurde so angepasst, dass es nur läuft, wenn die > UCR-Variable samba4/role aktuell nicht dem Wert "DC" hat. Bei RODC würde die keytab derzeit überschrieben. Das sollte angepasst werden.
Das keytab Listener-Modul wurde so angepasst, dass es nur läuft, wenn die UCR-Variable samba4/role aktuell nicht dem Wert "DC" oder "RODC" hat.
OK
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"