Tutorials - Userverwaltung mit LDAP und Kerberos

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk

Userverwaltung mit LDAP und Kerberos

Diese Seite wurde 20189 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: zentrale userverwaltung ldap kerberos howto tutorial

Inhaltsverzeichnis



Vorwort Top


Dieser Artikel bezieht sich inhaltlich auf Kerberos-Grundinstallation.

Diesmal geht es um Useranmeldung für den Enduser an seinem Desktop. Die Daten (Shell, Home-Verzeichnis, UID und GID, ..) dazu bezieht der Client von einem zentralen LDAP-Baum, die Authorisierung übernimmt Kerberos. Das Ticket, welches der Client danach erhält, kann dieser dann wieder zur Anmeldung an Mail-, Web- und Fileserver weiterreichen.

Wie dies bei NFS4 umgesetzt wird, erklärt das nächste Tutorial.

LDAP-Server-Installation Top


LDAP-Server-Pakete finden sich bei jeder guten Distribution. Deshalb widmen wir uns gleich der Konfiguration des slapd.

/etc/openldap/slapd.conf:


include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

modulepath      /usr/lib/openldap/openldap
moduleload      back_hdb.so

password-hash   {md5}

access to *
        by self write
        by users read
        by anonymous auth

database        hdb
suffix          "dc=beispiel,dc=local"
checkpoint      32      30 # <kbyte> <min>
rootdn          "cn=Manager,dc=beispiel,dc=local"
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory       /var/lib/openldap-data
# Indices to maintain
index   objectClass     eq



rootdn entspricht dabei dem root-User
rootpw dem Passwort und
suffix der Basis des Baumes

Um das root-Passwort nicht im Klartext ablegen zu müssen, können wir mit slappasswd einen Hash davon erstellen.

Code:


# slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==



Der Eintrag sieht danach so aus:

/etc/openldap/slapd.conf:


rootpw          {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==



Jetzt können die den LDAP-Server mit /etc/init.d/slapd start starten.

Nun müssen wir unser erstes Element im Baum anlegen. Dazu erstellen wir eine neue Datei mit den Namen init.ldif.

init.ldif:


dn: dc=beispiel,dc=local
objectClass: dcObject
objectClass: organization
dc: beispiel
o: beispiel

dn: cn=Manager,dc=beispiel,dc=local
objectClass: organizationalRole
cn: Manager
description: Directory Manager



Die folgenden Zeilen sind spezifische Einträge für unser Beispiel.

Fortsetzung init.ldif:


dn: cn=readonly,dc=beispiel,dc=local
objectClass: person
cn: readonly
sn: readonly
userPassword: secret

dn: dc=intern,dc=beispiel,dc=local
objectClass: dcObject
objectClass: organization
dc: intern
o: intern

dn: ou=people,dc=intern,dc=beispiel,dc=local
objectClass: organizationalUnit
ou: people

dn: uid=testuser,ou=people,dc=intern,dc=beispiel,dc=local
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: person
cn: Vor Nachname
gidNumber: 100
homeDirectory: /home/testuser
loginShell: /bin/bash
mail: testuser@mail.tld
sn: Nachname
uid: testuser
uidNumber: 1000

dn: ou=group,dc=intern,dc=beispiel,dc=local
objectClass: organizationalUnit
ou: group

dn: cn=users,ou=group,dc=intern,dc=beispiel,dc=local
objectClass: posixGroup
cn: users
gidNumber: 100
memberUid: testuser



Mit ldapadd -D cn=Manager,dc=beispiel,dc=local -W -f init.ldif assen sich diese Elemente nun in den LDAP-Baum einfügen.

Client-LDAP-Konfiguration Top


Auf dem Client werden die Pakete nss_ldap und pam_krb5 benötigt.

Als ersten passen wir die die Datei für die LDAP-Abfrage an. Unter Gentoo heißt diese beispielsweise /etc/ldap.conf, hingegen unter Debian /etc/nssldap.conf.

/etc/ldap.conf:


# hostname/ip des ldap-servers
host kdc.intern.beispiel.local

base dc=intern,dc=beispiel,dc=local
binddn cn=readonly,dc=beispiel,dc=local
bindpw secret

nss_base_passwd ou=people,dc=intern,dc=beispiel,dc=local?one
nss_base_shadow ou=people,dc=intern,dc=beispiel,dc=local?one
nss_base_group  ou=group,dc=intern,dc=beispiel,dc=local?one

# das ?one muss angefügt werden, da sich die user direkt in 'people'
# befinden und die gruppen in 'group'

nss_reconnect_tries 4                   # number of times to double the sleep time
nss_reconnect_sleeptime 1               # initial sleep value
nss_reconnect_maxsleeptime 16   # max sleep value to cap at
nss_reconnect_maxconntries 2    # how many tries before sleeping
# This leads to a delay of 15 seconds (1+2+4+8=15)



Folgende Zeilen müssen in der nsswitch.conf abgeändert werden.

/etc/nsswitch.conf:


passwd:         files ldap
group:          compat ldap



Client-Kerberos-Konfiguration Top


Falls nicht schon geschehen, kann die /etc/krb5.conf des KDC auf den Client übernommen werden.

Damit sich der User bei der Anmeldung gegenüber dem KDC authentifiziert, muss die PAM-Konfiguration angepasst werden.

/etc/pam.d/system-auth:


#%PAM-1.0

auth       required     pam_env.so
auth       sufficient   pam_unix.so try_first_pass likeauth nullok
auth       sufficient   pam_krb5.so try_first_pass
auth       required     pam_deny.so

account    required     pam_unix.so
account    sufficient   pam_krb5.so

password   required     pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3
password   sufficient   pam_unix.so try_first_pass use_authtok nullok md5 shadow
password   sufficient   pam_krb5.so try_first_pass use_authtok
password   required     pam_deny.so

session    required     pam_limits.so
session    required     pam_unix.so
session    optional     pam_krb5.so



Bevor man sich nun Ab- und wieder Anmeldet, ist es vorzuziehen, die Anmeldung zuerst auf einer anderen Konsole auzusprobieren. Auch die Anmeldung über SSH klappt damit grundsätzlich, jedoch wird dabei kein Ticket erstellt, was zu Fehlern bei der NFS4-Anmeldung führt.

Schlusswort Top


Zum Managen der Accounts und Gruppen empfiehlt sich zumindest ein Frontend wie JXplorer zu verwenden.

Ein Nachteil dieser Lösung ist sicherlich, dass die Accounts doppelt mit Kerberos und LDAP verwaltet werden müssen. Die neueste Version von MIT-Kerberos5 unterstüzt jedoch schon LDAP als Backend - es ist also nur noch eine Frage der Zeit, bis dies effektiv verwendet werden kann.

Weiters soll es in der neuesten LDAP-Version möglich sein, dass sich der Client-Rechner per Kerberos-Host-Ticket am LDAP-Server anmeldet - wodurch die Komponenten noch besser ineinander integriert werden.

Das Ziel dieses ganzen Zusammenführens ist es, die Administration zu vereinfachen, Fehler auszuschließen und die Sicherheit erhöhen.

Hier gehts weiter zu Teil 3.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Internet & Netzwerk/Userverwaltung mit LDAP und Kerberos