Bug 22600 - Integration Kerberos / Samba 4
Integration Kerberos / Samba 4
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Kerberos
UCS 3.0
Other Linux
: P5 enhancement (vote)
: UCS 3.0 - MS2
Assigned To: Arvid Requate
Stefan Gohmann
:
: 23569 (view as bug list)
Depends on:
Blocks: 22963
  Show dependency treegraph
 
Reported: 2011-05-25 06:38 CEST by Stefan Gohmann
Modified: 2011-12-13 15:50 CET (History)
0 users

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2011-05-25 06:38:04 CEST
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.
Comment 1 Stefan Gohmann univentionstaff 2011-08-09 16:10:31 CEST
ldapsearch -Y GSSAPI gegen das S4 LDAP funktioniert, gegen OpenLDAP noch nicht.
Comment 2 Arvid Requate univentionstaff 2011-08-09 19:06:21 CEST
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
Comment 3 Arvid Requate univentionstaff 2011-08-09 19:11:41 CEST
Siehe auch Bug 22963.
Comment 4 Arvid Requate univentionstaff 2011-08-11 15:03:46 CEST
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.
Comment 5 Arvid Requate univentionstaff 2011-08-29 10:57:51 CEST
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}).
Comment 6 Stefan Gohmann univentionstaff 2011-09-01 06:37:27 CEST
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.
Comment 7 Stefan Gohmann univentionstaff 2011-09-19 12:11:43 CEST
[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.
Comment 8 Arvid Requate univentionstaff 2011-09-19 18:48:51 CEST
Das keytab Listener-Modul  wurde so angepasst, dass der LDAP-Filter nur auf Systeme passt, die nicht den Service 'Samba 4' bereitstellen.
Comment 9 Stefan Gohmann univentionstaff 2011-09-20 06:57:42 CEST
*** Bug 23569 has been marked as a duplicate of this bug. ***
Comment 10 Stefan Gohmann univentionstaff 2011-09-20 07:00:32 CEST
(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:~#
Comment 11 Arvid Requate univentionstaff 2011-09-21 16:41:10 CEST
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.
Comment 12 Stefan Gohmann univentionstaff 2011-10-04 07:48:03 CEST
(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.
Comment 13 Arvid Requate univentionstaff 2011-10-04 10:32:22 CEST
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.
Comment 14 Stefan Gohmann univentionstaff 2011-10-04 11:48:39 CEST
OK
Comment 15 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:50:30 CET
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"