Tag-Archiv für 'openldap'

09
Mai

OpenLDAP unter Ubuntu installieren

Wer seinen eigenen kleinen Server mit diversen Diensten betreibt kennt das Dilemma: Jede Applikation speichert seine Benutzerdaten separat, so dass nach einer gewissen Zeit ein kleines Chaos entstehen kann. Hier springt OpenLDAP in die Bresche, liefert es doch einen so genannten Verzeichnisdienst für die zentrale Authentifizierung und kann auch als zentrales Adressbuch genutzt werden. Die beschriebene Installation kann unter Umständen auch auf andere Linux Derivate (vor allem Debian basierte Linux Distributionen) angewandt werden. Um Konfigurationsdatei, die eventuell in anderen Verzeichnissen abgelegt sind, schnell zu finden, kann locate verwendet werden.
Die Installation der Pakete ist mit dem Paketmanager schnell gemacht:

sudo  apt-get install slapd ldap-utils 

Dabei werden wir nach dem gewünschten Administrationspasswort gefragt. Nach der Installation läuft der LDAP Server bereits, was wir mit nmap leicht überprüfen können:

nmap localhost | grep ldap
389/tcp  open  ldap

Damit wir während der Konfiguration einfach auf die Debuginformationen zugreifen können, richten wir noch den Syslog Deamon für OpenLdap ein. Als erstes setzten wir den gewünschten Log Level, indem wir folgenden Wert in /etc/ldap/slapd.conf anpassen. Um den Wert des gewünschten Loglevels herauszufinden müssen wir in der Man Page nachschauen und die gewünschten Eigenschaften zusammenzählen:

man 5 slapd.conf

Dort suchen wir nach loglevel:

1      trace function calls
2      debug packet handling
4      heavy trace debugging
8      connection management
16     print out packets sent and received
32     search filter processing
64     configuration file processing
128    access control list processing
256    stats log connections/operations/results
512    stats log entries sent
1024   print communication with shell backends
2048   entry parsing

…und können uns nun den gewünschten Loglevel berechnen. Ich interessiere mich für die Verbindungen, Operationen und deren Resultat (256), die Suchfilter (32) und das Verbindungsmanagement (8), was zusammengezählt 296 ergibt. Also können wir nun den Loglevel setzen:

loglevel 296

Damit wir alle Ausgaben in einer eigenen Datei haben, fügen wir noch folgenden Eintrag in die Syslog-Konfigurationsdatei /etc/syslog.conf ein:

local4.debug /var/log/slapd.log

nach dem Neustart des LDAP und Syslog Deamons können wir nun alle Logeinträge mit tail -f /var/log/slapd.log beobachten.

Als nächstes müssen wir den Dienst noch an unsere Bedürfnisse anpassen. Dazu müssen wir uns für einen eindeutigen Namen für unser Verzeichnis entscheiden. Dieser eindeutige Name wird auch als DN (Distinguished Name) abgekürzt und identifiziert die oberste Ebene unseres Verzeichnisses (Root). In meinem Fall nehme ich einfach meine TLD netzpiraten.ch, was als dc=netzpiraten,dc=ch geschrieben wird. Eine andere Möglichkeit wäre z.B auch o=netzpiraten,c=ch (o für Organisation und c für Land).

Also editieren wir einfach /etc/ldap/slapd.conf und legen als erstes unseren DN fest, indem wir suffix anpassen.

suffix    "dc=netzpiraten,dc=ch"

Wir müssen dann auch konsequent alle nachfolgenden dc=nodomain durch dc=netzpiraten,dc=ch ersetzten. Damit wir auch einen ersten Eintrag in den LDAP Server speichern können, legen wir einen lokalen Administrator an:

rootdn "cn=admin,dc=netzpiraten,dc=ch"
rootpw {SSHA}B3MTCdJ+bDiAUUzMuhPzcrmKG33+8Wkj

Das Passwort können wir mit dem Hilsprogramm slappasswd erzeugen:

slappasswd
New password:
Re-enter new password:
{SSHA}B3MTCdJ+bDiAUUzMuhPzcrmKG33+8Wkj

Und schlussendlich muss noch der Server neu gestartet werden:

/etc/init.d/slapd restart

Der Server wäre nun bereit, jetzt müssen wir noch den Clients sagen wo unser LDAP Server zu finden ist. Dazu legen wir /etc/ldap/ldap.conf mit folgendem Inhalt an:

ldap_version 3
URI     ldap://ldap.netzpiraten.ch:389
SIZELIMIT       0
TIMELIMIT       0
DEREF           never
BASE dc=netzpiraten, dc=ch

Nun sind wir bereit die ersten Daten einzuspeisen, dazu legen wir eine LDIF Datei base.ldif an, welche wir mit folgenden Objekten füllen:

 dn:dc=netzpiraten,dc=ch
objectClass: dcObject
objectClass: organization
o: netzpiraten
dc: netzpiraten

Die einzelnen Objekte müssen zwingen mit einer Leerzeile voneinander getrennt sein!

dn:cn=admin,dc=netzpiraten,dc=ch
objectClass: organizationalRole
cn: admin

Nun verwenden wir ldapadd zum hinzufügen:

ldapadd -x -W -D cn=admin,dc=netzpiraten,dc=ch -f base.ldif
Enter LDAP Password:
adding new entry "dc=netzpiraten,dc=ch"
adding new entry "cn=admin,dc=netzpiraten,dc=ch"

Und können das Ergebnis gleich vom LDAP Server abfragen:

ldapsearch -x
# extended LDIF
#
# LDAPv3
# base <> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#
# netzpiraten.ch
dn: dc=netzpiraten,dc=ch
objectClass: dcObject
objectClass: organization
o: netzpiraten
dc: netzpiraten
# admin, netzpiraten.ch
dn: cn=admin,dc=netzpiraten,dc=ch
objectClass: organizationalRole
cn: admin
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2

Nun ist unser LDAP Server einsatzbereit! Damit wir uns den Objektbaum auch besser veranschaulichen können, installieren wir noch phpldapadmin. Ich gehe davon aus, dass bereits ein Apache am laufen ist. Somit ist die Installation ein Kinderspiel:

apt-get install phpldapadmin

Da phpmyadmin ein LDAP Client ist, haben wir bereits durch das anlegen der ldap.conf genügen angaben gemacht um uns gleich bei der Webapplikation anzumelden. Einfach im Webbrowser den Pfad /phpldapadmin/htdocs/index.php öffnen.

phpLDAPadmin

Leider werden nun alle Passwörter im Klartext an den LDAP Server gesendet, was wiederum ein Sicherheitsrisiko ist. Darum aktivieren wir TLS damit alle Daten verschlüsselt werden in der Client-Server Kommunikation. In diesem Beispiel gehe ich davon aus, dass der Server bereits ein Zertifikat von cacert hat. In dem Fall ist eine der LDAP Server schnell konfiguriert, indem man /etc/ldap/slapd.conf folgendermassen anpasst:

TLSCACertificateFile   /etc/ssl/certs/cacert.org.pem
TLSCertificateFile      /etc/ssl/netzpiraten/netzpiraten.crt
TLSCertificateKeyFile   /etc/ssl/netzpiraten/netzpiraten.key

Als nächstes muss nur noch die Client Konfiguration in /etc/ldap/ldap.conf angepasst werden:

TLS_CACERT /etc/ssl/certs/cacert.org.pem
TLS_REQCERT demand



September 2010
M D M D F S S
« Jun    
 12345
6789101112
13141516171819
20212223242526
27282930  

Werbung


Buttonitis