Entwicklungsumgebung/LDAP
Diese Seite ist momentan eine Baustelle im Zustand: 1
-
0
-
1
-
2
-
3
-
4
LDAP
Warum LDAP?
Eigentlich alle derzeit aktuellen Serverdienste können einen LDAP-Server zur Authentifizierung ihrer Benutzer verwenden, so z.B. PAM, ftp, Mail, Apache, Squid, SAMBA und viele andere. Damit wird die Voraussetzung für die Realisierung von "single sign on" geschaffen, der einmaligen netzweiten Anmeldung zur Nutzung unterschiedlichster Dienste.
Da LDAP in die Verzeichnisdienste NDS der Firma Novell und ADS der Firma MicroSoft integriert ist, können Benutzerinformationen für heterogene Netze zentral verwaltet werden.
Open-LDAP
Die OpenLDAP-Software ist eine open source Implementation des Lightweight Directory Access Protocol.
Sie enthält:
- slapd - den stand-alone LDAP daemon (Server)
- libraries - die Bibliotheken für das LDAP Protokoll,
- utilities, tools, und Beispiel-Clients.
Installation des LDAP-Servers
Wir benötigen zuerst Tools für die Manipulation der LDAP-Datenbank. Weiter ermöglichen die Systemutilities, das andere Dienste des delixs-Servers (DNS, DHCP, SAMBA...) ihre Daten aus dem LDAP direkt beziehen können.
Fangen wir also an, LDAP zu installieren:
aptitude install slapd
Zuerst wird der OpenLDAP (Lightweight Directory Access Protocol)-Server "slapd" selbst installiert.
Dieses Administratorpasswort hat nichts mit dem "root"-Passwort des Betriebssystems zu tun und sollte möglichst auch nicht gleich lauten. Geben Sie jetzt ein Passwort ein und notieren Sie dies an sicherer Stelle. Nach der Bestätigung geht die Installation weiter. Im Entwicklungsserver lautet das Passwort "schule".
Der LDAP Baum
Die Definitionen für LDAP liegen unter /etc/ldap. Zuerst wird die Datei "ldap.conf" angepasst:
cd /etc/ldap mcedit ldap.conf
Die vollständige Liste aller möglichen Optionen erhalten Sie mit
man ldap.conf
Tragen Sie nun die folgenden Daten ein.
In den meisten Zeilen muss nur das Kommentarzeichen am Anfang entfernt werden. Der wichtigste Eintrag ist
BASE dc=delixs-schule,dc=de
Dies entspricht der DNS-Domain "delixs-schule.de".
Das ist auch die Wurzel des LDAP-Baumes und der Suffix-Eintrag der 1. Datenbank. Seit Erscheinen von OpenLDAP v2.3 ist HDB (Hierarchical Data Base) der voreingestellte Datenbanktyp. HDB hat gegenüber BDB (Berkeley Data Base) den Vorteil, das es von Haus aus Daten in einer hierarchischen Struktur (Baumstruktur) speichert.
Der Suffix Eintrag der Datenbank ist gleichzeitig der namingContext der DB.
Installation der benötigten LDAP-Tools
Schritt 1 "ldap-utils"
Das Paket "ldap-utils" enthält die OpenLDAP Kommandozeilenprogramme, um den LDAP-Server administrieren zu können. NSS und PAM sind die primären Systemutilities.
Installieren Sie nun mit folgenden Befehlen:
aptitude install ldap-utils libsasl2-modules
Der erste Befehl sollte ohne Nachfragen in einigen Minuten ablaufen.
Schritt 2 "libnss-ldap"
Beim zweiten Befehl sind einige Nachfragen zu beantworten.
aptitude install libnss-ldap
Hinweis: Seit 2008 gibt es für libnss-ldap einen Daemon als Ersatz. Der Daemon ist im Paket libnss-ldapd enthalten. Er soll helfen, Probleme beim Booten des Rechners zu vermeiden. Wir setzen trotzdem libnss-ldap ein und werden die Probleme durch geeignete Konfiguration umschiffen.
Hier geben Sie einfach die IP-Nummer (hier ldap://10.100.0.1) ihres Servers ein, eine Portnummer brauchen Sie nicht anhängen.
Jetzt wird die DN (distinguished name) der Suchbasis erfragt. Geben Sie hier die gleichen Daten wie oben in der Datei "ldap.conf" ein.
Bei der Frage nach der LDAP-Version lassen Sie die eingestellte Versionsnummer 3 und drücken Enter.
Als berechtigter Nutzer wird nichts eingetragen, weil libnss-ldap keinen root Zugang haben soll. Somit werden bei NSS Anfragen später die shadow Daten (Passwörter) nicht übers Netz transferiert.
Geben Sie hier kein Passwort ein und drücken einfach Enter.
Den abschließenden Hinweis sollten Sie genau lesen und bei eventuellen späteren Veränderungen unbedingt beachten.
Die Datei "/etc/libnss-ldap.conf" wird nun konfiguriert:
<source highlight="1-9" lang="text">
base dc=delixs-schule,dc=de deref always uri ldap://127.0.0.1/ ldap_version 3 rootbinddn cn=admin,dc=delixs-schule,dc=de scope sub bind_timelimit 30 bind_policy soft nss_connect_policy persist
</source>
In der Datei "/etc/nsswitch.conf" werden drei Änderungen vorgenommen und konfiguriert:
<source highlight="1-3" lang="text">
passwd: compat ldap shadow: compat ldap group: compat ldap
</source>
Schritt 3 "libpam-ldap"
Nun folgt der dritte Installationsschritt der benötigten LDAP-Tools:
aptitude install libpam-ldap
Auch hier müssen Sie Fragen zur Installation beantworten
Beantworten Sie die Frage mit "Ja", denn der lokale Nutzer "root" darf Datenbank-Administrator sein.
Beantworten Sie die zweite Frage mit "Nein", denn die lokale LDAP-Datenbank benötigt keine Anmeldung.
Geben Sie hier die Daten (cn=admin,dc=delixs-schule,dc=de) ein.
Geben Sie nun das Passwort für den "root"-Zugang auf die LDAP-Basis ein. Das Passwort haben Sie bereits ganz oben in diesem Kapitel festgelegt. Beim Entwicklungsserver lautet das Passwort "schule".
Die Konfigurationsdatei "/etc/pam_ldap.conf" wird nun noch angepasst:
<source highlight="1-7" lang="text">
base dc=delixs-schule,dc=de uri ldap://127.0.0.1/ ldap_version 3 rootbinddn cn=admin,dc=delixs-schule,dc=de scope sub bind_policy soft pam_password exop
</source>
Die Konfigurationsdatei "/etc/pam.d/common-account" wird nun noch angepasst:
<source highlight="1-7" lang="text">
account [success=1 default=ignore] pam_unix.so account required pam_ldap.so account required pam_permit.so
</source>
Die Konfigurationsdatei "/etc/pam.d/common-auth" wird nun noch angepasst:
<source highlight="1-3" lang="text">
auth [success=1 default=ignore] pam_unix.so auth required pam_ldap.so use_first_pass ignore_authinfo_unavail auth required pam_permit.so
</source>
Die Konfigurationsdatei "/etc/pam.d/common-password" wird nun noch angepasst:
<source highlight="1-4" lang="text">
password [success=1 default=ignore] pam_unix.so nullok obscure min=4 max=8 md5 password required pam_ldap.so try_first_pass password required pam_smbpass.so nullok use_authtok try_first_pass password required pam_permit.so
</source>
Die Konfigurationsdatei "/etc/pam.d/common-session" wird nun noch angepasst:
<source highlight="1-2" lang="text">
session required pam_unix.so session required pam_mkhomedir.so skel=/etc/skel umask=0022
</source>
Schritt 4 "Initialisierung des LDAP"
Da die smbldap-tools davon ausgehen, dass alle Gruppen unter einer 'ou' zu finden sind, wird diese sehr einfache Struktur gewählt.
.----- ou=groups / / / .------ ou=people / / LDAPBASE -------- ou=accounts \ \ \ `------ ou=machines \ \ `----- cn=admin
Anmerkung: die Einträge für sambaDomain und für DHCP kommen später die Einträge für LDAPBASE und cn=admin sind schon drin.
<source highlight="1-25" lang="text"> dn: ou=groups,dc=delixs-schule,dc=de ou: groups objectClass: top objectClass: organizationalUnit description: Container fuer alle Gruppen
dn: ou=accounts,dc=delixs-schule,dc=de ou: accounts objectClass: top objectClass: organizationalUnit description: Container fuer alle Accounts
dn: ou=people,ou=accounts,dc=delixs-schule,dc=de ou: people objectClass: top objectClass: organizationalUnit description: Container fuer alle schul-spezifischen Accounts
dn: ou=machines,ou=accounts,dc=delixs-schule,dc=de ou: machines objectClass: top objectClass: organizationalUnit description: Container der Samba-Maschinen-Accounts </source>
- Datei: initldap.ldif
Speichern Sie diese Datei als "/root/initldap.ldif" ab und spielen Sie sie dann mit folgendem Befehl ein:
ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/initldap.ldif
Sie werden nach dem LDAP Password gefragt, beim Entwicklungsserver geben Sie "schule" ein.
Kontrolle
Wenn alles richtig installiert ist, können Sie mit folgendem Befehl eine Kontrolle durchführen:
ldapsearch -x -LLL -s base -b "" "objectclass=*" namingContexts
Die Ausgabe am Bildschirm sollte so aussehen:
dn: namingContexts: dc=delixs-schule,dc=de
Konfiguration des LDAP
Konfigurationsdateien für LDAP
Die systemweite LDAP-Konfiguration ist in folgenden Dateien gespeichert:
- /etc/ldap/ldap.conf enthält allgemeine Einstellungen
- /etc/ldap/slapd.conf enthält globale Einstellungen, wie Schemata, Direktiven, Datenbankeinstellungen usw., aber kein Passwort
Die Konfiguration für libnss-ldap wird in folgenden Dateien gespeichert:
- /etc/libnss-ldap.conf enthält die Einstellungen
- /etc/libnss-ldap.secret enthält das Passwort (hier natürlich nicht, wir haben ja keins eingegeben)
Die Konfiguration für pam_ldap wird in folgenden Dateien gespeichert:
- /etc/pam_ldap.conf enthält die Einstellungen
- /etc/pam_ldap.secret enthält das Passwort
Admin-Passwort
Die Dateien, die das admin-Passwort enthalten, dürfen ausschließlich root gehören und müssen die Dateirechte 600 (rw - -) haben:
- /var/lib/samba/secrets.tdb
- /etc/smbldap-tools/smbldap_bind.conf
- /etc/pam_ldap.secret
In die nss-Konfiguration (libnss-ldap.secret) und in die slapd.conf gehört kein Passwort.
Die erste Konfiguration des LDAP
Neben den Fragen, die in diesem Kapitel schon beantwortet und somit in die Konfigurationsdateien eingeflossen sind, werden nun noch weitere Grundeinstellungen vorgenommen. Dafür bearbeiten wir die Datei /etc/ldap/slapd.conf im Abschnitt "Schema and objectClass" und fügen dort weitere Zeilen ein:
# Schema and objectClass definitions include /etc/ldap/schema/corba.schema include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/openldap.schema
Hinweis: Fügen Sie nicht das in einigen Quellen im Internet empfohlene Schema "misc.schema" ein.
Und weiter bearbeiten wir die gleiche Datei /etc/ldap/slapd.conf im Abschnitt "Indexing options" und fügen dort auch weitere Zeilen ein:
# Indexing options for database index objectClass eq index cn pres,sub,eq index sn pres,sub,eq index uid pres,sub,eq index displayName pres,sub,eq index default sub index uidNumber eq index gidNumber eq index mail,givenName eq,subinitial index dc eq
Nachdem diese neuen Indices eingetragen sind, muss natürlich auch die Datenbank des LDAP neu aufgebaut werden. Mit den folgenden vier Befehlen passiert genau das:
/etc/init.d/slapd stop slapindex chown -R openldap:openldap /var/lib/ldap /etc/init.d/slapd start
Erklärung: Da der Index mittels slapindex
als Benutzer "root" neu erzeugt wird, müssen anschließend mit dem chown-Befehl die Eigentumsverhältnisse wieder richtig gestellt werden.
Hinweis: Falls bei der Installation oder Konfiguration etwas schief gegangen ist, setzen Sie einfach den "loglevel" in der Datei "slapd.conf" auf 261 (=256+4+1) und beobachten die Fehlermeldungen in /var/log/messages
. Läuft alles zufriedenstellend, dann setzen Sie unbedingt den loglevel wieder auf "none" zurück.
Testen der PAM-Konfiguration
Erzeugen Sie die Datei "/root/mmustermann.ldif" mit folgendem Inhalt:
<source highlight="1-26" lang="text">
- Login: mmustermann
- Passwort: geheim
dn: uid=mmustermann,ou=people,ou=accounts,dc=delixs-schule,dc=de objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: mmustermann sn: mmustermann givenName: mmustermann uid: mmustermann uidNumber: 2000 gidNumber: 1002 homeDirectory: /home/students/mmustermann loginShell: /bin/bash gecos: Schueler displayName: mmustermann userPassword:: e1NTSEF9dGpzaVNabEVaYXBiTW1PZ0JHdXlWR09xYlJLVFRJdTk= </source>
Diese Datei spielen Sie nun in den LDAP ein mit dem Befehl:
ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/mmustermann.ldif
Jetzt wechseln Sie die Konsole mit "Alt-F2" und melden sich dort an
- Nutzer: 'mmustermann' und Passwort: 'geheim'
Das sollte ohne Probleme funktionieren. Geben Sie nun den folgenden Befehl ein:
getent passwd mmustermann
Die Ausgabe sollte liefern:
mmustermann:x:2000:1002:Schueler:/home/students/mmustermann:/bin/bash
Der weitere Befehl:
id mmustermann
sollte diese Ausgabe liefern:
uid=2000(mmustermann) gid=1002(students) Gruppen=1002(students)
Mit dem Befehl:
passwd mmustermann
können Sie das Passwort dieses Nutzers ändern.
Es ging hier nur um den Test der PAM-Konfiguration, also werden Sie diesen User nun wieder löschen. Geben Sie dazu den Befehl in eine einzige lange Zeile ein:
ldapdelete -x -D "cn=admin,dc=delixs-schule,dc=de" -W "uid=mmustermann,ou=people,ou=accounts,dc=delixs-schule,dc=de"
Damit ist der Test abgeschlossen.
SAMBA - LDAP Support
Da zu gegenwärtigen Zeitpunkt der File-Server SAMBA noch nicht installiert ist, wird die Konfiguration von LDAP später nochmals angefasst und bearbeitet werden müssen. Das wird dann im Kapitel Entwicklungsumgebung/LDAP_User passieren.
LDAP komplett löschen
Falls die Installation fehlschlägt und die gesamte Prozedur einfach nochmals von vorn begonnen werden soll, kann alles bisher Installierte auf einfache Weise komplett entsorgt werden.
aptitude purge slapd aptitude purge ldap-utils libsasl2-modules aptitude purge libnss-ldap libpam-ldap libpam-smbpass
Damit ist das komplette Löschen der alten LDAP-Installation erfolgt.
Sie können nun das Kapitel von vorn beginnen.
Weblinks
- http://www.openldap.org/
- http://linuxwiki.de/OpenLDAP
- http://de.wikipedia.org/wiki/Ldap
- http://wiki.debian.org/LDAP
- http://www.webmasterpro.de/server/article/ldap.html
- http://dkluenter.gmxhome.de/
- http://www.debian-administration.org/article/OpenLDAP_installation_on_Debian
Hans-Dietrich Kirmse, Harry Jede 2009