LDAP-Filter-Builder

LDAP-Filter ohne Klammer-Zählen: Bedingungen zusammenklicken oder einen vorhandenen Filter prüfen und in Worten erklären lassen. Mit Vorlagen für Active Directory und fertigen Befehlen.

Vorlagen für Active DirectoryPrüft und erklärt FilterLäuft komplett im Browser

Datum in AD-Zeitwerte umrechnen

FILETIME (lastLogonTimestamp, pwdLastSet, accountExpires …)–
Generalized Time (whenCreated, whenChanged)–

Alles läuft lokal in deinem Browser. Filter, Gruppennamen und Domainnamen werden nicht übertragen.

So sind LDAP-Filter aufgebaut

Ein LDAP-Filter beschreibt, welche Objekte eine Suche liefern soll. Jede Bedingung steht in Klammern, Verknüpfungen stehen vorne: (&(a)(b)) heißt „a und b“, (|(a)(b)) „a oder b“, (!(a)) „nicht a“. Das ist schnell geschrieben und schnell falsch geklammert, deshalb der Baukasten.

Was in Active Directory anders ist

Sonderzeichen im Wert

Die Zeichen *, (, ), \ und NUL müssen im Wert als \2a, \28, \29, \5c und \00 geschrieben werden (RFC 4515). Der Baukasten macht das automatisch. Ein Gruppenname wie „Vertrieb (Nord)“ wird so zu Vertrieb \28Nord\29. In PowerShell kommt der Filter in einfache Anführungszeichen, damit $ und ` nicht ausgewertet werden.

Weitere Werkzeuge für den Admin-Alltag: tcpdump-Filter, Subnetzrechner und DNS-Lookup.

FAQ

Warum findet mein Filter mit objectClass=user auch Computer?

Weil die Klasse „computer“ in AD von „user“ abgeleitet ist. Verwende zusätzlich (objectCategory=person), dann bleiben nur Benutzer übrig. Das ist außerdem schneller, weil objectCategory indiziert ist.

Wie finde ich alle Mitglieder einer Gruppe einschließlich Untergruppen?

Mit (memberOf:1.2.840.113556.1.4.1941:=CN=Gruppe,OU=…,DC=…). Der Wert muss der vollständige Distinguished Name der Gruppe sein. Bei sehr großen Verschachtelungen kann die Abfrage langsam sein.

Wie frage ich deaktivierte oder gesperrte Konten ab?

Deaktiviert: (userAccountControl:1.2.840.113556.1.4.803:=2). Gesperrt: (lockoutTime>=1). Das Sperr-Bit 16 in userAccountControl wird von AD nicht mehr gepflegt. lockoutTime bleibt nach Ablauf der Sperrdauer gesetzt, bis sich der Benutzer anmeldet.

Werden meine Filter irgendwohin gesendet?

Nein. Baukasten, Prüfung und Umrechnung laufen komplett in deinem Browser. Nur in der Adresszeile steht der aktuelle Filter, damit du ihn als Link weitergeben kannst.

Funktioniert das auch mit OpenLDAP?

Ja, die Syntax ist standardisiert (RFC 4515). Die AD-spezifischen Vergleichsregeln für Bits und verschachtelte Gruppen kennt OpenLDAP aber nicht, und Attribute heißen dort oft anders, z. B. uid statt sAMAccountName.