Archiv für die Kategorie „LDAP“

LDAP für den Hausgebrauch – Die Basis

Folgendes ist für ein Debian Sarge System geschrieben. Ich habe länger darüber nachgedacht, ob ich es nicht Distributions-Unabhängig schreiben sollte, aber wieder verworfen, weil es die Sache unnötig verkompliziert hätte. So wäre die ganze Sache bei SuSE 9.2 vollkommen überflüssig, denn hier wird bereits alles mitgebracht was man so braucht inkl. Vorinstallation eines Ldap-Baums und Samba-Anbindung – man muss nur in Yast lange genug suchen und ein bischen kombinieren. Ich möchte mich auch nicht lange in LDAP-Spezifikas ergehen, wer näheres/spezielleres Wissen möchte sollte sich entweder ein Buch kaufen oder die vielfältige Doku im Internet aufsuchen. Auch der Aufbau der LDIF-Dateien ist mit Absicht recht einfach gehalten, damit nicht Ballast rumgeschleppt wird der nur verwirrt und letztlich nicht benutzt wird.

Der Anfang ist sehr einfach. Mit apt-get install slapd ldap-utils werden der LDAP-Server und die benötigten Utilities installiert. Dazu werden einige Fragen gestellt, welche die spätere Basis für den LDAP-Baum darstellen, man sollte hier also alles getippte doppelt kontrollieren denn Tippfehler nachträglich zu korigieren ist nervig und zudem zeitaufwendig. Begonnen wird mit der Frage nach der lokalen Domäne (siehe Screenshot). Eine TLD (also das .org) kann man machen, muss aber nicht. Wer es ohne macht, muss aber daran denken die hier abgelegt LDIF-Dateien zu ändern. Es folgt der Name der Organisation welches wiederum frei wählbar ist. Abschließend sollte man die Frage nach LDAPv2 mit Ja beantworten, wenn man beabsichtigt das Verzeichnis später als Adressbuch zu nutzen, einige Clients können noch kein LDAP-v3.

Nun ist der Server soweit konfiguriert und man könnte darauf zugreifen – könnte, weil der Baum, bis auf die Daten des Administrators, leer ist. Damit man sich anschauen kann was bis jetzt passiert ist benötigt man einen LDAP-Browser. Ich benutze hierzu im Moment Luma, ein Python-basiertes, mit allerlei nützlichen Plugins ausgestatteten GUI-Tool. Zum Einloggen benötigt mit den Administrativen-Account, welcher bei der Installation automatisch angelegt wurde, in diesen Beispiel heisst er cn=admin,dc=aumund,dc=org. Zum Zugreifen benötigt man ausserdem noch die Basis-DN, welche mit dc=aumund,dc=org benannt ist.

Als nächstes wird das Verzeichnis mit Daten zu gefüllt. Dies erfolgt normalerweise über sog. LDIF-Dateien in denen die benötigte Struktur mit den Objekten und Attributen enthalten sind. Die Grundstruktur des Verzeichnisses ist im Anhang des Artikel erhältlich. Sie trägt den Namen base.ldif, eine normale Textdatei in die man ruhig einmal reinschauen sollte. Importiert wird sie mit:

ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f base.ldif

Schaut man nun in den Baum erscheinen dort die Container Group und People, welche später die Benutzerdaten enthalten werden. Das LDIF des Benutzers (die Datei user.ldif im Anhang) sollte man auch eines Blickes würdigen. Hat man dies gemacht, wandert es mit

ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f user.ldif

in den LDAP-Baum. Gleiches gilt übrigens für group-ldif:

ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f group.ldif

Damit ist das Verzeichniss soweit fertig. Was noch fehlt ist das Passwort des Benutzers. Hier hat man die Wahl es auch via LDIF oder mit dem LDAP-Tool Luma zu setzen. Bei Luma wählt man im Plugin Usermanagement den Benutzer joern aus, klickt auf Passwort ändern, wählt ssha als Hashalgorithmus und gibt das gewünschte Passwort ein. Im Feld Passwort erscheint dann das verschlüsselte Kennwort, welches mit dem Disketten-Symbol neben der Plugin-Auswahl in den LDAP-Baum übernommen wird. Wer es “zu Fuss” erledigen möchte ruft auf der Shell

slappasswd -h {SSHA}

auf ein gibt dort das gewünschte Passwort ein. Anschließend setzt man das Ausgegebene per Copy&Paste in die Datei passwd.ldif hinter das Attribut userPassword: und schiebt dann diese Daten mit

ldapadd -x -D "cn=admin,dc=aumund,dc=org" -W -f passwd.ldif

in die Datenbank. Soweit so gut. Der Baum ist aufgebaut und ein Benutzer mit Passwort versorgt, nun muss noch das Betriebssystem auf diese Informationen zugreifen. Nach

apt-get install libnss-ldap

muss man ein paar Fragen beantworten, wie welchen Server (127.0.0.1) man benutzen möchte, wie der DN (dc=aumund,dc=org) heisst, welche LDAP-Version (v3) benutzt werden soll, ob man sich für eine Datenbank-Anfrage anmelden
soll (Nein) und ob die Datei /etc/libnss-ldap.conf nur vom Besitzer gelesen werden darf (Nein). Schaut man sich nun mit getent passwd/getent group die Benutzer/Gruppen an ist noch nichts zu erkennen. Dazu muss erst /etc/nsswitch.conf angepasst werden, damit sie anschließend so aussieht:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Und siehe da, getent zeigt den angelegten Benutzer/Gruppe aus dem LDAP-System mit an. Damit lässt sich aber noch nicht einloggen, denn dazu muss noch pam angepasst werden:

apt-get install libpam-ldap

installiert die nötigen Dateien. Als letztes müssen noch drei Dateien angepasst werden, damit pam auch wirklich auf LDAP zugreift. Zuerst muss die Datei /etc/pam.d/common-auth so angepasst werden, das sie nach den Kommentaren so ausschaut:

auth	sufficient	pam_ldap.so
auth    required        pam_unix.so nullok_secure use_first_pass

Für /etc/pam.d/common-account gilt, das an erster Stelle (nach den Kommentaren) folgendes eingefügt werden muss:

account sufficient      pam_ldap.so

Dies trifft auch auf /etc/pam.d/common-password zu:

password    sufficient  pam_ldap.so

Fertig. Nun kann man sich mit den im LDAP-Baum liegenden Benutzern anmelden und normal benutzen. Wenn man mehr Nutzer/Gruppen braucht, einfach die user.ldif und group.ldif anpassen und in den Baum importieren.

Man sollte allerdings daran denken, das die Nutzer noch kein Home-Verzeichniss haben, dies lässt sich mit

session required pam_mkhomedir.so  skel=/etc/skel umask=0022

in /etc/pam.d/common-session entweder automatisch erledigen oder man mounted es sich via NFS. Wie man das per LDAP und den Automounter erledigt kommt im nächsten Teil.

base.ldif
user.ldif
group.ldif
passwd.ldif

Referenzen:

http://cactuswax.net/docs/ldap.htm

LDAP für den Hausgebrauch – LDAP Editoren für Linux

Hier eine Übersicht:

  • Luma – Python-basierter LDAP-Editor mit Plugin-Support
  • JXplorer – In Java geschriebener sehr mächtiger LDAP-Editor
  • GQ – LDAP-Editor mit GTK-Oberfläche
  • LDAP Browser/Editor – Ebenfalls in Java implementiert
  • phpldapadmin – Web-basierter LDAP-Client in PHP

Mein Favorit ist im Moment Luma (s.o.). Er bietet nette Plugins, wie ein Adressbuch oder einen Benutzer-Editor was die tägliche Arbeit sehr erleichtern kann. Sicher kein Tool für die Verwaltung grosser LDAP-Umgebungen, aber darum geht es hier ja nicht.

LDAP für den Hausgebrauch

Mir ist die Tage meine Kanotix-Installation kaputt gegangen, das EXT3 hatte es zerrissen – warum auch immer. Die Neuinstallation hat nicht lange gedauert, aber das Nachziehen von Benutzern, Gruppen und NFS-Mounts um vernünftig auf meinen Server zugreifen zu können nervte dann doch. Also stellte ich mir die Frage ob man das nicht vereinfachen könnte. Ich probiere öfters neue Dinge aus und da wäre es schon eine feine Sache schnell diese Informationen zur Verfügung zu haben. Also kam mir LDAP in den Sinn.

Verzeichnis-Dienste scheint allerdings noch ein mystischer Hauch zu umgeben. Es gibt zweifellos viele Anleitung für dies und das, ich habe aber nichts gefunden, was meine bescheidenen Wünsche komplett abdeckte:

  • Posix-User/-Gruppen Verwaltung
  • Samba-User/-Gruppen Verwaltung
  • Mail (SMTP,POP3,IMAP) Uterstützung
  • Automounter Unterstützung und vielleicht später
  • Open-Xchange Support

Ich werde mich also in der nächsten Zeit aufmachen und einmal versuchen da einen Dreh ranzubekommen und werde natürlich ausführlichst berichten.

Archiv