Bundesamt für Sicherheit in der Informationstechnik

M 3.85 Einführung in OpenLDAP

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator

Open LDAP ist ein Verzeichnisdienst, der auf dem LDAP-Projekt der University of Michigan basiert. Das ursprüngliche Projekt hatte zum Ziel, ein Äquivalent für das Directory Access Protocol (DAP) aus dem Verzeichnisdienst-Standard X.500 zu entwickeln. DAP war auf den OSI-Stack zugeschnitten, während LDAP als Lightweight DAP, also "schlankeres" DAP den TCP / IP -Stack nutzt. Das Adjektiv "schlank" deutet dabei an, dass LDAP nicht den kompletten Funktionsumfang von X.500 DAP umsetzt. Die University of Michigan entwickelte auch einen Server, der mit dem Protokoll besonders gut umgehen kann. In diesem Zusammenhang wird von einem LDAP-Server gesprochen, obwohl LDAP eigentlich nur ein Protokoll bezeichnet. Solche Server sind als hierarchische Datenbanken darauf ausgelegt, das Protokoll LDAP besonders gut zu unterstützen und die mit dem Protokoll ausgetauschten Daten effizient zu speichern.

Open Source Software

OpenLDAP ist Open Source Software. Die Entwickler von OpenLDAP haben auf der Basis des ursprünglichen Projektes der University of Michigan den Server weiterentwickelt und stellen ihre Arbeit inklusive des Quelltextes im Internet kostenlos der Allgemeinheit zur Verfügung. OpenLDAP ist auf Unix- und Linux-Betriebssystemen am weitesten verbreitet, die Software kann jedoch ebenso unter Microsoft Windows oder auf anderen Plattformen wie z/OS eingesetzt werden. Die Entwickler von OpenLDAP legen großen Wert darauf, dass die Software den LDAP-Standard einhält. Im Gegensatz zu abweichenden Implementierungen wie bei Active Directory, oder ausdrücklich abgewandelten Formen des Protokolls LDAP, wie beim Novell eDirectory, hält OpenLDAP den LDAP-Standard in der aktuellen Version 3 (LDAPv3) strikt ein. Dies zeigt sich unter anderem daran, dass OpenLDAP für Konfigurationsdateien und den Import und Export von Daten das LDAP Data Interchange Format (LDIF) verwendet. Daher wird OpenLDAP auch als Referenz-Implementation von LDAPv3 bezeichnet.

OpenLDAP unterstützt neben LDAPv3 auch den LDAP-Standard in der Version 2 (LDAPv2), garantiert dafür jedoch keine strikte Einhaltung des Standards. Zum ursprünglichen X.500 DAP bestehen keine Schnittstellen mehr. Es ist zwar grundsätzlich möglich, Daten zwischen LDAP-Servern und X.500 DAP Directory System Agents auszutauschen, OpenLDAP enthält jedoch keine entsprechende Funktion. OpenLDAP unterstützt nativ IPv4 ebenso wie IPv6, außerdem die Unix Interprozess Kommunikation (IPC).

Funktionsweise

Wie jeder LDAP-Server speichert OpenLDAP Daten in einer definierten hierarchischen Baumstruktur, dem Directory Information Tree (DIT). M 3.61 Einführung in Verzeichnisdienst-Grundlagen beschreibt die übliche Struktur und die verwendeten Begriffe. Seine Daten stellt OpenLDAP über eine Client-Server-Infrastruktur sitzungsorientiert zur Verfügung, d. h. jeder Benutzer des Verzeichnisdienstes nutzt Client-Anwendungen, um sich mit dem Server zu verbinden. Über den Client initiiert der Benutzer Operationen, wie die Suche nach einem Telefonbucheintrag oder die Änderung des eigenen Passworts. Der Server beantwortet diese Benutzeraktionen, beispielsweise indem er den gesuchten Eintrag übermittelt oder die erfolgreiche Passwortänderung bestätigt. Werden dabei Werte von Attributen gelesen oder verändert, so ist zu unterscheiden, ob es sich um normale Attribute handelt oder um so genannte operationelle Attribute, die OpenLDAP zur internen Verwaltung einsetzt. Zu Letzteren gehört zum Beispiel der Dinstinguished Name (DN) oder die Zeitstempel, die im Rahmen der Replikation von Bedeutung sind. Nachdem der Benutzer alle Operationen durchgeführt hat, wird die Verbindung zum Server beendet ("unbind" zum Ende einer Sitzung).

Architektur von OpenLDAP

Der LDAP-Server von OpenLDAP ist der slapd-Server (stand-alone LDAP daemon). Er ist neben den LDAP-Bibliotheken, die ein IT-System benötigt, um LDAP-Funktionen zu nutzen, der wichtigste Bestandteil der OpenLDAP-Software. Der slapd-Server speichert Daten des Verzeichnisdienstes nicht selbst, sondern nutzt dafür ein Datenbankmanagementsystem (DBMS), das nicht zur OpenLDAP-Software gehört.

Backends und Datenbanken

Als Backend wird eine Teilkomponente von OpenLDAP bezeichnet. Der slapd-Server kommuniziert nicht direkt mit einem DBMS, sondern bedient sich dafür der Funktionen eines Backends. Backends werden in der Form "back-*" benannt. Grob wird unterschieden zwischen

  • Backends, die tatsächlich Daten speichern ( z. B. "back-hdb" zum Zugriff auf die BerkeleyDB),
  • Backends, die einen Proxy-Zugriff auf andere Datenspeicher gewähren (z. B. "back-ldap" zum Zugriff auf andere Verzeichnisdienste) und
  • Backends, die Daten dynamisch generieren (z. B. "back-monitor" zur Anzeige des aktuellen Zustands von OpenLDAP).

Diese grundsätzliche Unterscheidung sollte bei der Planung der Komponenten bekannt sein, sie ist für die spätere Konfiguration und im Betrieb allerdings nicht mehr wichtig.

Unter einer Datenbank wird bei OpenLDAP eine Instanz eines Backends verstanden, zum Beispiel die Datenbank, in der das Teilverzeichnis "OU=BSI, O=Bund, C=DE" gespeichert ist. In der Regel können mehrere Instanzen des gleichen Backends benutzt werden, so kann es eine Datenbank für das Teilverzeichnis "I=Bonn, OU=BSI, O=Bund, C=DE" und eine für das Teilverzeichnis "I=Berlin, OU=BSI, O=Bund, C=DE" geben. Bei manchen Backends ist auch nur eine Instanz möglich, es gibt zum Beispiel nur eine "back-monitor"-Instanz zur Laufzeit. In der Praxis und auch in der Literatur über OpenLDAP werden die Begriffe Backend und Datenbank oft synonym verwendet. Es ist jedoch stets darauf zu achten, Datenbanken als logischen (Teil-)Datenbestand eines Backends nicht mit dem DBMS als eigene Softwarekomponente zu verwechseln.

Overlays

Overlays sind dafür da, das Verhalten eines bestehenden Backends zu beeinflussen, ohne das Backend selbst anpassen oder neu schreiben zu müssen. Dazu wird das Overlay dem slapd-Server vorgeschaltet, so das Nachrichten den Server gefiltert erreichen beziehungsweise verändert verlassen. Die meisten Overlays sind auf Datenbankebene anzuwenden, allerdings oft nicht auf einen Backend-Typ beschränkt.

Einen Überblick über die Architektur von OpenLDAP gibt die folgende Grafik:

Um Backends beziehungsweise Datenbanken und Overlays zu benutzen, sind zwei Schritte notwendig: Zum einen muss der Quelltext von Backends und Overlays bei der Übersetzung von OpenLDAP mit übersetzt werden (siehe M 4.383 Sichere Installation von OpenLDAP ), zum anderen müssen Backends und Overlays in der Konfiguration aufgerufen werden (siehe M 4.384 Sichere Konfiguration von OpenLDAP ). Backends und Overlays können auch als dynamische Module übersetzt werden.

Werkzeuge

Neben Bibliotheken und dem slapd-Server umfasst OpenLDAP auch eine Sammlung von Werkzeugen (Tools). Diese Werkzeuge werden in die ldap*-Werkzeuge und die slap*-Werkzeuge unterteilt.

Zu den ldap*-Werkzeugen gehören:

  • ldapadd, um Einträge zu einem Verzeichnisdienst hinzuzufügen
  • ldapauth, um sich an einem Verzeichnisdienst zu authentisieren
  • ldapdelete, um Einträge aus einem Verzeichnisdienst zu entfernen
  • ldapmodify, um bestehende Einträge in einem Verzeichnisdienst zu verändern
  • ldapmodrdn, um den Distinguished Name (DN) eines Eintrags zu verändern
  • ldappasswd, um das Passwort eines Personen-Objektes im Verzeichnisdienst zu verändern
  • ldapsearch, um nach Einträgen im Verzeichnis zu suchen
  • ldapwhoami, um die eigene Identität im Rahmen einer Sitzung auszugeben

Die ldap*-Werkzeuge nutzen das Protokoll LDAP selbst und richten Operationen als Clients immer an einen laufenden Verzeichnisdienst. Sie sind dabei vom Typ des slapd-Servers unabhängig, das heißt, sie können mit anderen LDAP-Servern kommunizieren und ihre Funktionen können wiederum durch andere Werkzeuge als die von OpenLDAP umgesetzt werden. Insbesondere werden in der Praxis grafische Werkzeuge eingesetzt.

Die slap*-Werkzeuge umfassen:

  • slapacl, um die Wirksamkeit von Zugriffsrechten zu prüfen
  • slapadd, um Einträge zu einem Verzeichnisdienst hinzuzufügen
  • slapauth, um eine SASL-Identität gegen einen Verzeichnisdienst zu prüfen
  • slapcat, um die Objekte aus einem Verzeichnisdienst zu exportieren
  • slapdn, um einen Distinguished Name (DN) auf Zulässigkeit im bestehenden Verzeichnisdienst zu prüfen
  • slapindex, um die Attribute (erneut) zu indizieren
  • slappasswd, um zu einem Passwort den Hashwert zu generieren
  • slaptest, um zu prüfen, ob eine Konfiguration syntaktisch korrekt ist

Die slap*-Werkzeuge nutzen nicht das Protokoll LDAP. Diese Werkzeuge arbeiten autark vom slapd-Server beziehungsweise umgehen ihn und greifen unter anderem direkt auf die Konfigurationsdateien oder die Dateien einer Datenbank zu. Die slap*-Werkzeuge sind auf den slapd-Server sowie die BerkeleyDB abgestimmt. Als Faustregel gilt, dass der slapd-Server immer laufen muss, wenn ldap*-Werkzeuge verwendet werden und niemals laufen sollte, wenn slap*-Werkzeuge eingesetzt werden.

Anpassung von OpenLDAP

OpenLDAP ist detailliert dokumentiert. Interne Zusammenhänge und Verarbeitungsschritte sind durch die Verfügbarkeit des Quelltextes bekannt. Es ist deshalb einfach möglich, Hilfsmittel für Administrationszwecke wie Skripte zu erstellen und einzusetzen. Es ist auch möglich, den Quelltext zu ändern und selbst zu übersetzen. Darüber hinaus existiert eine generische Programmschnittstelle (Application Programming Interface, API), durch die ohne Änderungen an OpenLDAP selbst eigene Backends und Overlays erstellt und genutzt werden können.

Weitere Informationen

Die IT-Grundschutz-Kataloge können nur eine allgemeine Einführung in OpenLDAP leisten und berücksichtigen insbesondere Sicherheitsaspekte. Andere Aspekte, wie Einstellungen zur Verbesserung der Leistung werden nicht betrachtet, obwohl sie bei Planung und Installation eine große Rolle spielen können. Neben der vorhandenen Fachliteratur zu OpenLDAP ist die von den Entwicklern von OpenLDAP kostenlos bereitgestellte Dokumentation eine sehr gute Informationsquelle. Als Hauptdokument ist der zur eingesetzten Version gehörende OpenLDAP Administrator's Guide (http://www.openldap.org/doc) zu nennen. Häufige Fragen (Frequently Asked Questions, FAQ) und Antworten werden unter http://www.openldap.org/faq gesammelt. In den FAQ finden sich allerdings auch Fragen und Antworten, die für eine frühere Version von OpenLDAP geschrieben wurden und aktuell nicht mehr gültig sind.

Für die umfangreichen Einstellungsmöglichkeiten und Parameter wird insbesondere auf die so genannten Manpages hingewiesen. Die Manpages von OpenLDAP werden in der Regel mit OpenLDAP zusammen installiert, sind aber auch im Internet verfügbar (http://www.openldap.org/software/man.cgi). Allerdings existieren zu Teilen der Software, insbesondere zu neu entwickelten Backends und Overlays, noch keine Manpages in hinreichender Qualität.

Für detailliertere Informationen oder im Problemfall empfiehlt sich ein Blick in die offiziellen Mailinglisten des Projekts unter http://www.openldap.org/lists. Die Listen können abonniert werden, ältere Nachrichten stehen unter der angegebenen Adresse auch in Archiven bereit.

Stand: 13. EL Stand 2013

Hinweis zur Verwendung von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen hierzu erhalten Sie in unserer Datenschutzerklärung.

OK