LDAP
OpenNewsNetwork benutzt LDAP zur Authentifizierung von Benutzern.
- LDAP-Authentication beschreibt die Konfiguration von inn-ldapcheck, dem LDAP-Client.
- In LDAP-Server geht es um die Einrichtung eines eigenen LDAP-Servers
- LDAP-Import zeigt, wie man die Daten des Master-LDAP manuell kopiert
- LDAPLastloginUpdate
- PAM LDAP User Authentifizierung
- Die Installation eines darauf aufbauenden Web-Frontends zur Administration ist Inhalt von PhpLDAPadmin
Zunächst braucht man aber ein LDAP-Benutzerkonto mit Administratorrechten, um auf die Benutzerdatenbank von OpenNewsNetwork zugreifen zu können. Derzeit ist Michael Bussmann der erste Anlaufpunkt dafür.
Master & Slave
Es gibt einen primären LDAP-Server. Dieser verteilt seinen Datenstand automatisch an sekundäre Server. Zur Lastverteilung hat Jörn einen DNS-Round-Robin-Namen eingerichtet. Dieser wechselt rythmisch zwischen allen Servern (siehe ).
Master: ldap1.open-news-network.org
DNS-Round-Robin: auth.open-news-network.org
Änderungen von Benutzerkonten müssen am Master gemacht werden. In die readers.conf sollte man aber den DNS-Round-Robin eintragen.
Anlegen neuer Benutzer mit phpLDAPadmin
Am einfachsten geht das durch Duplizieren eines bestehenden Benutzerkontos.
Nach dem Login sieht die letzte Zeile im linken Frame so aus:
dc=open-news-network,dc=org
Durch anklicken wird die dahinter stehende Liste aller Konten aufgeklappt. Einträge, die mit cn= beginnen, haben administrative Rechte. Mit uid= beginnen einfache Benutzer.
Durch Anklicken einer solchen Zeile erhält man im rechten Frame die Details des Benutzerkontos. Durch Copy this entry wird der Eintrag dupliziert. Anschließend ändert man in der Detailansicht des neuen Eintrags.
Für die Kodierung des Passworts wird CRYPT verwendet.
Prüfung des Passworts
phpLDAPadmin bietet dazu in der Detailansicht die Funktion Check password...
Auf der Kommandozeile lässt sich das etwa so machen:
ldapsearch -H ldap://ldap1.open-news-network.org/ -x -D "uid=alexander.bartolich,dc=open-news-network,dc=org" -W
Aufpassen muss man auf die Unterscheidung zwischen cn= und uid=. Dieses Prefix ist Teil des Kontonamens.
Einführung in die Welt der Kommandozeile
Das Paket ldap-utils enthält einige Werkzeuge zum Anlegen, Ändern und Löschen von Einträgen in der LDAP-Datenbank. Ihre Anwendung erfordert allerdings recht lange Kommandozeilen. Dahinter steckt aber ein System.
Distribution Paket
Debian 4 ldap-utils
Fedora 10 openldap-clients
Ubuntu 8.04 ldap-utils
Login
In der LDAP-Terminologie wird statt »Login« der Begriff »Bind« verwendet. Die Funktionalität ist aber die selbe: man präsentiert Benutzernamen und Passwort und erhält dafür Zugang. Das verwirrende dabei ist sind die extrem langen Benutzernamen und die Vielfalt der Authentisierungsverfahren, die LDAP unterstützt. Im OpenNewsNetwork sieht der Login immer so aus:
-x -D "cn=admin,dc=open-news-network,dc=org" -W
^^^^^^^^
Der unterstrichene Teil ist variabel, der Rest konstant. Achtung: cn=admin und uid=admin sind zwei verschiedene Konten.
searchbase
Momentan ist die Benutzerliste von OpenNewsNetwork flach. Es gibt nur einen sinnvollen Startpunkt für Suchoperationen mit ldapsearch. Allerdings erhält man kein Ergebnis, wenn man diesen Punkt vergisst.
-b 'dc=open-news-network,dc=org'
Am besten konfiguriert man diese Einstellung darum fix in /etc/ldap/ldap.conf. Es reicht eine Zeile:
BASE dc=open-news-network,dc=org
ldapuri
Mit dieser Option wählt man Rechnernamen und Portnummer des zu bearbeitenden LDAP-Servers.
-H ldap://ldap1.open-news-network.org
Diese Einstellung lässt sich ebenfalls fix in /etc/ldap/ldap.conf einstellen.
URI ldap://ldap1.open-news-network.org
Konkrete Beispiele auf der Kommandozeile
Die folgenden Beispiele setzen vernünftige Werte für BASE und URI in der Datei /etc/ldap/ldap.conf voraus. Im einfachsten Fall:
BASE dc=open-news-network,dc=org
URI ldap://ldap1.open-news-network.org
Der Benutzer cn=ICH_DARF_DAS steht für ein Administrator-Konto, der Teilnehmern des OpenNewsNetwork eingerichtet wird (siehe oben). Der Benutzer uid=TESTUSER steht für das Konto eines normalen Benutzers.
Ändern eines Passworts
Die folgende Zeile generiert ein zufälliges Passwort, schreibt es auf die Standardausgabe, und setzt es.
ldappasswd -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W "uid=TESTUSER,dc=open-news-network,dc=org"
Hängt man die Option -S an, kann man das Passwort auch interaktiv eingeben.
Alle Konten auflisten (LDIF-Export)
ldapsearch -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W
Anlegen eines Benutzer
ldapadd -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W -f BENUTZER.ldif
Wobei die Datei BENUTZER.ldif so aussieht:
dn: uid=irgendwer@irgendwo.xyz,dc=open-news-network,dc=org
cn: Example
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: People
uid: irgendwer@irgendwo.xyz
givenName: Manfred Mustermann
sn: ManfredMustermann
Als User ID fungiert eine gültige E-Mail-Adresse. Das Attribut sn unterscheidet sich von givenName durch dir entfernten Leerzeichen. Das Passwort wird in einem zweiten Arbeitsgang mit ldappasswd gesetzt. Auf diese Weise landet dann ein Hash in der LDAP-Datenbank, nicht das Passwort im Klartext.