Suche im Katalog
Linux Netzwerker-Handbuch

Linux Netzwerker-Handbuch


Tony Bautts, Terry Dawson & Gregor N. Purdy
3. Auflage Juli 2005
ISBN 3-89721-414-8
382 Seiten
Weitere Informationen zur gedruckten Version des Buches finden Sie unter:
www.oreilly.de/catalog/linag3ger/

Zur Übersicht aller OpenBooks


TOC PREV NEXT INDEX

Kapitel 17

OpenLDAP

OpenLDAP ist eine frei verfügbare Open Source-LDAP-Lösung, die auf einer Vielzahl unterschiedlicher Plattformen kompiliert werden kann. Unter Linux ist es das momentan am weitesten verbreitete und am besten unterstützte kostenlose LDAP-Produkt. Es bietet die Leistung und die erwartete Funktionalität vieler kommerzieller Lösungen, zeigt darüber hinaus aber auch noch eine gewisse Flexibilität, da die Quellen offen sind und angepasst werden können. In diesem Abschnitt werden wir sowohl mögliche Anwendungen für einen OpenLDAP-Server besprechen als auch die Installation und Konfiguration beschreiben.

LDAP verstehen

Bevor wir weitermachen, ist eine kurze Erklärung von LDAP erforderlich. Das Lightweight Directory Access Protocol (LDAP) ist ein Verzeichnisdienst, mit dem man nahezu alles speichern kann. Auf diese Weise ist es einer Datenbank sehr ähnlich. Allerdings ist es dafür gedacht, nur kleine Datenmengen aufzunehmen. Es ist für eine schnelle Suche nach Datensätzen optimiert. Ein perfektes Beispiel einer Anwendung, für die LDAP geeignet ist, ist eine PKI-Umgebung. Diese Art der Umgebung speichert nur minimale Mengen an Informationen und ist schnell zugreifbar.

Am einfachsten lässt sich die Struktur von LDAP erläutern, wenn Sie sich diese als einen Baum vorstellen. Jedes LDAP-Verzeichnis beginnt mit einem Root-Eintrag. Von diesem Eintrag gehen Zweige aus, von diesen Zweigen wiederum weitere Zweige, jeder mit der Fähigkeit, eine Information aufzunehmen. Ein Beispiel für einen LDAP-Baum sehen Sie in Abbildung 17-1.
Abbildung 17-1
Beispiel für einen LDAP-Baum

Ein anderer wichtiger Unterschied zwischen LDAP und normalen Datenbanken besteht darin, dass LDAP auf Interoperabilität ausgelegt ist. LDAP verwendet vordefinierte Schemata oder Datensätze, die bestimmte Bäume gestalten. Die X.500-Struktur wird durch RFC 2253 beschrieben und enthält folgende Einträge:

String X.500 AttributeType
------------------------------
CN commonName
L localityName
ST stateOrProvinceName
O organizationName
OU organizationalUnitName
C countryName
STREET streetAddress
DC domainComponent
UID userid

Ein weiteres nützliches Schema ist inetOrgPerson. Es soll Personen innerhalb einer Organisationsstruktur repräsentieren und enthält Werte wie Telefonnummern, Adressen, Benutzer-IDs und sogar Fotos der Angestellten.

Namenskonventionen für Daten

LDAP-Einträge werden im Verzeichnis als Relative Distinguished Names (RDN) gespeichert; einzelne Einträge werden über ihre Distinguished Names (DN) angesprochen. Beispielsweise könnte der Benutzer Bob Jones folgenden RDN haben:

cn=BobJones

Und sein DN könnte so aussehen:

c=us,st=California,o=VirtualBrewery,ou=Engineering,cn=BobJones

Dieser Abschnitt kratzt zwar kaum an der Oberfläche der Gesamtheit von LDAP, dient aber zumindest als notwendiger Hintergrund, um OpenLDAP zu installieren und in Gang zu setzen. Eine detailliertere Sicht auf LDAP erhalten Sie im RFC 2251, »The Lightweight Directory Access Protocol (v3)«.

OpenLDAP beziehen

Die aktuelle Heimat von OpenLDAP ist http://www.openldap.org. Alle aktuellen stabilen und Beta-Versionen können Sie zusammen mit einer »Issue Tracking«-Engine von dieser Site beziehen. (Die »Issue Tracking«-Engine dient dazu, Fehler zu melden, die Ihnen eventuell auffallen.)

Es besteht immer die Versuchung, Beta-Versionen herunterzuladen und zu benutzen, vor allem, weil diese eine verbesserte Funktionalität versprechen. Wenn Sie die Software aber nicht auf einem Test-Server installieren, ist es am besten, nachweislich stabile Versionen zu benutzen.

Nachdem Sie das Quellarchiv heruntergeladen und ausgepackt haben, sollten Sie im Allgemeinen als Nächstes kurz die README-Dateien lesen, die innerhalb des Archivs enthalten sein können. Die fünf Minuten, die Sie mit dem Lesen dieser Dateien verbringen, kommen Ihnen um ein Vielfaches zugute, sollten während der Installation Probleme auftreten.

Abhängigkeiten

Wie andere Software-Pakete ist auch OpenLDAP nicht ohne Abhängigkeiten. Mit OpenLDAP müssen Sie die neueste Version von OpenSSL installiert und konfiguriert haben. Falls Sie dieses Paket noch nicht haben, können Sie es zusammen mit den nötigen Installationsanweisungen unter http://www.openssl.org finden.

SASL von Cyrus ist ebenfalls für OpenLDAP erforderlich. Wie der Name schon andeutet, stellt die Simple Authentication and Security Layer (SASL; etwa: Einfache Authentifizierungs- und Sicherungsschicht) ein einfach zu bedienendes Sicherheits-Framework zur Verfügung. In vielen Linux-Distributionen ist dieses Paket bereits von vornherein installiert. Sollten Sie es selbst installieren müssen, besorgen Sie es sich unter http://asg.web.cmu.edu/sasl/sasl-library.html oder verwenden Sie eine Paket-Suchmaschine wie RPMfind.

OpenLDAP unterstützt Kerberos als eine Möglichkeit, es ist aber nicht unbedingt erforderlich. Falls Sie in Ihrer Umgebung momentan Kerberos verwenden, sollten Sie sicherstellen, dass Sie es auf Ihrer OpenLDAP-Server installiert haben. Falls Sie Kerberos zurzeit nicht benutzen, bringt es nicht viel, es extra für OpenLDAP zu aktivieren. Es gibt viele frei verfügbare Informationen über Kerberos, anhand derer Sie entscheiden können, ob Sie es aktivieren wollen oder nicht.

Eine weitere optionale Komponente dient der OpenLDAP-Backend-Database (BDB). Um BDB benutzen zu können, benötigen Sie so etwas wie die BerkeleyDB von Sleepycat Software. Dabei handelt es sich um ein häufig eingesetztes Paket, das in vielen Linux-Distributionen standardmäßig installiert wird. Falls dieses Paket auf Ihrem System fehlt, können Sie es unter http://www.sleepycat.com finden. Alternativ gibt es auch andere BDBs. Beispielsweise könnte MySQL für Ihre Umgebung passen. Letztlich handelt es sich dabei um eine Frage der persönlichen Vorlieben - für die meisten Benutzer ist die vorgegebene OpenLDAP-Datenbank akzeptabel.

OpenLDAP kompilieren

Das Kompilieren von OpenLDAP ist relativ einfach, sobald Sie die Optionen festgelegt haben, die für die Software aktiviert werden sollen. Mit dem configure-Programm erhalten Sie eine Liste der verfügbaren Optionen. Eine Option, die Sie möglicherweise aktivieren wollen, ist -with-tls. Damit wird die SSL-Unterstützung in OpenLDAP aktiviert, auf die wir später in diesem Kapitel eingehen.

vlager# ./configure -with-tls
Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
Restrictions apply, see COPYRIGHT and LICENSE files.
Configuring OpenLDAP 2.1.22-Release ...
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for a BSD compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for mawk... no
checking for gawk... gawk
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking for gnutar... no
checking for gtar... no
.
.
vlager#

Nachdem Sie das makefile konfiguriert haben, besteht der nächste Schritt darin, das Paket zu kompilieren. Bei den meisten Programmen wird in diesem nächsten Schritt make ausgeführt. Beim Kompilieren von OpenLDAP wird jedoch empfohlen, zuerst ein make depend auszuführen. Das Konfigurationsskript erinnert Sie sogar daran, falls Sie es vergessen sollten.

Wenn die Abhängigkeiten kompiliert wurden, können Sie beruhigt den Befehl make aufrufen und darauf warten, dass die Software kompiliert wird. Nach Abschluss der Kompilierung wollen Sie vermutlich überprüfen, ob alles gut gegangen ist. Der Befehl make test führt eine Reihe von Tests aus und informiert Sie über Probleme, die bei der Kompilierung aufgetreten sind.

Wenn alles erfolgreich abgelaufen ist, können Sie sich nun als root anmelden und die Software automatisch installieren, indem Sie den Befehl make install aufrufen. Standardmäßig platziert OpenLDAP seine Konfigurationsdateien im Verzeichnis /usr/local/etc/openldap. Bei manchen Distributionen müssen diese Dateien aus Gründen der Konsistenz in /etc/openldap gespeichert werden. Die entsprechende Option wird in der ./configure-Kommandozeile angegeben.

Konfiguration des OpenLDAP-Servers

Wenn Sie die Installation der Software beobachtet haben, dann haben Sie vielleicht bemerkt, dass sie zwei Programme erzeugt hat, nämlich slapd und slurpd. Dabei handelt es sich um zwei Dämonen, die in einer OpenLDAP-Installation verwendet werden.

Um zu verstehen, wie Sie den OpenLDAP-Server konfigurieren müssen, schauen Sie sich zuerst seine Konfigurationsdateien an. Auf unserem Beispiel-Host vlager haben wir die Konfigurationsskripten im Verzeichnis /usr/local/etc/openldap gespeichert. Wenn wir uns die Datei slapd.conf ansehen, sehen wir einige Stellen, die angepasst werden müssen. Es ist notwendig, die folgenden Werte zu aktualisieren, damit sie für Ihre Site passen:

include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema

database ldbm
suffix "o=vbrew"
suffix "dc=ldap,dc=vbrew,dc=com"
rootdn "cn=JaneAdmin,o=vbrew"
rootpw secret
directory /usr/local/var/openldap-vbrew
defaultaccess read
schemacheck on
lastmod on

Sie sollten außerdem das rootpw von secret auf einen Wert ändern, der Ihnen sinnvoll erscheint. Dieses Kennwort benötigen Sie, um Änderungen an Ihrem LDAP-Verzeichnis vornehmen zu können.

Wenn Sie diese Änderungen ausgeführt haben, können Sie den OpenLDAP-Server starten. Darauf gehen wir im nächsten Abschnitt ein.

OpenLDAP ausführen

Der eigenständige OpenLDAP-Server heißt slapd und ist, falls Sie die vorgegebenen Pfade nicht geändert haben, in /usr/local/libexec/ installiert worden. Dieses Programm wartet einfach am LDAP-Port (TCP 389) auf eingehende Verbindungen und verarbeitet die Anforderungen dann entsprechend. Da dieser Prozess auf einem reservierten Port läuft, müssen Sie ihn mit root-Berechtigungen starten. Am schnellsten geht das folgendermaßen:

vlager# su root -c /usr/local/libexec/slapd

Um zu überprüfen, ob der Dienst gestartet wurde, können Sie netstat bemühen. Damit stellen Sie fest, dass der Dienst an Port 389 lauscht:

vlager# netstat -aunt | grep 389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN

An dieser Stelle sollten Sie außerdem überprüfen, ob der Dienst selbst funktioniert, indem Sie mit dem Befehl ldapsearch eine Anfrage an ihn richten:

vlager# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
version: 2

#
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=vbrew,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
vlager#

Diese Anfrage soll eine Wildcard-Suche in Ihrer Datenbank ausführen. Sie muss deshalb alles abrufen, was Sie in der Datenbank gespeichert haben. Falls Ihre Konfiguration richtig abgeschlossen wurde, sehen Sie Ihren eigenen Namen im dc-Feld.

Einträge in Ihr Verzeichnis aufnehmen

Wenn der LDAP-Server nun betriebsbereit ist, können Sie einige Datensätze eintragen. OpenLDAP besitzt ein Dienstprogramm namens ldapadd, das Datensätze in Ihre LDAP-Datenbank aufnimmt. Das Programm akzeptiert nur Informationen aus LDIF-Dateien (LDAP Data Interchange Format), um also einen Datensatz hinzufügen zu können, müssen Sie eine solche Datei anlegen. Nähere Informationen über das LDIF-Dateiformat finden Sie im RFC 2849. Glücklicherweise ist das Erzeugen von LDIF-Dateien sehr einfach - eine Beispieldatei sieht so aus:

# Die Virtuelle Brauerei
dn: dc=vbrew,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: VirtualBrew Corporation
description: Die Virtuelle Brauerei

# Organisatorische Informationen für Directory Manager
dn: cn=Manager,dc=vbrew,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: dc=ldap,dc=vbrew,dc=com
objectClass: top
objectClass: dcObject
objectClass: orginization
dc: vbrew
o: vbrew
description: LDAP-Domain der Virtuellen Brauerei

dn: o=vbrew
objectClass: top
objectClass: organization
o: vbrew
description: Virtuelle Brauerei

dn: cn=JaneAdmin,o=vbrew
objectClass: organizationalRole
cn: JaneAdmin
description: Linux System Admin Guru

dn: ou=Marketing,o=vbrew
ou: Marketing
objectClass: top
objectClass: organizationalUnit
description: Die Marketing-Abteilung

dn: ou=Engineering,o=vbrew
ou: Engineering
objectClass: top
objectClass: organizationalUnit
description: Das Wartungsteam

dn: ou=Brewers,o=vbrew
ou: Brewers
objectClass: top
objectClass: orginazationalUnit
description: Die Brauer

dn: cn=Joe Slick,ou=Marketing,o=vbrew
cn: Joe Slick
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: jslick@vbrew.com
firstname: Joe
lasname: Slick
ou: Marketing
uid: 1001
postalAddress: 10 Westwood Lane
l: Chicago
st: IL
zipcode: 12394
phoneNumber: 312-555-1212

dn: cn=Mary Smith,ou=Engineering,o=vbrew
cn: Mary Smith
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: msmith@vbrew.com
firstname: Mary
lasname: Smith
ou: Engineering
uid: 1002
postalAddress: 123 4th Street
l: San Francisco
st: CA
zipcode: 12312
phoneNumber: 415-555-1212

dn: cn=Bill Peris,ou=Brewing,o=vbrew
cn: Bill Peris
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
mail: per@vbrew.com
firstname: Bill
lasname: Peris
ou: Brewing
uid: 1003
postalAddress: 8181 Binary Blvd
l: New York
st: NY
zipcode: 12344
phoneNumber: 212-555-1212

Sobald die LDIF-Datei fertig ist, wird sie mit dem folgenden Befehl zum LDAP-Verzeichnis hinzugefügt:

vlager# ldapadd -x -D "cn=Manager,dc=vbrew,dc=com" -W -f goo.ldif
Enter LDAP Password:
adding new entry "dc=vbrew,dc=com"

adding new entry "cn=Manager,dc=vbrew,dc=com"

vlager#

Sie können mit dem bereits beschriebenen ldapsearch-Befehl nach Ihren neuen Verzeichniseinträgen suchen.

OpenLDAP benutzen

Es gibt eine ganze Reihe von Anwendungen für einen LDAP-Server - zu viele, um sie alle zu erwähnen. Für Linux-Administratoren gehört die Authentifizierung auf jeden Fall zu den nützlicheren Einsatzgebieten. Einen Administrator, der viele verschiedene Maschinen zu betreuen hat, kann die Verwaltung der Kennwörter und Authentifizierungsmechanismen für eine große Anzahl von Benutzern sehr schnell entmutigen. Mit einem OpenLDAP-Verzeichnis können die Benutzerzugänge für eine Gruppe von Systemen zentral verwaltet werden, wodurch es einem Administrator ermöglicht wird, Benutzerzugänge schnell und effizient zu aktivieren oder zu deaktivieren - ein Vorgang, der sehr lästig werden kann, wenn er auf mehreren Systemen ausgeführt werden muss.

Um das zu konfigurieren, müssen zunächst die LDAP-NSS- und PAM-Bibliotheken installiert werden. Unter Linux führen NSS und PAM die Authentifizierung durch und teilen dem System mit, wo es nachsehen soll, um Benutzer zu verifizieren. Es müssen zwei Pakete installiert werden, pam_ldap und nss_ldap. Diese finden Sie unter http://www.padl.com/OSS im Unterbereich Software. Die meisten Distributionen enthalten Pakete dafür; diese sind oft kombiniert und mit libnss-ldap benannt. Sie können auch eine Installation aus den Quellen vornehmen. Das Kompilieren dieser Software ist recht einfach und folgt der Standardmethode mit configure, make install. Sie müssen diese Bibliotheken nicht nur auf dem LDAP-Server, sondern auch auf Ihren Client-Maschinen installieren.

Wenn diese Bibliotheken installiert worden sind, können Sie damit beginnen, Ihren slapd-OpenLDAP-Prozess zu konfigurieren. Sie müssen einige Änderungen an Ihrer slapd.conf-Datei vornehmen, ähnlich denen, die wir bereits erwähnt haben. Der Schema-Abschnitt ist in der Form ausreichend, in der er zuvor konfiguriert wurde. Sie müssen jedoch einige neue Definitionen in den Datenbank-Abschnitt aufnehmen.

#######################################################################
# ldbm-Datenbankdefinitionen
#######################################################################

database ldbm
suffix "o=vbrew,dc=com"
rootdn "uid=root,ou=Engineering,o=vbrew,dc=com"
rootpw secret
directory /usr/local/etc/openldap/data
# Zu pflegende Indizes
index objectClass,uid,uidNumber,gidNumber eq
index cn,mail,surname,givenname eq,subinitial

Dieser Abschnitt erzeugt die Verzeichnisdefinitionen für die Struktur, in der Sie Ihre Benutzerdaten ablegen.

Zugriffssteuerungslisten (ACLs) hinzufügen

Da diese Art von Verzeichnis für anonyme Benutzer nicht schreibbar sein soll, bietet es sich an, irgendeine Form von Zugriffssteuerungsliste (Access Control List; ACL) hinzuzufügen. Glücklicherweise lässt sich diese Art der Steuerung in OpenLDAP sehr einfach erreichen.

# Access Control List - einfach
#

access to dn=".*,ou=Engineering,o=vbrew,dc=com"
attr=userPassword
by self write
by dn="uid=root,ou=Engineering,o=vbrew,dc=com" write
by * auth

access to dn=".*,o=vbrew,dc=com"
by self write
by dn="uid=root,ou=Engineering,o=vbrew,dc=com" write
by * read

access to dn=".*,o=vbrew,dc=com"
by * read

defaultaccess read

Diese Liste führt eine einfache Sperre des Verzeichnisses aus und erschwert das Schreiben in das Verzeichnis. Sobald diese Konfiguration abgeschlossen wurde, können Sie den OpenLDAP-Dämon sicher starten (oder neu starten).

Auf LDAP-Authentifizierung umstellen

Sie haben nun Ihr leeres Verzeichnis erzeugt, das auf Eingaben und Abfragen wartet. Für Administratoren, die Hunderte oder Tausende von Benutzerzugängen auf mehreren Maschinen haben, mag der nächste Schritt, das Migrieren der Authentifizierungsdaten in das Verzeichnis, wie ein Albtraum klingen. Glücklicherweise gibt es Werkzeuge, die einzig dazu da sind, bei diesem potenziell schwierigen Schritt zu assistieren. Die OpenLDAP-Migrationswerkzeuge von http://www.padl.com/OSS erleichtern die Aufgabe, die LDAP-Datenbank aus bestehenden /etc/passwd-Dateien zu bevölkern. Die Distributionen oder Pakete setzen die Dateien wahrscheinlich in das Verzeichnis /usr/share, Sie sollten aber für genauere Informationen sicherheitshalber noch einmal in die Dokumentation Ihres Pakets schauen.

Damit diese Skripten richtig funktionieren, müssen Sie an einem von ihnen kleinere Änderungen vornehmen. Als Erstes müssen Sie migrage_common.ph aktualisieren. Suchen Sie die folgenden Zeilen:

#Default DNS domain
$DEFAULT_MAIL_DOMAIN = "padl.com";

#Default base
$DEFAULT_BASE = "dc=padl,dc=com";

Ersetzen Sie sie durch die Werte, die für Ihre Umgebung zutreffen. In unserem Beispiel wäre das:

$DEFAULT_MAIL_DOMAIN = "vbrew.com";
$DEFAULT_BASE = "o=vbrew,dc=com";

Überprüfen Sie nun, ob Ihr OpenLDAP-Server auf Verbindungen wartet und ob Sie die Änderungen an der Migrationskonfigurationsdatei gesichert haben. Wenn all das abgeschlossen ist, können Sie nun migrate_all_online.sh ausführen. Dieses Skript beginnt damit, Ihre /etc/passwd-Einträge in Ihr LDAP-Verzeichnis zu verschieben.

vlager# ./migrate_all_online.sh
Enter the Name of the X.500 naming context you wish to import into: [o=vbrew, dc=com]
Enter the name of your LDAP server [ldap]: vlager
Enter the manager DN: [cn=manager,o=vbrew,dc=com] cn=root,o=vbrew,dc=com
Enter the credentials to bind with: password
Importing into o=vbrew,dc=com...
Creating naming context entries...
Migrating aliases...
Migrating groups...
.
.
vlager#

Sie werden nun feststellen, dass alle Ihre /etc/passwd-Einträge automatisch in Ihr LDAP-Verzeichnis eingetragen wurden. Möglicherweise wollen Sie ja das Abfragewerkzeug ldapsearch einsetzen, um einige Ihrer Einträge zu sehen. Da Ihr Verzeichnisdienst jetzt betriebsbereit ist und auch Benutzereinträge enthält, müssen Sie die Clients für die Abfrage des LDAP-Servers konfigurieren. Darauf gehen wir im nächsten Abschnitt ein.

LDAP-Client-Konfigurationen

Linux-Distributionen sind standardmäßig so konfiguriert, dass sie zum Zwecke der Authentifizierung in die Datei /etc/passwd schauen. Diese Standardoption lässt sich leicht konfigurieren, sobald - wie bereits beschrieben - die nss-ldap- und PAM-Bibliotheken installiert sind. Die erste der Konfigurationsdateien, die geändert werden muss, ist die Datei /etc/nsswitch.conf. Sie müssen das System einfach anweisen, das LDAP abzufragen.

passwd: files ldap
group: files ldap
shadow: files ldap

Sie werden sich vielleicht fragen, weshalb wir den files-Eintrag in der Konfiguration gelassen haben. Es wird dringend empfohlen, diesen Eintrag dort zu belassen, damit Benutzer wie root auch dann noch darauf zugreifen können, wenn mit dem LDAP-Server etwas nicht stimmt. Falls Sie diese Zeile löschen und der LDAP-Server ausfällt, werden Sie aus all Ihren Systemen ausgesperrt! An dieser Stelle erweist sich natürlich das Vorhandensein mehrerer Server als praktisch. Die Replikation zwischen LDAP-Servern ist möglich und relativ einfach. Informationen über das Aufbauen von OpenLDAP-Sicherungsservern finden Sie in den OpenLDAP-HOWTOs auf der Website des Linux Documentation Project.

Bei manchen Linux-Distributionen (zum Beispiel Debian) befindet sich die Client-Konfiguration in /etc/openldap.conf. Verwechseln Sie diese nicht mit den Server-Konfigurationsdateien, die in /etc/openldap zu finden sind.

Die nächste Datei, die Sie modifizieren müssen, ist die Datei openldap.conf. Wie bei den anderen Konfigurationsdateien variiert der Standort dieser Datei in den verschiedenen Distributionen. Diese Datei ist sehr einfach und besitzt nur einige konfigurierbare Optionen. Sie müssen sie aktualisieren, damit sie den URI Ihres LDAP-Servers und Ihre grundlegenden LDAP-Informationen wiedergibt.

URI ldap://vlager.vbrew.com
BASE o=vbrew,dc=com

Sie sollten nun eine LDAP-Abfrage auf einer Ihrer Client-Maschinen versuchen.

client$ ldapsearch -x 'uid=bob'
version: 2
#
# filter: uid=bob
# requesting: ALL
#

# bob,Engineering,vbrew,com
dn: uid=bob,ou=Engineering,o=vbrew,c=com
uid: bob
cn: bob
sn: bob
mail: bob@vbrew.com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1003
homeDirectory: /home/bob
gecos: bob

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

client$

Falls Ihre Abfrage einem der obigen Einträge ähnelt, wissen Sie, dass Ihre Abfragen funktionieren. Ihr OpenLDAP-Server ist nun voll ausgestattet, kann von Client-Maschinen aus abgefragt werden und ist bereit für den harten Einsatz.

SSL zu OpenLDAP hinzufügen

Da LDAP als sichere und effiziente Methode zum Anbieten kleiner Datenmengen geschaffen wurde, läuft es standardmäßig im Klartext. Das mag für bestimmte Anwendungen in Ordnung sein. Irgendwann jedoch werden Sie den Datenstrom verschlüsseln wollen. Dadurch wird die Vertraulichkeit Ihrer Verzeichnisabfragen gewahrt; Angreifern wird es schwerer gemacht, Informationen über Ihr Netzwerk zu erlangen. Falls Sie LDAP für irgendeine Art der Authentifizierung benutzen, wird Verschlüsselung sehr empfohlen.

Falls Sie Ihr OpenLDAP beim Kompilieren mit der Option -with-tls konfiguriert haben, kann Ihr Server SSL benutzen. Falls nicht, müssen Sie OpenLDAP erneut kompilieren, bevor Sie fortfahren können.

Das Hinzufügen von SSL zu OpenLDAP erfordert nur ein paar einfache Änderungen an der OpenLDAP-Konfigurationsdatei. Sie müssen OpenLDAP mitteilen, welche SSL-Verschlüsselung Sie benutzen wollen und wo sich die SSL-Zertifikats- und Schlüsseldateien befinden werden, die Sie später noch anlegen.

TLSCipherSuite HIGH:MEDIUM:+SSLv3
TLSCertificateFile /etc/ssl/certs/slapd.pem
TLSCertificateKeyFile /etc/ssl/certs/slapd.pem

In diesem Fall haben wir festgelegt, dass unsere OpenSSL-Zertifikate im Verzeichnis /etc/ssl gespeichert werden. Bei den einzelnen Distributionen ist das unterschiedlich; Sie können allerdings eine beliebige Stelle zum Ablegen der Zertifikate wählen. Wir haben außerdem die Art der Verschlüsselung angegeben. Beachten Sie, dass Sie dabei eine Reihe von Möglichkeiten haben; entscheiden Sie sich für die Methode, die Ihnen am besten gefällt. Da der Server bei einem Neustart nun Zertifikatsdateien vorzufinden erwartet, müssen wir diese anlegen. Informationen darüber, wie Sie dabei vorzugehen haben, finden Sie in früheren Abschnitten dieses Buches bzw. in der OpenSSL-Dokumentation.

Es ist wichtig festzustellen, dass dabei ein selbstsigniertes Zertifikat erzeugt wird und keines, das von einem Zertifikatsanbieter erworben wurde. Wenn ein LDAP-Client die Gültigkeit Ihres Zertifikats überprüfen würde, würde er wahrscheinlich einen Fehler ausgeben; ebenso wie ein Webbrowser, wenn er ein Zertifikat entdeckt, das nicht von einer dritten Partei signiert wurde. Die meisten LDAP-Clients prüfen jedoch die Gültigkeit der Zertifikate nicht, so dass hier wahrscheinlich kaum Probleme auftreten. Falls Sie Wert auf ein Zertifikat von einer externen Autorität legen, können Sie sich an viele unterschiedliche Anbieter wenden.

Bevor Sie Ihren Server neu starten, müssen Sie sicherstellen, dass Ihre Zertifikate nur von Ihrem LDAP-Server gelesen werden können. Sie dürfen nicht von einem anderen Benutzer auf dem System zugreifbar oder schreibbar sein. Löschen Sie außerdem alle temporären Dateien, bevor Sie weitermachen, wie etwa diejenigen, die im vorherigen Schritt erzeugt wurden. Wenn Sie diese Schritte ausgeführt haben, können Sie Ihren LDAP-Server sicher neu starten.

Testen der SSL-Verfügbarkeit

Es gibt verschiedene schnelle Tests, die durchgeführt werden können, um festzustellen, ob die SSL-Unterstützung aktiviert wurde. Am einfachsten testen Sie mit netstat, ob der Server auf Verbindungen wartet, wie wir es bereits in einem früheren Beispiel gezeigt haben.

vlager# netstat -aunt | grep 636
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN

Wenn Sie sehen können, dass der Server am LDAP-SSL-Port wartet, ist das schon einmal ein guter Anfang. Das bedeutet, dass der Server die Anforderung, SSL auszuführen, verstanden hat und am richtigen Port wartet. Als Nächstes können Sie feststellen, ob der Prozess tatsächlich funktioniert. Am besten schicken Sie dazu eine Anforderung, um seine digitalen Zertifikate zu sehen. Das OpenSSL-Paket enthält einen Client, der dazu verwendet werden kann.

vlager# openssl s_client -connect vlager:636 -showcerts

Die Ausgabe dieses Befehls zeigt die vollständigen technischen Informationen über das digitale Zertifikat, das Sie am Anfang dieses Abschnitts erzeugt haben. Falls Sie keine Ausgabe dieses Befehls sehen können, überprüfen Sie noch einmal, ob Sie diesen Dienst gestartet haben und ob wirklich etwas an Port 636 lauscht. Wenn Sie dann immer noch keine Antwort erhalten, lesen Sie den Abschnitt »Fehlerbehebung« weiter hinten in diesem Kapitel.

Grafische LDAP-Browser

Für Administratoren, die eine grafische Oberfläche der Kommandozeile vorziehen, stehen unter Linux eine Vielzahl von LDAP-Browsern zur Verfügung. Eines der zweckmäßigeren Angebote ist vom Argonne National Laboratory, ein Java-Applet, das unter http://www-unix.mcs.anl.gov/~gawor/ldap/applet/applet.html verfügbar ist. Wie Sie in Abbildung 17-2 sehen können, ermöglicht Ihnen die grafische Benutzeroberfläche, ganz einfach Ihre Verzeichnisse zu durchsuchen und die Einträge zu modifizieren. Diese Software hat außerdem den Vorteil, dass sie leicht und ohne Installationsprobleme auf jeder Plattform läuft, vorausgesetzt, Java ist verfügbar.
Abbildung 17-2
Java-LDAP-Browser

Eine andere beliebte und sehr leistungsfähige LDAP-Oberfläche für Linux ist GQ (siehe Abbildung 17-3). Es verwendet eine GTK+-artige Oberfläche und bietet Administratoren die völlige Kontrolle über ihre Verzeichnisse, wobei es ihnen die Möglichkeit gibt, Einträge hinzuzufügen, zu verändern und zu entfernen, Vorlagen zu erstellen, aufwändige Suchanfragen durchzuführen usw. GQ finden Sie unter http://www.biot.com/gq, es benötigt eine Linux-GTK+-kompatible Schnittstelle.
Abbildung 17-3
GQ im Browse-Modus

Fehlerbehebung

Das Installieren und Konfigurieren von OpenLDAP kann kompliziert sein. Es gibt eine Reihe von Dingen, die schief gehen können. Wie bei vielen Linux-Server-Prozessen beginnen Sie die Fehlersuche am besten im Systemprotokoll. Dort sollten Sie eine Zeile finden, die der folgenden ähnelt und Ihnen einen Hinweis gibt, ob Ihr Server richtig gestartet ist.

Jun 15 11:33:39 vlager slapd[1323]: slapd starting

Falls Sie sich in der Datei slapd.conf vertippt haben, ist der Prozess oftmals schlau genug, die Zeile zu ignorieren und weiterzumachen. Liegt jedoch ein schwerwiegenderer Fehler vor, wie etwa im folgenden Beispiel, dann schlägt slapd schon beim Start fehl.

Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 46: unknown directive "odatabase" outside backend info and database definitions (ignored)
Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 47: suffix line must appear inside a database definition (ignored)
Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 49: rootdn line must appear inside a database definition (ignored)
Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 54: rootpw line must appear inside a database definition (ignored)
Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 57: unknown directive "directory" outside backend info and database definitions (ignored)
Jul 25 11:45:25 vlager slapd[10872]: /etc/openldap/slapd.conf: line 59: unknown directive "index" outside backend info and database definitions (ignored)
Jul 25 11:45:25 vlager slapd[10873]: backend_startup: 0 databases to startup.
Jul 25 11:45:25 vlager slapd[10873]: slapd stopped.
Jul 25 11:45:25 vlager slapd[10873]: connections_destroy: nothing to destroy.

In diesem Beispiel haben wir das Wort »database« falsch geschrieben, eine sehr wichtige Option in der Konfiguration. Wie Sie sehen können, konnte der Server nicht starten, liefert uns aber genügend Informationen, um festzustellen, was schief gegangen ist.

Falls Sie festgestellt haben, dass auf dem Server alles läuft, die Clients aber keine Verbindung herstellen können, sollten Sie überprüfen, ob die LDAP-Ports 389 und 636 von einer Firewall blockiert werden. Sollte Ihr Server iptables so ausführen, dass laut Vorgabe alle eingehenden Verbindungen verboten werden, müssen Sie diese beiden Ports ausdrücklich erlauben.

Weitere Probleme treten häufig auf, weil SSL-Zertifikate fehlen oder unvollständig sind. Ein Hinweis aus dem Systemprotokoll, dass etwas mit der SSL-Funktion nicht stimmt, sieht so aus:

Jul 25 12:02:15 vlager slapd[11135]: main: TLS init def ctx failed: 0
Jul 25 12:02:15 vlager slapd[11135]: slapd stopped.
Jul 25 12:02:15 vlager slapd[11135]: connections_destroy: nothing to destroy.

Die Fehlermeldung ist in diesem Fall sehr knapp gehalten; die Tatsache, dass TLS erwähnt wird, zeigt aber an, dass ein Problem mit SSL vorliegt. Falls Sie diese Fehlermeldung erhalten, müssen Sie die Zertifikatspfade und -berechtigungen überprüfen. Oft können die Zertifikatsdateien nicht vom LDAP-Server gelesen werden, weil sie laut ihren Berechtigungen nur von root lesbar sind.


TOC PREV NEXT INDEX


O'Reilly Home | O'Reilly-Partnerbuchhandlungen | Bestellinformationen
Kontakt | Über O'Reilly | Datenschutz

© 2005, O'Reilly Verlag GmbH & Co. KG