OpenLDAP ist eine Implementierung von LDAP als FreieSoftware.
Homepage: http://www.openldap.org/
English: http://linuxwiki.riverworth.com/index.php/LDAP_Authentication
Lizenz: OpenLDAP Public License (BSD Style, GPL-kompatibel)
Inhaltsverzeichnis
Mini-HowTo
Einrichtung eines LDAP-Servers zur Benutzerauthentifizierung mit OpenLDAP
Viele Server können einen LDAP-Server zur Benutzerauthentifizierung nutzen, so z.B. PAM, PureFtpd, Courier, Apache und viele andere. Soll OpenLDAP in einem Netzwerk zur Authentifizierung verwendet werden ist die Verwendung von SSL stark anzuraten denn sonst wird LDAP zu einem passwort-verteil System.
Zuerst einmal sollte man sich die OpenLDAP-Pakete seiner Distribution installieren und auf besondere Hinweise für diese achten die von dieser Beschreibung abweichen!
Dann kann man die Konfigurationsdatei slapd.conf des Servers editieren. Wenn man Programme installiert hat, die zusätzliche LDAP-Schemata benötigen, muss man diese per include einfügen, z.B.
include /etc/openldap/schema/pureftpd.schema include /etc/openldap/schema/courier.schema
Diese sollten nach den normalen Schema stehen.
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema
Als nächstes werden ACLs definiert, die den Zugriff auf die DNs regeln, z.B.
access to * attr=userPassword by self write by anonymous auth access to * by * read
Die ACLs werden der Reihe nach abgearbeitet und nur die erste Übereinstimmung wird genommen. Im Beispiel kann ein beliebiger User das Passwort also nicht lesen. Zu beachten ist, dass der als rootdn definierte DN immer Schreiberlaubnis hat.
Nach diesen globalen Einstellungen folgt die Definition einer (oder mehrerer) Datenbanken.
database ldbm suffix "dc=vlugnet,dc=org" rootdn "cn=Manager,dc=vlugnet,dc=org"
oder
suffix "o=Vaihingen/Enz Linux User Group,c=DE" rootdn "cn=Manager,o=Vaihingen/Enz Linux User Group,c=DE"
suffix legt dabei den Basis-DN fest. Die DNs können dabei entweder der traditionellen Namensgebung (Land, Organisation, Abteilung, Person) folgen oder an Hand der Internet-Domänen-Namen festgelegt werden (so wie im oberen Beispiel).
Wenn man kein SASL nutzt (was bei rein lokalen Installationen ok ist und alles vereinfacht), dann muss man noch ein Passwort für den rootdn festlegen.
rootpw {MD5}CY9rzUYh03PK3k6DJie09g==
Ein so verschlüsseltes Passwort kann man z.B. mit slappasswd -h{md5} erzeugen.
Nun muss man noch den Pfad zur Datenbank angeben. In diesem Verzeichnis legt LDAP seine Datenfiles ab.
directory /var/lib/ldap
und die zu erzeugenden Indizes:
index objectClass,uid,uidNumber,gidNumber,memberUid eq index cn,mail,surname,givenname eq,subinitial
Danach kann man den Server schonmal starten. Dabei sollte man den Parameter -h ldap://127.0.0.1 angeben, damit der Server nur lokal erreichbar ist.
Tipps+Tricks
!OpenLDAP in Verbindung mit BerkeleyDB 4.1 hat einen zu kleinen Cache. Zum vergrössern schreibt man in location/DB_CONFIG set_cachesize 0 <bytes> 0 und lässt db4.1_recover laufen.
Potentielle Falle beim Konfigurieren von des clients: Es darf in /etc/ldap/ldap.conf im Gegensatz zu vielen anderen config files kein = Zeichen verwenden. Beispiel:
BASE dc=example,dc=com URI ldaps://example.com TLS_CACERT /etc/ssl/certs/example_cacert.pem
Bei SSL ist es notwendig das CAcert anzugeben!
Möchte man die Benutzer Passwörter als SSHA (das derzeit sicherste Verfahren das in OpenLDAP implementiert ist) speichern, muss man in /etc/ldap/slapd.conf sie richtige Methode einstellen: password-hash {SSHA} und in pam_ldap.conf pam_password auf exop setzen.
Fragen
Allgemeine Fragen zu LDAP siehe LDAP.
Also so richtig übersichtlich finde ich obiges Mini-HOWTO nicht. Das mag daran liegen, das ich eigentlich gar keine Ahnung von LDAP habe. Aber genau das will ich ja ändern... Also ein paar Fragen:
- Verstehe ich das richtig, das ich die Schemata eigentlich nicht benötige, wenn meine Programme per PAM authentifizieren und LDAP dann im PAM eingetragen ist?
Welche? Für PAM brauchst du ein Schema, welches die Objektklasse "posixAccount" enthält. Bei OpenLDAP ist das in den standardmäßig installierten Schemata dabei (im nis.schema)
Ich möchte z.B. einen Samba-Server aufsetzen. Ich verstehe das so, dass der Samba per PAM authentifiziert und ich dem PAM dann sage, dass er LDAP benutzen soll. Dafür nehme ich dann das posixAccount-Schema. Ist das richtig?
Man benötigt beides (samba.schema und nis.schema), in ersterem ist die Objektklasse smb!PasswordEntry für das NT-Passwort und in zweitem ist die Objektklasse posixAccount für die restlichen (Unix-) Benutzerdaten. Samba greift dann direkt auf LDAP zu. Genaueres siehe Linux-PDC mit Samba und OpenLDAP (iX). Die beste, mir bekannte, deutsche Anleitung zu diesem Thema!
Ein Objekt (z.B. ein User) kann übrigens mehrere Objektklassen beinhalten. Was bedeutet das?
s.o., z.B. posixAccount und smb!PasswordEntry, beides sind Objektklassen. Das Objekt, das diese Klassen beinhaltet, hat dann als Attribute, genau diese, die in mindestens einer dieser Objektklassen definiert sind.
- Und wie bekomme ich jetzt meine User-Einträge in die Datenbank?
indem du ein sog LDIF-File (siehe Doku zu OpenLDAP) anlegst und es dann mit ldapadd in die Datenbank einfügst, oder einen der Client verwendest (siehe Links)
Wie verwaltet Ihr eure LDAP-Adressbücher? Meine clients scheinen nicht in der Lage zu sein, direkt auf dem LDAP-Server die Kontakte anzulegen und pflegen viel lieber lokale Adressbücher? -- RomanKreisel 2004-05-15 09:08:04
- Du brauchst als User von OpenLDAP einen User, der Schreibrechte hat (die man default-mäßig nich hat) wie man den Server einstellt das die Benutzer auch schreiben können steht in der Dokumentaion.
- Nur Kmail(Kaddressbook) und Evolution können auch Addressen eintragen.
- Wie müssen die Clients konfiguriert werden, wenn ich OpenLDAP als NIS Ersatz benutzen will???
- Wie sieht es mit mobilen Clients, z.B. Notebooks, aus? Benötigen diese wieder lokale Benutzerkonten oder gibt es eine Möglichkeit bestimmte Benutzerkonten zu "cachen"? Wenn ja ist es auch möglich das Profil des User zu Cachen? Sprich ist es möglich sich so etwas wie einen M$ Domänencontroller zu bauen (für Linux Clients)?
OffeneFrage: Wie richte ich OpenLDAP ein?
Links
Anleitung für Debian: /DebianHowto
Allgemeines
Wikipedia DeWikiPeida:LDAP
Linux LDAP HOWTO - Bereits ein wenig verltet (1999); das englische HOWTO ist besser geschrieben
LDAP Praxis Linux Magazin (2001)
LDAP/OpenLDAP HowTo (Dieter's Digest)
[ LDAP für den Hausgebrauch - Die Basis 11 April, 2005 - Dead]
Spezielles
Automount über LDAP - ProLinux {de}
Authentifizierung an einem LDAP-Server (Linux NetMag) 2001 {de}
E-Mail && LDAP
LDAP Courier IMAP 2006-06-23
LDAP, Postfix und Courier-IMAP 2006 {de}
ldap, postfix and courier-imap howto 2003-05-16
OpenLDAP-Adressbuch für Thunderbird & Co. - ProLinux am 2005-01-31
Adressbuch in einem LDAP-Server speichern (Linux NetMag) 2004
Ein Adressbuch in LDAP 2004-01-20 Jürgen Schmitz
Anmerkung: Kmail/Kaddressbook und Evolution sind die einzigen Clients die auch schreiben auf ldap-Adressbücher zugreifen können.
Mail server on Debian GNU/Linux Sarge Postfix, Courier, Maildrop, SASL, Horde; Erstellt: June 2006
Englische Informationen
LDAP-HowTo (TLDP HOWTO) {en}
LDAP-Implementation-HowTo (TLDP HOWTO) {en}
OpenLDAP 2.2 Administrator's Guide {en} - Sehr empfehlenswert, wenn man genügend gut Englisch spricht ist das die beste Informations Quelle.
How to Configure Authentication in OpenLDAP (Mark H. Wood, 2001-04-05) {en} Prinzipielles zu Auth. mit LDAP
LDAP Authentication for Linux (metaconsultancy) {en}
Bücher
3-89842-762-5 "OpenLDAP" Ein gut verständliches Buch mit vielen Praxisbeispielen
3-89864-217-8 "LDAP verstehen, OpenLDAP einsetzen" soll ein gutes Buch zum Thema sein
http://www.redbooks.ibm.com/redbooks/pdfs/sg244986.pdf Eine ausführliche und allgemeine Einführung in die Grundprinzipien von LDAP
Administrationswerkzeuge
JXplorer ein auf Java basierender LDAP Browser
Luma v. 2.x - KDE
Directory administator Scheinbar nur zur User Administration.
UltraPossum GTK v 0.1
UnixConf - Konfigurations-Frontend mit LDAP-Server-Wizard & LDAP-Client-Konfiguration
GQ - Grafische Oberfläche in GTK
Webbasierte AW.
phpLDAPadmin - eine andere Weboberfläche für LDAP (PHP) v 0.9.5
GoSA2 - (PHP) von und (u.a.) für Debian. Hier kommen jedoch Schemas zum Einsatz die für gewöhlich nicht gebraucht werden.
Yala - Yet Another LDAP Administrator (PHP, unausgereift v.0.3x)
web2ldap - Web-Oberfläche für LDAP (FastCGI/Python)
LAM LDAP Account Manager (PHP)
lwat Ldap Web-based Administration Tool wird von SkoleLinux eingesetzt.
Univention Corporate Server GPL siehe: -> http://www.univention.de/oss.html