Articlename: Userverwaltung mit LDAP und Kerberos Keywords: zentrale userverwaltung ldap kerberos howto tutorial Date: 27.12.2007, 14:57 Views: 2546 Categoryname: Internet & Netzwerk ---------------------------------------- Vorwort ------------------ Dieser Artikel bezieht sich inhaltlich auf Kerberos-Grundinstallation (http://www.online-tut orials.net/internet-netzwerk/kerberos-grundinstallation/tutorials-t-29-308.html). Diesmal geht es 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 (http://www.online-tutorial s.net/internet-netzwerk/nfs4-mit-kerberos-und-ldap/tutorials-t-29-310.html). LDAP-Server-Installation ------------------ LDAP-Server-Pakete finden sich bei jeder guten Distribution. Deshalb widmen wir uns gleich der Konfiguration des slapd. ------- Code: /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 # 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 ------- End-Code ------- 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== ------- End-Code ------- Der Eintrag sieht danach so aus: ------- Code: /etc/openldap/slapd.conf ------- rootpw {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== ------- End-Code ------- 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. ------- Code: 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 ------- End-Code ------- Die folgenden Zeilen sind spezifische Einträge für unser Beispiel. ------- Code: 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 ------- End-Code ------- 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 ------------------ 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. ------- Code: /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) ------- End-Code ------- Folgende Zeilen müssen in der nsswitch.conf abgeändert werden. ------- Code: /etc/nsswitch.conf ------- passwd: files ldap group: compat ldap ------- End-Code ------- Client-Kerberos-Konfiguration ------------------ 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. ------- Code: /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 ------- End-Code ------- 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 ------------------ Zum Managen der Accounts und Gruppen empfiehlt sich zumindest ein Frontend wie JXplorer (http://www.jxplorer.org) 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 (http://www.online-tutorials.net/internet-netzwerk/nfs4-mit-kerberos-und-ldap/tutorials -t-29-310.html) gehts weiter zu Teil 3.