LDAP (Lightweight Directory Access Protocol) is an application protocol that enables clients to search, read, and modify entries in hierarchical directory services over IP networks, commonly used for user authentication and identity data lookups across enterprise systems. Organizations depend on LDAP for critical authentication operations in VPN gateways, web applications, mail systems, and network devices, making directory availability and performance essential to prevent organization-wide login outages. Security requires proper configuration including TLS encryption on port 636 or StartTLS on port 389, least-privilege service accounts, certificate validation, and protection against LDAP injection attacks, while operational challenges typically stem from certificate mismatches, DNS discovery issues, and single-server dependencies.
So funktioniert LDAP
LDAP nutzt ein Client-Server-Modell, bei dem ein Client eine Verbindung zu einem Verzeichnisserver herstellt, sich authentifiziert und anschließend Operationen sendet, auf die der Server mit Ergebnissen antwortet. Die Verzeichnisdaten sind als Baumstruktur aus Einträgen organisiert, die jeweils durch einen eindeutigen Namen identifiziert werden.
- Verbindung: Der Client öffnet eine TCP-Verbindung zum Verzeichnisserver, in der Regel auf Port 389 oder auf Port 636, wenn TLS von Beginn an verwendet wird.
- Sichern Sie die Sitzung: Auf Port 389 kann der Client den StartTLS-Befehl ausführen, um die Verbindung vor dem Senden der Anmeldedaten auf eine verschlüsselte Verbindung umzustellen.
- Bind: Der Client sendet eine Bind-Anfrage zur Authentifizierung. Bei einem einfachen Bind werden ein Distinguished Name und ein Passwort übermittelt, während SASL-Binds andere Mechanismen unterstützen. Bei einem anonymen Bind werden keine Anmeldedaten übermittelt.
- Send-Operationen: Der Client sendet Anfragen wie „search“, „compare“, „add“, „modify“, „delete“ oder „modify DN“. Eine Suche gibt einen Basiseintrag, einen Suchbereich, einen Filter und die zurückzugebenden Attribute an.
- Ergebnisse erhalten: Der Server gibt für jede Anfrage passende Einträge und einen Ergebniscode zurück. Über eine Verbindung können mehrere Anfragen offen sein.
- Unbind: Der Client sendet eine Unbind-Anfrage, woraufhin die Verbindung geschlossen wird.
Die oben genannten Schritte behandeln nicht, wie Clients Server finden oder wie die Datenkonsistenz gewährleistet wird. Clients finden Server häufig über DNS-SRV-Einträge, und Verzeichnisserver replizieren Daten in der Regel untereinander, obwohl die Replikation nicht Teil des Kernprotokolls ist. Der Zugriff auf Einträge und Attribute wird durch serverseitige Zugriffskontrollregeln geregelt.
Häufige LDAP-Probleme
Anwendungen, die für Port 389 ohne StartTLS konfiguriert sind, senden den Bind-DN und das Passwort unverschlüsselt, was in Paketaufzeichnungen und Audits sichtbar wird. Wechseln Sie zu StartTLS oder Port 636 und lehnen Sie einfache Binds in ungeschützten Sitzungen ab.
Clients melden Fehler wie einen nicht vertrauenswürdigen Aussteller oder eine Namensdiskrepanz, wenn das Zertifikat des Verzeichnisservers von einer Zertifizierungsstelle signiert wurde, der der Client nicht vertraut, wenn es abgelaufen ist oder wenn der bei der Verbindung verwendete Hostname fehlt. Eine häufige Ursache ist die Verbindung über die IP-Adresse anstelle des Zertifikatsnamens.
Eine Suche liefert keine oder falsche Einträge, da die Suchbasis, der Suchbereich oder der Filter nicht mit der Verzeichnisstruktur übereinstimmen. Die Anmeldung schlägt fehl, obwohl die Anmeldedaten korrekt sind – häufig nach einer Umstrukturierung des Verzeichnisses.
Ein Anwendungs-Bind-Konto mit einem abgelaufenen oder geänderten Passwort unternimmt wiederholt Anmeldeversuche und wird schließlich gesperrt, wodurch alle davon abhängigen Anmeldungen unterbrochen werden. Durch die Überwachung von Bind-Fehlern des Dienstkontos lässt sich dies frühzeitig erkennen.
Wenn Clients auf einen einzigen Verzeichnisserver verweisen, führt ein Neustart oder ein Netzwerkfehler dazu, dass Anmeldungen überall blockiert werden. Verwenden Sie mehrere Server oder einen Namen mit Lastenausgleich und stellen Sie sicher, dass die DNS-Einträge für diese Server korrekt aufgelöst werden.