GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So durchsuchen Sie LDAP mit ldapsearch (mit Beispielen)

Wenn Sie in einem mittleren bis großen Unternehmen arbeiten, interagieren Sie wahrscheinlich täglich mit LDAP.

Unabhängig davon, ob es sich um einen Windows-Domänencontroller oder einen Linux-OpenLDAP-Server handelt , das LDAP-Protokoll ist sehr nützlich, um die Authentifizierung zu zentralisieren.

Wenn Ihr LDAP-Verzeichnis jedoch wächst, verlieren Sie sich möglicherweise in all den Einträgen, die Sie möglicherweise verwalten müssen.

Glücklicherweise gibt es einen Befehl, der Ihnen hilft, nach Einträgen in einem LDAP-Verzeichnisbaum zu suchen:ldapsearch .

In diesem Tutorial werden wir sehen, wie Sie ganz einfach LDAP mit ldapsearch durchsuchen können .

Wir werden auch die vom Befehl bereitgestellten Optionen überprüfen, um erweiterte LDAP-Suchen durchzuführen .

Durchsuchen Sie LDAP mit ldapsearch

Der einfachste Weg, LDAP zu durchsuchen, ist die Verwendung von ldapsearch mit der Option „-x“ für eine einfache Authentifizierung und die Angabe der Suchbasis mit „-b“.

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>

Nehmen wir als Beispiel an, dass Sie einen OpenLDAP-Server auf dem Host 192.168.178.29 Ihres Netzwerks installiert haben und ausführen.

Wenn Ihr Server eine anonyme Authentifizierung akzeptiert, können Sie eine LDAP-Suchanfrage 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, geht der LDAP-Client davon aus, dass Sie alle Objektklassen Ihres Verzeichnisbaums durchsuchen möchten, wenn Sie keine Filter angeben.

Infolgedessen werden Ihnen viele Informationen präsentiert. Wenn Sie die angezeigten Informationen einschränken möchten, erklären wir Ihnen LDAP-Filter im nächsten Kapitel.

LDAP mit Administratorkonto durchsuchen

In einigen Fällen möchten Sie möglicherweise LDAP-Abfragen als Administratorkonto ausführen, um zusätzliche Informationen angezeigt zu bekommen.

Um dies zu erreichen, müssen Sie eine Bindungsanforderung mit dem 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 Passworts 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 Distinguished Name hat:„cn=admin,dc=devconnected,dc=com “.

Um eine LDAP-Suche durchzuführen Als dieses Konto 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 

Wenn Sie eine LDAP-Suche als Administratorkonto ausführen, werden Sie möglicherweise verschlüsselten Kennwörtern von Benutzern ausgesetzt, stellen Sie also sicher, dass Sie Ihre Abfrage privat ausführen.

Durchführen von LDAP-Suchen mit Filtern

Ausführen einer einfachen LDAP-Suchanfrage ohne Filter ist wahrscheinlich Zeit- und Ressourcenverschwendung.

Meistens möchten Sie eine LDAP-Suche ausführen Abfrage, um bestimmte Objekte in Ihrem LDAP-Verzeichnisbaum zu finden.

Um mit Filtern nach einem LDAP-Eintrag zu suchen, können Sie Ihren Filter am Ende des ldapsearch-Befehls 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 (der Benutzername, das 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 „objectclass“-Filter 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 alle Attribute angezeigt, die im Baum verfügbar sind.

Benutzerkonten mit ldapsearch finden

Angenommen, Sie möchten alle Benutzerkonten in der LDAP-Verzeichnisstruktur finden.

Standardmäßig haben Benutzerkonten höchstwahrscheinlich die strukturelle Objektklasse „Konto“, die verwendet werden kann, um alle Benutzerkonten einzugrenzen.

$ 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 Benutzer-CN, UID und Home-Verzeichnis interessiert sind, würden Sie die folgende LDAP-Suche ausführen

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory

Großartig, Sie haben erfolgreich eine LDAP-Suche mit Filtern und Attributselektoren durchgeführt!

UND-Operator mit ldapsearch

Um mehrere Filter durch „UND“-Operatoren zu trennen, müssen Sie alle Bedingungen in eckige Klammern setzen und am Anfang der Abfrage ein „&“-Zeichen schreiben.

$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"

Nehmen wir zum Beispiel an, Sie möchten alle Einträge finden, die eine „objectclass“ gleich „account“ und eine „uid“ gleich „john“ haben, würden Sie die folgende Abfrage ausführen

$ 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 eckige Klammern setzen und ein „|“ haben. Zeichen, das am Anfang der Abfrage steht.

$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"

Wenn Sie beispielsweise alle Einträge mit einer Objektklasse vom Typ „Konto“ oder „Organisationsrolle“ finden möchten, würden Sie die folgende Abfrage ausführen

$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"

Negationsfilter mit ldapsearch

In einigen Fällen möchten Sie einige der Einträge in Ihrem LDAP-Verzeichnisbaum negativ abgleichen.

Um einen negativen Übereinstimmungsfilter zu haben, müssen Sie Ihre Bedingung(en) mit einem „!“ einschließen. Zeichen und haben Bedingungen, die durch umschließ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, würden Sie die folgende Abfrage schreiben

$ ldapsearch <previous_options> "(!(cn=john))"

LDAP-Serverkonfiguration mit ldapsearch finden

Eine fortgeschrittene Verwendung des Befehls ldapsearch ist das Abrufen der Konfiguration Ihres LDAP-Baums.

Wenn Sie mit OpenLDAP vertraut sind, wissen Sie, dass sich an der Spitze Ihrer LDAP-Hierarchie ein globales Konfigurationsobjekt befindet.

In einigen Fällen möchten Sie möglicherweise Attribute Ihrer LDAP-Konfiguration sehen, um beispielsweise die Zugriffskontrolle oder das Root-Admin-Passwort 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 „EXTERNAL“ 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 einschränken möchten, können Sie mit ldapsearch.

die Objektklasse „olcDatabaseConfig“ angeben
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"

Verwenden von Wildcards in LDAP-Suchen

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 alle Attribute abzugleichen, die mit einer bestimmten Teilzeichenfolge beginnen oder enden.

$ ldapsearch <previous_options> "(object_type)=*(object_value)"

$ ldapsearch <previous_options> "(object_type)=(object_value)*"

Nehmen wir als Beispiel an, Sie möchten alle Einträge finden, 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 gelernt, aber es gibt noch viele andere, die Sie interessieren könnten.

Erweiterbare LDAP-Übereinstimmungsfilter

Erweiterbare LDAP-Übereinstimmungsfilter werden verwendet, um vorhandene Operatoren aufzuladen (z. B. den Gleichheitsoperator), indem Sie den Vergleichstyp angeben, den Sie durchführen möchten.

Supercharging Standardoperatoren

Um einen LDAP-Operator aufzuwerten, müssen Sie die „:=“-Syntax verwenden.

$ ldapsearch <previous_options> "<object_type>:=<object_value>"

Wenn Sie beispielsweise 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, liefert die Suche nach „John“ oder „JOHN“ genau das gleiche Ergebnis.

Infolgedessen möchten Sie die Ergebnisse möglicherweise auf die exakte Übereinstimmung „john“ beschränken und bei der Suche zwischen Groß- und Kleinschreibung unterscheiden.

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 zum Beispiel bei einer Suche zwischen Groß- und Kleinschreibung zu unterscheiden, würden Sie den folgenden Befehl ausführen

$ ldapsearch <previous_options> "cn:caseExactMatch:=john"

Wenn Sie mit LDAP-Übereinstimmungsfiltern nicht vertraut sind, finden Sie hier eine Liste aller verfügbaren Operatoren.

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie einen LDAP-Verzeichnisbaum durchsuchen können Verwenden Sie die LDAP-Suche Befehl.

Sie haben die Grundlagen der Suche nach einfachen Einträgen und Attributen sowie das Erstellen von komplexen Übereinstimmungsfiltern kennengelernt mit Operatoren (and, or und negative Operatoren).

Sie haben auch gelernt, dass es möglich ist, vorhandene Anbieter zu überladen indem Sie erweiterbare Übereinstimmungsoptionen verwenden und den zu verwendenden benutzerdefinierten Operator angeben.

Wenn Sie an fortgeschrittener Linux-Systemadministration interessiert sind, haben wir einen vollständigen Abschnitt auf der Website, der diesem Thema gewidmet ist, also schauen Sie sich das unbedingt an!


Linux
  1. Verwendung des ethtool-Befehls mit Beispielen

  2. SSH zu einem anderen Port als 22:So geht's (mit Beispielen)

  3. So entpacken Sie Dateien unter Linux (mit Beispielen)

  4. So generieren Sie ein SSH-Schlüsselpaar (mit Beispielen)

  5. Wie fülle ich eine Datei mit FF mit dd auf?

So verwenden Sie den Linux-rm-Befehl mit Beispielen

Verwenden des Cat-Befehls unter Linux mit Beispielen

Anleitung zur Google-Suche von der Befehlszeile aus mit Googler

So zeigen Sie Cheatsheets für Linux-Befehle mit z

So installieren und verwenden Sie den Ack-Befehl unter Linux mit Beispielen

Verwendung des Shutdown-Befehls mit Beispielen