LDAP
LDAP (Lightweight Directory Access Protocol) ist ein standardisiertes Netzwerkprotokoll, das den Zugriff auf und die Verwaltung von verteilten Verzeichnisdiensten ermöglicht. Es dient als zentrale Schnittstelle zwischen Anwendungen und Verzeichnissen, in denen Informationen wie Benutzerkonten, Gruppen, Zugriffsrechte und andere Ressourcen hierarchisch organisiert sind. In Unternehmensumgebungen bildet LDAP die Grundlage für zentrale Authentifizierung und Benutzerverwaltung.
Geschichte und Entwicklung
LDAP wurde 1993 von Tim Howes, Steve Kille und Wengyik Yeong an der University of Michigan entwickelt. Das Protokoll entstand als leichtgewichtige Alternative zum komplexen X.500-Directory Access Protocol (DAP), das auf dem vollständigen OSI-Stack basierte. Die Idee war, einen einfacheren Zugang zu Verzeichnisdiensten über TCP/IP zu ermöglichen.
Die wichtigsten Meilensteine:
- 1993: Erste LDAP-Version als Gateway zu X.500-Verzeichnissen (RFC 1487)
- 1995: LDAPv2 wird als Internetstandard veröffentlicht (RFC 1777)
- 1997: LDAPv3 erscheint mit erweiterten Funktionen wie UTF-8-Unterstützung und SASL-Authentifizierung (RFC 2251)
- 2006: Aktualisierte LDAPv3-Spezifikation (RFC 4510-4519)
Heute ist LDAPv3 der aktuelle Standard und bildet die technische Grundlage für Verzeichnisdienste wie Microsoft Active Directory, OpenLDAP und viele weitere Implementierungen.
Aufbau eines LDAP-Verzeichnisses
Ein LDAP-Verzeichnis ist als hierarchische Baumstruktur organisiert, die als DIT (Directory Information Tree) bezeichnet wird. Diese Struktur ermöglicht eine logische Organisation von Objekten und schnelle Suchabfragen.
Der Directory Information Tree (DIT)
Der DIT funktioniert ähnlich wie ein Dateisystem: An der Spitze steht die Wurzel (Root), von der aus sich Äste zu verschiedenen Organisationseinheiten und Objekten verzweigen. Ein typischer DIT könnte so aussehen:
dc=firma,dc=de
├── ou=Users
│ ├── cn=Max Mustermann
│ └── cn=Erika Musterfrau
├── ou=Groups
│ ├── cn=Entwickler
│ └── cn=Administratoren
└── ou=Computers
└── cn=server01
Distinguished Name (DN) und Relative Distinguished Name (RDN)
Jedes Objekt im LDAP-Verzeichnis wird durch seinen Distinguished Name (DN) eindeutig identifiziert. Der DN ist der vollständige Pfad vom Objekt zur Wurzel des Baums:
cn=Max Mustermann,ou=Users,dc=firma,dc=de
Der Relative Distinguished Name (RDN) ist der Name des Objekts innerhalb seines übergeordneten Containers. Im obigen Beispiel ist cn=Max Mustermann der RDN.
Attribute und Objektklassen
Attribute sind die Eigenschaften eines Objekts. Ein Benutzerobjekt kann beispielsweise folgende Attribute haben:
uid(User ID): mustermanncn(Common Name): Max Mustermannmail: max.mustermann@firma.deuserPassword: (verschlüsseltes Passwort)telephoneNumber: +49 123 456789
Objektklassen definieren, welche Attribute ein Objekt haben kann oder muss. Beispiele für Objektklassen sind:
person: Grundlegende Personendaten (cn, sn)organizationalPerson: Erweiterte Personendaten für OrganisationeninetOrgPerson: Internet-Organisationsperson mit E-Mail und weiteren AttributengroupOfNames: Gruppenobjekt mit Mitgliederliste
LDAP-Operationen
LDAP definiert verschiedene Operationen für die Kommunikation zwischen Client und Server. Diese folgen einem Request-Response-Modell über TCP/IP.
Bind (Verbindungsaufbau und Authentifizierung)
Die Bind-Operation authentifiziert den Client gegenüber dem LDAP-Server. Es gibt verschiedene Bind-Methoden:
- Anonymous Bind: Keine Authentifizierung (eingeschränkter Zugriff)
- Simple Bind: Benutzername und Passwort im Klartext
- SASL Bind: Sichere Authentifizierung über verschiedene Mechanismen (z.B. Kerberos)
ldapwhoami -H ldap://server.firma.de -D "cn=admin,dc=firma,dc=de" -W
Search (Suchen)
Die Search-Operation ist die am häufigsten verwendete Operation. Du kannst damit Objekte im Verzeichnis suchen und deren Attribute abrufen. Eine Suchanfrage besteht aus:
- Base DN: Startpunkt der Suche
- Scope: Suchtiefe (base, one, sub)
- Filter: Suchkriterien
- Attributes: Gewünschte Attribute
Beispiel einer Suche nach allen Benutzern in einer Organisationseinheit:
ldapsearch -H ldap://server.firma.de -b "ou=Users,dc=firma,dc=de" "(objectClass=person)" cn mail
Add, Modify und Delete
- Add: Fügt neue Einträge zum Verzeichnis hinzu
- Modify: Ändert Attribute bestehender Einträge (add, replace, delete von Attributen)
- Delete: Entfernt Einträge aus dem Verzeichnis
Unbind (Verbindungstrennung)
Die Unbind-Operation beendet die Sitzung und schließt die Verbindung zum Server.
LDAP und Active Directory
LDAP und Microsoft Active Directory (AD) werden oft verwechselt, erfüllen aber unterschiedliche Rollen:
| Aspekt | LDAP | Active Directory |
|---|---|---|
| Typ | Protokoll | Verzeichnisdienst |
| Hersteller | Offener Standard (IETF) | Microsoft |
| Plattform | Plattformübergreifend | Windows-zentriert |
| Authentifizierung | LDAP Bind | LDAP + Kerberos |
| Funktionen | Verzeichniszugriff | + Gruppenrichtlinien, DNS, etc. |
Active Directory verwendet LDAP als eines seiner Zugriffsprotokolle, bietet aber zusätzliche Funktionen wie Gruppenrichtlinien (GPO), integriertes DNS und Kerberos-Authentifizierung. Du kannst LDAP-Tools verwenden, um auf AD zuzugreifen, aber nicht alle AD-Funktionen sind über LDAP verfügbar.
Einsatzgebiete in der Praxis
LDAP wird in vielen Bereichen der IT-Infrastruktur eingesetzt:
Zentrale Benutzerverwaltung
Unternehmen nutzen LDAP-Verzeichnisse, um Benutzerkonten zentral zu verwalten. Anstatt Benutzer auf jedem System einzeln anzulegen, authentifizieren sich alle Systeme gegen das zentrale Verzeichnis.
Single Sign-On (SSO)
In Kombination mit Protokollen wie SAML oder OAuth ermöglicht LDAP die Implementierung von Single Sign-On. Benutzer melden sich einmal an und erhalten Zugriff auf alle verbundenen Anwendungen.
E-Mail-Systeme
Viele E-Mail-Server wie Microsoft Exchange, Postfix oder Dovecot nutzen LDAP zur Authentifizierung und zum Abrufen von Benutzerinformationen wie E-Mail-Adressen und Verteilerlisten.
Netzwerkzugriffskontrolle
In Kombination mit RADIUS wird LDAP für die Authentifizierung bei WLAN-Zugängen, VPN-Verbindungen und Netzwerkzugang (802.1X) eingesetzt.
Linux/Unix-Umgebungen
Linux-Systeme können LDAP über NSS (Name Service Switch) und PAM (Pluggable Authentication Modules) als zentrale Authentifizierungsquelle nutzen.
Sicherheit bei LDAP
Die Sicherheit von LDAP-Verbindungen ist besonders wichtig, da Authentifizierungsdaten übertragen werden.
LDAPS (LDAP over SSL/TLS)
LDAPS verwendet TLS/SSL-Verschlüsselung von Beginn der Verbindung an. Die Kommunikation erfolgt standardmäßig über Port 636. Die Verbindung ist durchgehend verschlüsselt, was Abhören und Man-in-the-Middle-Angriffe verhindert.
StartTLS
StartTLS ist eine Erweiterung, die eine unverschlüsselte LDAP-Verbindung auf Port 389 nachträglich zu einer verschlüsselten Verbindung aufwertet. Der Vorteil: Ein Server kann sowohl verschlüsselte als auch unverschlüsselte Verbindungen auf demselben Port akzeptieren.
Authentifizierungsmechanismen
Für sichere Authentifizierung stehen verschiedene SASL-Mechanismen zur Verfügung:
- GSSAPI: Kerberos-Authentifizierung
- DIGEST-MD5: Challenge-Response-Verfahren
- EXTERNAL: Clientzertifikate
Best Practices
- Immer LDAPS oder StartTLS verwenden
- Simple Bind nur über verschlüsselte Verbindungen
- Dienstkonten mit minimalen Rechten einsetzen
- Zugriffskontrolllisten (ACLs) sorgfältig konfigurieren
- Regelmäßige Überprüfung der LDAP-Logs
Ports und Kommunikation
LDAP nutzt standardisierte TCP-Ports:
| Port | Verwendung |
|---|---|
| 389 | LDAP (unverschlüsselt oder mit StartTLS) |
| 636 | LDAPS (SSL/TLS-verschlüsselt) |
| 3268 | Global Catalog (Active Directory) |
| 3269 | Global Catalog mit SSL (Active Directory) |
LDAP-Server-Implementierungen
Es gibt verschiedene LDAP-Server-Implementierungen für unterschiedliche Anforderungen:
OpenLDAP
OpenLDAP ist die am weitesten verbreitete Open-Source-Implementierung. Sie läuft auf Linux, Unix und anderen Plattformen und ist bekannt für ihre Flexibilität und Leistung.
Microsoft Active Directory
Active Directory ist die dominierende Lösung in Windows-Unternehmensumgebungen. Es bietet neben LDAP-Zugriff auch Gruppenrichtlinien, DNS-Integration und Kerberos-Authentifizierung.
Apache Directory Server
Ein in Java entwickelter LDAP-Server mit guter Eclipse-Integration und einer grafischen Verwaltungsoberfläche (Apache Directory Studio).
389 Directory Server
Ursprünglich von Netscape entwickelt und jetzt ein Fedora-Projekt. Bekannt für Enterprise-Funktionen wie Replikation und hohe Verfügbarkeit.
LDAP in der IT-Praxis
Als Fachinformatiker für Systemintegration wirst du regelmäßig mit LDAP-Verzeichnissen arbeiten. Typische Aufgaben umfassen die Anbindung von Anwendungen an bestehende Verzeichnisdienste, die Fehlersuche bei Authentifizierungsproblemen und die Planung von Verzeichnisstrukturen.
Auch für Fachinformatiker für Anwendungsentwicklung ist LDAP relevant: Viele Anwendungen müssen sich gegen LDAP-Verzeichnisse authentifizieren oder Benutzerinformationen abrufen. Bibliotheken wie python-ldap, Net::LDAP (Ruby) oder Spring LDAP (Java) erleichtern die Integration.