Univention Corporate Server (UCS) » 3rd Party Produkte

ID #1095

Einrichtung von Fremdsystemen auf Basis von Debian und Ubuntu zur Anbindung an LDAP und Kerberos

Produktlogo UCS Version 2.x

 

Problem:

Sowohl Debian als auch Ubuntu sind ohne Modifikationen nicht in der Lage sich an UCS anzumelden um dessen Benutzerverwaltung zu verwenden. Ebenfalls ist standardmäßig keine Kerberos-Authentifizierung aktiviert.

Lösung:

Über eine Konfiguration des Name-Service-Switches können diese Systeme an die UCS Benutzerverwaltung angebunden werden.

Getestet wurde dieses Vorgehen erfolgreich mit:

  • Ubuntu Jaunty Jackalope (9.04)
  • Ubuntu Hardy Heron (8.04)
  • Ubuntu Gutsy Gibbon (7.10)
  • Ubuntu Feisty Fawn (7.04)
  • Ubuntu Dapper Drake (6.06)


Ebenfalls wurden folgende Versionen von Debian getestet:

  • Debian Lenny (5.0)
  • Debian Etch (4.0)


Die in diesem Dokument verwendete Beispieldomain ist mit den folgenden Einstellungen konfiguriert:

  • Domain:        univention.test
  • baseDN:        dc=univention,dc=test
  • Kerberos:      cn=kerberos,dc=univention,dc=test

 

Installation:

 

Zur Authentifizierung gegenüber LDAP werden folgende Pakete benötigt:

  • libnss-ldap (universe)
  • libpam-ldap (universe)
  • nscd (universe)
  • portmap


Anmerkung: In älteren Ubuntu-Versionen wurden andere Paketnamen verwendet:

  • libnss-ldap -> nss-ldap
  • libpam-ldap -> pam-ldap


Zu installieren sind die Pakete wie folgt:
sudo apt-get install libnss-ldap libpam-ldap nscd portmap

Während der Installation werden diverse LDAP-Einstellungen abgefragt. Diese können mit leerem Inhalt bestätigt werden, da im Anschluss an die Installation die Konfiguration per Hand erfolgt und die automatisch eingegeben Werte teilweise falsch eingerichtet werden.

Konfiguration:

Um eine Authentifizierung gegenüber LDAP zu ermöglichen sind Anpassungen an den folgenden Dateien notwendig:

  • /etc/nssswitch.conf
  • /etc/ldap.conf (in älteren Ubuntu-Versionen /etc/ldap/ldap.conf)
  • /etc/nsslib-ldap.conf (betrifft nur ältere Ubuntu-Versionen)
  • /etc/pam-ldap.conf (betrifft nur ältere Ubuntu-Versionen)
  • /etc/pam.d/common-auth
  • /etc/pam.d/common-account
  • /etc/pam.d/common-password
  • /etc/pam.d/common-session


/etc/nsswitch.conf
Die nsswitch.conf stellt die System-Datenbank dar und legt fest, welche Orte/Dienste für die Auflösung von Benutzerinformationen verwendet werden.
Die Standardkonfiguration sieht folgendermaßen aus:

passwd:         compat
group:           compat
shadow:         compat

hosts:            files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:        db files
ethers:          db files
rpc:               db files

netgroup:       nis


und wird wie folgt geändert:

passwd:         files ldap
group:           files ldap
shadow:         files ldap

hosts:            files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:       db files
services:        db files
ethers:          db files
rpc:               db files

netgroup:       nis


/etc/ldap.conf (Konfiguration des LDAP-Zugriffs)
Damit die Benutzerinformationen aus dem entfernten LDAP-Server bezogen werden können, muss dem Client mitgeteilt werden wo diese Informationen zu beziehen sind. Es wird sowohl der Name des LDAP-Servers als auch der Ort der Informationen benötigt. Daraus ergibt sich folgender Inhalt für die ldap.conf:

host qamaster.univention.test
Gibt die Adresse des LDAP-Servers an

base dc=univention,dc=test
Entspricht dem Startpunkt der Suche. Es ist zu berücksichtigen, dass sowohl Gruppeninformationen als auch Benutzerinformationen gesucht werden. Somit würde ein cn=users,dc=univention,dc=test zwar die Benutzer finden allerdings nicht entsprechenden Gruppen. Ermittelt lässt sich base durch das Ausführen des folgenden Befehls auf dem UCS-System:
univention-config-registry get ldap/base

ldap_version 3
UCS verwendet Version 3

pam_password md5
Art des Passwortaufbaus

TLS_CACERT /etc/ssl/CAcert.pem
Die verschlüsselte Datenübertragung erfordert ein gültiges Zertifikat. Das Zertifikat liegt auf dem UCS Master und kann wie folgt auf das Fremdsystem kopiert werden:
scp root@<ucs-master>:/etc/univention/ssl/ucsCA/CAcert.pem /etc/ssl/

Dadurch ergibt sich folgender Inhalt der /etc/ldap.conf:

host qamaster.univention.test
base dc=univention,dc=test
ldap_version 3
pam_password md5
TLS_CACERT /etc/ssl/CAcert.pem


Sollte eine ältere Version von Ubuntu verwendet werden, so befindet sich diese Datei unter /etc/ldap/ldap.conf. Weiterhin ist zu berücksichtigen, dass bei älteren Versionen zusätzlich die Dateien /etc/nss-ldap.conf und /etc/pam-ldap.conf mit dem gleichen Inhalt versehen werden müssen.

Test der LDAP-Abfrage

Zur Überprüfung ob die Änderungen an der /etc/nsswitch.conf und /etc/ldap.conf korrekt waren, lassen sich durch die Befehle

  • getent passwd
  • getent group
  • getent shadow


die Benutzerinformationen des Clients und LDAP-Servers abfragen.

Einrichtung der LDAP-Authentifizierung

Nachdem die Anbindung an den LDAP-Server erfolgreich durchgeführt worden ist, werden anschließend die PAM-Module konfiguriert.
Bei dieser Methode versucht sich der Client beim Passwort Check gegen den LDAP Server anzumelden. Bei der zweiten Möglichkeit werden die Passwort Hashes vom LDAP Server zum Client mit Hilfe von NSS exportiert.
Durch „Pluggable Authentication Modules (PAM)“ ist die Authentifizierung für Benutzer, aber auch Maschinen und einzelnen Diensten möglich. Zur Authentifizierung gegen LDAP oder die lokalen Benutzer ist eine Modifikation der folgenden Dateien unter /etc/pam.d/ notwendig.

common-account
account sufficient pam_ldap.so
account required pam_unix.so use_first_pass


common-auth
auth sufficient pam_ldap.so
auth required pam_unix.so use_first_pass nullok_secure


common-password
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5


common-session
session sufficient pam_ldap.so
session required pam_unix.so
session optional pam_foreground.so


Nach der erfolreichen Modifikation der o.g. Dateien, müssen die Dienste nscd, portmap und libnss-ldap neu gestartet werden:

  • sudo /etc/init.d/nscd restart
  • sudo /etc/init.d/portmap restart
  • sudo /etc/init.d/libnss-ldap restart


Ab sofort kann der Login sowohl durch die Angabe eines lokalen als auch eines LDAP-Benutzers erfolgen.

Automatische Ticketvergabe und Passwortänderung durch Kerberos

UCS verwendet die Kerberos-Implementierung Heimdal. Es sollte daher auf den Fremdsystemen auch die Heimdal- und nicht die MIT-Implementierung verwendet werden, da es ansonsten zu Problemen bei der Passwortänderung kommen kann.

Installation

Folgende Pakete werden für die Nutzung von Kerberos benötigt:

  • heimdal-clients
  • libpam-krb5


welche wie folgt zu installieren sind:
sudo apt-get install heimdal-clients libpam-krb5

WICHTIG: Im auftauchenden Assistenten ist die automatische Anpassung der Konfiguration zu deaktivieren. Nachdem die o.g. Pakete installiert worden sind, wird die Authentifikation in der Datei /etc/pam.d/common-auth bekannt gemacht. Dies geschieht durch das Hinzufügen folgender Zeile:
auth sufficient pam_krb5.so forwardable ccache =/tmp/krb5_%u

so dass sich zusammen mit den vorherigen Änderungen (Siehe LDAP-Authentifizierung) folgender Inhalt ergibt:
auth sufficient pam_krb5.so forwardable ccache =/tmp/krb5_%u
auth sufficient pam_ldap.so
auth required pam_unix.so use_first_pass nullok_secure


Weiterhin ist die neu hinzugekommene Datei /etc/krb5.conf mit folgenden Angaben zu füllen (bisherige Einträge können gelöscht werden):

[libdefaults]
default_realm = UNIVENTION.TEST

default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md4 des-cbc-md5 des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha1-96
kdc_timesync = 1
forwardable = true
proxiable = true
#       debug = true

[realms]
UNIVENTION.TEST = {
acl_file = /var/lib/heimdal-kdc/kadmind.acl
kdc = qamaster.univention.test
admin_server = qamaster.univention.test
}

[kdc]
hdb-ldap-create-base = cn=kerberos,dc=univention,dc=test

database = {
acl_file = /var/lib/heimdal-kdc/kadmind.acl
dbname = ldap:dc=univention,dc=test

log_file = /var/log/heimdal-database.log
mkey_file = /var/heimdal/m-key
}


Nach diesen Änderungen bekommt jeder Benutzer bei der Anmeldung ein Kerberos-Ticket, welches mit klist abgefragt werden kann. Sollte kein Ticket vergeben worden sein, kann ein Ticket auch manuell mit kinit bezogen werden. Der Grund für die Nichtvergabe von Tickets ist in der Regel auf eine stark abweichende Uhrzeit zurück zu führen. Um die Uhrzeit vom qamaster zu beziehen, sollte folgender Befehl verwendet werden:
ntpdate qamaster.univention.test

Nach erfolgreicher Zuteilung eines Tickets, kann sich der Benutzer ohne weitere Passwortangabe innerhalb der Domain an die Kerberos-Dienste anmelden. Darunter fällt z.B. ssh.

Passwortänderung

Die Änderung des Passworts erfolgt durch den Befehl kpasswd. Eine Nutzung von passwd ist nicht mehr möglich. Bei Bedarf kann der Befehl passwd auf den Befehl kpasswd gemapped werden. Eine Inkonsistenz der Kennwörter durch die Nutzung von passwd und kpasswd ist nicht möglich, da durch die in diesem Dokument aufgezeigte Vorgehensweise, die Nutzung von passwd unterbunden wird, so dass per passwd keine Passwörter am LDAP-Server mehr geändert werden können.

Tags: Ubuntu Debian nsslib pam Kerberos kpasswd LDAP libnss

Verwandte Artikel:

Letzte Änderung der FAQ: 2012-01-30 11:06
Autor: Michael Basse
Revision: 1.2

Digg it! Share on Facebook FAQ ausdrucken FAQ weiterempfehlen Als PDF-Datei anzeigen
Übersetzungsvorschlag für Übersetzungsvorschlag für
Bewertung der Nützlichkeit dieser FAQ:

Durchschnittliche Bewertung: 4.8 (10 Abstimmungen)

vollkommen überflüssig 1 2 3 4 5 sehr wertvoll

Kommentieren nicht möglich