Wenn Sie in einem mittleren bis großen Unternehmen arbeiten, interagieren Sie wahrscheinlich täglich mit LDAP.
Ob auf einem Windows-Domänencontroller oder auf einem Linux-OpenLDAP-Server, das LDAP-Protokoll ist sehr nützlich, um die Authentifizierung zu zentralisieren.
Wenn Ihr LDAP-Verzeichnis jedoch wächst, gehen Sie möglicherweise in allen Einträgen verloren, die Sie möglicherweise verwalten müssen.
Glücklicherweise gibt es einen Befehl, mit dem Sie nach Einträgen in einem LDAP-Verzeichnisbaum suchen können: ldapsearch.
In diesem Tutorial werden wir sehen, wie Sie LDAP mit ldapsearch einfach durchsuchen können.
Wir werden auch die vom Befehl bereitgestellten Optionen überprüfen, um erweiterte LDAP-Suchen durchzuführen.
Inhaltsverzeichnis
- LDAP mit ldapsearch durchsuchen
- LDAP mit Administratorkonto durchsuchen
- Ausführen von LDAP-Suchen mit Filtern
- Alle Objekte im Verzeichnisbaum finden
- Benutzerkonten mit ldapsearch finden
- UND Operator mit ldapsearch
- ODER Operator mit ldapsearch
- Negationsfilter mit ldapsearch
- LDAP-Serverkonfiguration mit ldapsearch finden
- Verwenden von Platzhaltern bei der LDAP-Suche
- Erweiterte Ldapsearch-Optionen
- Erweiterbare LDAP-Übereinstimmungsfilter
- Standard-Operatoren aufladen
- Fazit
LDAP mit ldapsearch durchsuchen
Der einfachste Weg, LDAP zu durchsuchen, besteht darin, ldapsearch mit der Option „-x“ für die einfache Authentifizierung zu verwenden und die Suchbasis mit „-b“ anzugeben.
Wenn Sie die Suche nicht direkt auf dem LDAP-Server ausführen, müssen Sie den Host mit der Option „-H“ angeben.
$ ldapsearch -x -b <search_base> -H <ldap_host>
Angenommen, Sie haben einen OpenLDAP-Server auf dem Host 192.168.178.29 Ihres Netzwerks installiert und ausgeführt.
Wenn Ihr Server die anonyme Authentifizierung akzeptiert, können Sie eine LDAP-Suchabfrage durchführen, ohne sich an das Administratorkonto zu binden.
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
Wie Sie sehen können, geht der LDAP-Client davon aus, dass Sie keine Filter angeben möchten, wenn Sie keine Filter angeben führen Sie eine Suche in allen Objektklassen Ihres Verzeichnisbaums durch.
Infolgedessen werden Ihnen viele Informationen angezeigt. Wenn Sie die dargestellten Informationen einschränken möchten, werden wir im nächsten Kapitel LDAP-Filter erläutern.
LDAP mit Administratorkonto durchsuchen
In einigen Fällen sollten Sie LDAP-Abfragen als Administratorkonto ausführen, um zusätzliche Informationen zu erhalten.
Um dies zu erreichen, müssen Sie eine Bindungsanforderung über das Administratorkonto des LDAP-Baums stellen.
Um LDAP mit dem Administratorkonto zu durchsuchen, müssen Sie die Abfrage „ldapsearch“ mit der Option „-D“ für den Bind-DN und dem „-W“ ausführen, um zur Eingabe des Kennworts aufgefordert zu werden.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
Nehmen wir als Beispiel an, dass Ihr Administratorkonto den folgenden definierten Namen hat: „cn=admin,dc=devconnected,dc=com“.
Um eine LDAP-Suche als dieses Konto durchzuführen, müssten Sie die folgende Abfrage ausführen
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W
Beim Ausführen eine LDAP-Suche als Administratorkonto, können Sie Benutzer verschlüsselte Passwörter ausgesetzt werden, so stellen Sie sicher, dass Sie Ihre Abfrage privat laufen.
Ausführen von LDAP-Suchen mit Filtern
Das Ausführen einer einfachen LDAP-Suchabfrage ohne Filter ist wahrscheinlich eine Verschwendung von Zeit und Ressourcen.
Meistens möchten Sie eine LDAP-Suchabfrage ausführen, um bestimmte Objekte in Ihrem LDAP-Verzeichnisbaum zu finden.
Um nach einem LDAP-Eintrag mit Filtern zu suchen, können Sie Ihren Filter am Ende des Befehls ldapsearch anhängen: Links geben Sie den Objekttyp und rechts den Objektwert an.
Optional können Sie die Attribute angeben, die vom Objekt zurückgegeben werden sollen (Benutzername, Benutzerkennwort usw.)
$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>
Alle Objekte im Verzeichnisbaum finden
Um alle in Ihrem LDAP-Baum verfügbaren Objekte zurückzugeben, können Sie den Filter „objectclass“ und ein Platzhalterzeichen „*“ anhängen, um anzugeben, dass Sie alle Objekte zurückgeben möchten.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
Wenn Sie diese Abfrage ausführen, werden Ihnen alle Objekte und Attribute angezeigt, die im Baum verfügbar sind.
Benutzerkonten mit ldapsearch finden
Angenommen, Sie möchten alle Benutzerkonten im LDAP-Verzeichnisbaum finden.
Standardmäßig haben Benutzerkonten höchstwahrscheinlich die strukturelle Objektklasse „account“, mit der alle Benutzerkonten eingegrenzt werden können.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"
Standardmäßig gibt die Abfrage alle Attribute zurück, die für die angegebene Objektklasse verfügbar sind.
Wie im vorherigen Abschnitt angegeben, können Sie optionale Attribute an Ihre Abfrage anhängen, wenn Sie Ihre Suche eingrenzen möchten.
Wenn Sie beispielsweise nur an dem Benutzer CN, der UID und dem Home-Verzeichnis interessiert sind, führen Sie die folgende LDAP-Suche aus
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
Super, Sie haben eine LDAP-Suche mit Filtern und Attributselektoren erfolgreich durchgeführt!
UND Operator mit ldapsearch
Um mehrere Filter durch die Operatoren „UND“ zu trennen, müssen Sie alle Bedingungen in Klammern setzen und am Anfang der Abfrage ein Zeichen „&“ schreiben.
$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
Angenommen, Sie möchten feststellen, dass alle Einträge eine „objectclass“ haben, die gleich „account“ und eine „uid“ ist, die gleich „john“ ist, führen Sie die folgende Abfrage aus
$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
ODER Operator mit ldapsearch
Um mehrere Filter durch „ODER“ -Operatoren zu trennen, müssen Sie alle Bedingungen in Klammern setzen und am Anfang der Abfrage ein „|“ -Zeichen setzen.
$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
Wenn Sie beispielsweise alle Einträge mit einer Objektklasse vom Typ „account“ oder „organizationalRole“ finden möchten, führen Sie die folgende Abfrage aus
$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
Negationsfilter mit ldapsearch
In einigen Fällen möchten Sie einige Einträge in Ihrem LDAP-Verzeichnisbaum negativ abgleichen.
Um einen negativen Übereinstimmungsfilter zu haben, müssen Sie Ihre Bedingung(en) mit einem „!“ charakter und haben Bedingungen, die durch einschließende Klammern getrennt sind.
$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
Wenn Sie beispielsweise alle Einträge abgleichen möchten, die KEIN „cn“ -Attribut mit dem Wert „john“ haben, schreiben Sie die folgende Abfrage
$ ldapsearch <previous_options> "(!(cn=john))"
LDAP-Serverkonfiguration mit ldapsearch finden
Eine erweiterte Verwendung des Befehls ldapsearch besteht darin, die Konfiguration Ihres LDAP-Baums abzurufen.
Wenn Sie mit OpenLDAP vertraut sind, wissen Sie, dass ein globales Konfigurationsobjekt ganz oben in Ihrer LDAP-Hierarchie steht.
In einigen Fällen möchten Sie möglicherweise Attribute Ihrer LDAP-Konfiguration anzeigen, um beispielsweise die Zugriffssteuerung oder das Root-Administratorkennwort zu ändern.
Um nach der LDAP-Konfiguration zu suchen, verwenden Sie den Befehl „ldapsearch“ und geben Sie „cn=config“ als Suchbasis für Ihren LDAP-Baum an.
Um diese Suche auszuführen, müssen Sie die Option „-Y“ verwenden und „EXTERN“ als Authentifizierungsmechanismus angeben.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
Hinweis : Dieser Befehl muss direkt auf dem Server ausgeführt werden, nicht von einem Ihrer LDAP-Clients.
Standardmäßig gibt dieser Befehl viele Ergebnisse zurück, da er Backends, Schemas und Module zurückgibt.
Wenn Sie Ihre Suche auf Datenbankkonfigurationen beschränken möchten, können Sie mit ldapsearch die Objektklasse „olcDatabaseConfig“ angeben.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"
Verwenden von Platzhaltern bei der LDAP-Suche
Eine weitere leistungsstarke Methode zum Durchsuchen einer Liste von LDAP-Einträgen ist die Verwendung von Platzhalterzeichen wie dem Sternchen („*“).
Das Platzhalterzeichen hat die gleiche Funktion wie das Sternchen, das Sie in Regex verwenden: Es wird verwendet, um jedes Attribut zu finden, das mit einem bestimmten Teilstring beginnt oder endet.
$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"
Nehmen wir als Beispiel an, dass Sie alle Einträge finden möchten, die ein Attribut „uid“ haben, das mit dem Buchstaben „j“ beginnt.
$ ldapsearch <previous_options> "uid=jo*"
Erweiterte Ldapsearch-Optionen
In diesem Tutorial haben Sie grundlegende ldapsearch-Optionen, aber es gibt viele andere, die Sie interessieren könnten.
Erweiterbare LDAP-Übereinstimmungsfilter
Erweiterbare LDAP-Übereinstimmungsfilter werden verwendet, um vorhandene Operatoren (z. B. den Gleichheitsoperator) zu überlasten, indem Sie den Typ des Vergleichs angeben, den Sie ausführen möchten.
Standard-Operatoren aufladen
Um einen LDAP-Operator aufzuladen, müssen Sie die Syntax „:=“ verwenden.
$ ldapsearch <previous_options> "<object_type>:=<object_value>"
Wenn Sie zum Beispiel nach allen Einträgen suchen möchten, die ein „cn“ haben, das gleich „john“ ist, würden Sie den folgenden Befehl ausführen
$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"
Wie Sie wahrscheinlich bemerkt haben, gibt die Suche nach „john“ oder „JOHN“ genau das gleiche Ergebnis zurück.
Infolgedessen möchten Sie die Ergebnisse möglicherweise auf die genaue Übereinstimmung „john“ beschränken, wodurch die Groß- und Kleinschreibung bei der Suche berücksichtigt wird.
Mit ldapsearch können Sie zusätzliche Filter hinzufügen, die durch „:“ -Zeichen getrennt sind.
$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
Um beispielsweise eine Suche durchzuführen, bei der Groß- und Kleinschreibung beachtet wird, führen Sie den folgenden Befehl aus
$ ldapsearch <previous_options> "cn:caseExactMatch:=john"
Wenn Sie mit LDAP-Übereinstimmungsfiltern nicht vertraut sind, finden Sie hier eine Liste aller Operatoren, die Ihnen zur Verfügung stehen.
Fazit
In diesem Tutorial haben Sie gelernt, wie Sie einen LDAP-Verzeichnisbaum mit dem Befehl ldapsearch durchsuchen können.
Sie haben die Grundlagen der Suche nach grundlegenden Einträgen und Attributen sowie der Erstellung komplexer Übereinstimmungsfilter mit Operatoren (und, oder und negative Operatoren) gesehen.
Sie haben auch gelernt, dass es möglich ist, vorhandene Operatoren zu überlasten, indem Sie erweiterbare Übereinstimmungsoptionen verwenden und den zu verwendenden benutzerdefinierten Operator angeben.
Wenn Sie sich für fortgeschrittene Linux-Systemadministration interessieren, haben wir einen vollständigen Abschnitt auf der Website, also schauen Sie es sich an!