OpenLDAP installieren und einrichten
Zur zentralen Nutzerdatenpflege bedienen wir uns eines LDAP 1)-Verzeichnisdienstes, genauer gesagt dem OpenLDAP. LDAP ist ein Netzwerkprotokoll, dient zur Bereitstellung von Verzeichnisdiensten und vermittelt dabei die Kommunikation zwischen dem LDAP-Clients mit dem Directory Server.
Installation
Zu erst installieren wir die benötigten Pakete und Programme.
# yum install compat-openldap.i386 openldap-clients.i386 openldap-servers.i386 openldap-servers-sql.i386
Konfiguration
Master-Passwort erstellen
Zur Generierung des Passwortes für den Eintrag rootpw mit der Verschlüsselungsmethode SSHA - entsprechend einem SHA-1 Algorithmus (FIPS 160-1), nutzen wird das Programm /usr/sbin/slappasswd mit folgendem Befehl aufgerufen:
# /usr/sbin/slappasswd -h {SSHA} New password: Re-enter new password: {SSHA}MT/P3fPtBfI3E2bylGEFxv2/u1KxmVmO
Berechtigungen der Konfigurationsdatei kontrollieren
Aus sichertstechnischen Gründen soll die Datei /etc/openldap/slapd.conf nur der Gruppe ldap zur Verfügung stehen.
# ls -l /etc/openldap/slapd.conf -rw-r----- 1 root root 4628 6. Aug 14:09 slapd.conf
Bei Bedarf passen wir die Berechtigungen passend an.
# chown root:ldap slapd.conf # chmod 640 slapd.conf # ls -l /etc/openldap/slapd.conf -rw-r----- 1 root ldap 4628 6. Aug 14:09 slapd.conf
Systemanpassungen
Syslog anpassen
Damit unser LDAP-Server seine Meldungen auch sichtbar uns zur Verfügung stellt, lassen wir seine Meldungen ganz einfach in ein separates Logfile schreiben. Hierzu passen die Konfigurationsdatei /etc/syslog.conf entsprechend an.
# Save boot messages also to boot.log local4.* /var/log/ldap.log
Anschließend den syslog-daemon neu durchstarten:
# service syslog restart
Kernel-Protokollierdienst beenden: [ OK ]
System-Protokollierdienst beenden: [ OK ]
System-Protokollierdienst starten: [ OK ]
Kernel-Protokollierdienst starten: [ OK ]
Das war's.
Administration
Zur Administration unseres LDAP-Servers bedienen wir uns des PHP-Projektes phpldapadmin. Installation und Konfiguration ist im Kapitel „phpLDAPadmin installieren und einrichten“ beschrieben.
Client-Konfiguration
Bei den betreffenden Clients wollen wir nun die Authentifizierung der einzelnen User nicht mehr gegen die lokale /etc/shadow laufen lassen, denn dazu müssten wir nun auf jedem Host die User manuell (nach)pflegen. Nicht zuletzt aus diesem Grunde, haben wir uns für openldap entschieden.
Paketinstallation
Auf der Clientseite benötigen wir das Pakete openldap, openldap-clients, und nss_ldap, bei Bedarf installieren wir diese via YUM.
yum install openldap openldap-clients nss_ldap
Konfiguration
Anonymous Bind - Variante
In der einfachen Variante konfigurieren wir unseren Klienten so, dass er sich via anonymous bind an unseren LDAP-Server wenden kann.
Auf allen Client-Rechnern müssen sowohl /etc/ldap.conf als auch /etc/openldap/ldap.conf den jeweiligen Server und grundlegende Informationen über unsere Organisation enthalten.
# egrep -v '(^#|^$)' /etc/ldap.conf ldap.domain.de base dc=domain,dc=de ldap_version 3 timelimit 120 bind_timelimit 120 idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman uri ldap://ldap.doamin.de/ ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5
# egrep -v '(^#|^$)' /etc/openldap/ldap.conf BASE dc=domain,dc=de URI ldap://ldap.domain.de/ TLS_CACERTDIR /etc/openldap/cacerts
Am einfachsten geht dies mit dem dem Authentication Configuration Tool system-config-authentication und das Auswählen von LDAP verwenden in der Tab Benutzerinformationen.
Weiterhin müssen wir auf allen Client-Rechnern, die Datei /etc/nsswitch.conf bearbeitet werden um LDAP zu verwenden.
Entweder wir editieren die Konfigurationsdatei von Hand, oder wir nutzen abermals das Authentication Configuration Tool system-config-authentication. Dort wählen wir LDAP auf dem Tab Benutzerinformationen aus.
Wenn die Datei /etc/nsswitch.conf manuell bearbeitet wird, ergänzen wir einfach die Zeilen:
passwd: files shadow: files group: files
mit ldap
passwd: files ldap shadow: files ldap group: files ldap
Damit wir nun nicht für jeden unserer User ein Homeverzeichnis manuell auf dem Client-Rechner einrichten müssen, nutzen wir wieder die bequeme Art über system-config-authentication. Auf dem Reiter Optionen wählen wir einfach die Option Create home directories on the first login
Voila, das war's schon.
Bind-Variante mit technischem User
In abgesicherten Umgebungen wird der Zugriff auf den LDAP-Server nicht von jedermann ohne Passwort, auch anonymous bind genannt unterbunden. Stattdessen muss ich der Klient bei den Anfragen eines technischen Users bedienen, der auch ein Passwort benutzt, welches dem LDAP-Server bekannt ist.
Auf den Klient-Rechnern müssen nun in der /etc/ldap.conf der LDAP-Server und grundlegende Informationen über unsere Organisation enthalten, sowie auch mit dem technischen User und dessen Passwort.
# egrep -v '(^#|^$)' /etc/ldap.conf
base dc=nausch,dc=org ldap_version 3 binddn cn=technical_user,dc=domain,dc=de bindpw Ohne-Hirn-und-Verstand! timelimit 120 bind_timelimit 120 idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm uri ldap://ldap.domain.de ssl no tls_cacertdir /etc/openldap/cacerts pam_password md5
Clienttest
Die erfolgreiche Konfiguration unseres Rechners überprüfen wir so:
- Mit getent lassen wir uns die Informationen eines Users anzeigen, der sowohl in der /etc/shadow wie auch im zentralen LDAP-Verzeichnisdienst hinterlegt ist. Wenn alles gut gelaufen ist, werden uns zwei Einträge präsentiert.
# getent passwd | grep django django:x:555:555:Django:/home/django:/bin/bash django:x:555:555:Django:/home/django:/bin/bash
- Dann loggen wir uns einfach mit einem „neuen“ User an, der nicht in der lokalen /etc/shadow steht, aber dafür im zentralen LDAP-Verzeichnisdienst hinterlegt ist.