jak przeszukiwać LDAP za pomocą Ldapsearch (z przykładami)

Jeśli pracujesz w średniej lub dużej firmie, prawdopodobnie codziennie współpracujesz z LDAP.

niezależnie od tego, czy jest to kontroler domeny Windows, czy serwer OpenLDAP Linux, protokół LDAP jest bardzo przydatny do centralizacji uwierzytelniania.

jednak wraz z rozwojem katalogu LDAP możesz zgubić się we wszystkich wpisach, którymi możesz zarządzać.

na szczęście istnieje polecenie, które pomoże Ci wyszukać wpisy w drzewie katalogów LDAP : ldapsearch.

w tym samouczku zobaczymy, jak łatwo przeszukiwać LDAP za pomocą ldapsearch.

przejrzymy również opcje dostarczane przez polecenie w celu wykonania zaawansowanych wyszukiwań LDAP.

spis treści

wyszukaj LDAP za pomocą ldapsearch

najprostszym sposobem wyszukiwania LDAP jest użycie ldapsearch z opcją „-x” do prostego uwierzytelniania i określenie bazy wyszukiwania za pomocą „-b”.

Jeśli nie uruchamiasz wyszukiwania bezpośrednio na serwerze LDAP, musisz określić host z opcją „-H”.

$ ldapsearch -x -b <search_base> -H <ldap_host>

jako przykład załóżmy, że masz zainstalowany i uruchomiony serwer OpenLDAP na hoście 192.168.178.29 Twojej sieci.

Jeśli twój serwer akceptuje uwierzytelnianie anonimowe, będziesz mógł wykonać zapytanie LDAP bez powiązania z kontem administratora.

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
podstawowe zapytanie LDAP

jak widać, jeśli nie podasz żadnych filtrów, klient LDAP zakłada, że chcesz uruchomić wyszukiwanie we wszystkich klasach obiektów w drzewie katalogów.

w rezultacie otrzymasz wiele informacji. Jeśli chcesz ograniczyć prezentowane informacje, wyjaśnimy filtry LDAP w następnym rozdziale.

Szukaj LDAP z kontem administratora

w niektórych przypadkach możesz chcieć uruchomić zapytania LDAP jako konto administratora, aby uzyskać dodatkowe informacje.

aby to osiągnąć, musisz złożyć żądanie wiązania za pomocą konta administratora drzewa LDAP.

aby wyszukać LDAP za pomocą konta administratora, musisz wykonać zapytanie „ldapsearch” z opcją „-D” dla bind DN i „-W”, aby zostać poproszonym o hasło.

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W

powiedzmy, że Twoje konto administratora ma następującą wyróżnioną nazwę : „cn=admin,dc=devconnected,dc=com”.

aby przeprowadzić wyszukiwanie LDAP jako To konto, musisz uruchomić następujące zapytanie

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W 
wyszukiwanie ldap za pomocą konta administratora

uruchamiając wyszukiwanie LDAP jako konto administratora, możesz być narażony na zaszyfrowane hasła użytkownika, więc upewnij się, że twoje zapytanie jest uruchamiane prywatnie.

uruchamianie wyszukiwania LDAP za pomocą filtrów

uruchamianie zwykłego zapytania LDAP bez żadnych filtrów może być stratą czasu i zasobów.

w większości przypadków chcesz uruchomić zapytanie LDAP, aby znaleźć określone obiekty w drzewie katalogów LDAP.

aby wyszukać wpis LDAP z filtrami, możesz dołączyć swój filtr na końcu polecenia ldapsearch : po lewej stronie określasz typ obiektu, a po prawej wartość obiektu.

Opcjonalnie można określić atrybuty zwracane z obiektu (nazwa użytkownika, hasło użytkownika itp.)

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

znalezienie wszystkich obiektów w drzewie katalogów

aby zwrócić wszystkie obiekty dostępne w drzewie LDAP, możesz dołączyć filtr „objectclass” i znak wieloznaczny”*”, aby określić, że chcesz zwrócić wszystkie obiekty.

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"

podczas wykonywania tego zapytania zostaną wyświetlone wszystkie obiekty i wszystkie atrybuty dostępne w drzewie.

znajdowanie kont użytkowników za pomocą ldapsearch

na przykład, załóżmy, że chcesz znaleźć wszystkie konta użytkowników w drzewie katalogów LDAP.

domyślnie konta użytkowników będą miały klasę obiektu strukturalnego „konto”, która może być użyta do zawężenia wszystkich kont użytkowników.

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

domyślnie zapytanie zwróci wszystkie atrybuty dostępne dla danej klasy obiektu.

Znajdź wszystkich użytkowników w ldap za pomocą ldapsearch

jak określono w poprzedniej sekcji, możesz dodać opcjonalne atrybuty do zapytania, jeśli chcesz zawęzić wyszukiwanie.

na przykład, jeśli interesuje Cię tylko katalog użytkownika CN, UID i katalog domowy, możesz uruchomić następujące wyszukiwanie LDAP

$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
określając atrybuty ldap w ldapsearch

niesamowite, pomyślnie wykonałeś wyszukiwanie LDAP za pomocą filtrów i selektorów atrybutów!

I Operator używający ldapsearch

aby mieć wiele filtrów oddzielonych operatorami „i”, musisz zawrzeć wszystkie warunki między nawiasami i mieć znak „&” zapisany na początku zapytania.

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

na przykład, załóżmy, że wszystkie wpisy mają „objectclass” równy „account” I „uid” równy „john”, wykonasz następujące zapytanie

$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
i operator LDAP search query

lub operator używający ldapsearch

aby mieć wiele filtrów oddzielonych operatorami „lub”, musisz umieścić wszystkie warunki w nawiasach i mieć znak „|” zapisany na początku zapytania.

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

na przykład, jeśli chcesz znaleźć wszystkie wpisy posiadające klasę obiektu typu „account” lub typu „organizationalRole”, wykonasz następujące zapytanie

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

filtry negacji za pomocą ldapsearch

w niektórych przypadkach chcesz negatywnie dopasować niektóre wpisy w twoje drzewo katalogów LDAP.

aby mieć filtr dopasowania ujemnego, musisz dołączyć swoje warunki do „!”character and have conditions separated by enclosing parenthesis.

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

na przykład, jeśli chcesz dopasować wszystkie wpisy nie posiadające atrybutu „cn” wartości „john”, napisz następujące zapytanie

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

znalezienie konfiguracji serwera LDAP za pomocą ldapsearch

jednym z zaawansowanych zastosowań polecenia ldapsearch jest pobranie konfiguracji serwera LDAP drzewo.

Jeśli znasz OpenLDAP, wiesz, że na górze Twojej hierarchii LDAP znajduje się globalny obiekt konfiguracyjny.

w niektórych przypadkach możesz chcieć zobaczyć atrybuty swojej konfiguracji LDAP, na przykład w celu modyfikacji kontroli dostępu lub modyfikacji hasła administratora roota.

aby wyszukać konfigurację LDAP, użyj polecenia „ldapsearch” i określ „cn=config” jako bazę wyszukiwania dla drzewa LDAP.

aby uruchomić to wyszukiwanie, musisz użyć opcji „-Y” i określić „zewnętrzny” jako mechanizm uwierzytelniania.

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config 

Uwaga : polecenie to musi być uruchomione bezpośrednio na serwerze, a nie z jednego z Twoich klientów LDAP.

wyszukiwanie obiektu konfiguracyjnego ldap

Domyślnie to polecenie zwróci wiele wyników, ponieważ zwraca backend, schematy i moduły.

Jeśli chcesz ograniczyć wyszukiwanie do konfiguracji bazy danych, możesz określić klasę obiektu „olcDatabaseConfig” za pomocą ldapsearch.

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"

używanie symboli wieloznacznych w wyszukiwaniach LDAP

innym potężnym sposobem przeszukiwania listy wpisów LDAP jest użycie znaków wieloznacznych, takich jak gwiazdka („*”).

znak wieloznaczny ma taką samą funkcję jak gwiazdka, której używasz w wyrażeniach regularnych : będzie używany do dopasowania dowolnego atrybutu rozpoczynającego się lub kończącego podciągiem.

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

jako przykład, załóżmy, że chcesz znaleźć wszystkie wpisy posiadające atrybut „uid” zaczynający się od litery „j”.

$ ldapsearch <previous_options> "uid=jo*"
używanie symboli wieloznacznych w zapytaniach LDAP

Ldapsearch Zaawansowane opcje

w tym samouczku nauczyłeś się podstawowych opcji ldapsearch, ale jest wiele innych, które mogą Cię zainteresować.

LDAP Extensible Match Filters

Extensible LDAP match filters są używane do ładowania istniejących operatorów (na przykład operatora równości) poprzez określenie typu porównania, które chcesz wykonać.

doładowanie domyślnych operatorów

aby doładować operatora LDAP, musisz użyć składni”:=”.

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

na przykład, jeśli chcesz wyszukać wszystkie wpisy, które mają „cn” równe „john”, wykonasz następujące polecenie

$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"

jak prawdopodobnie zauważyłeś, uruchomienie wyszukiwania na „john” lub na „JOHN” zwraca ten sam dokładny wynik.

w rezultacie możesz ograniczyć wyniki do dokładnego dopasowania „john”, dzięki czemu wielkość liter w wyszukiwaniu jest wrażliwa.

używając ldapsearch, możesz dodać dodatkowe filtry oddzielone znakami”:”.

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

na przykład, aby mieć wyszukiwanie z uwzględnieniem wielkości liter, należy uruchomić następujące polecenie

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

Jeśli nie znasz filtrów dopasowania LDAP, oto lista wszystkich dostępnych operatorów.

wnioski

w tym samouczku nauczyłeś się, jak przeszukiwać drzewo katalogów LDAP za pomocą polecenia ldapsearch.

poznałeś podstawy wyszukiwania podstawowych wpisów i atrybutów, a także budowania złożonych filtrów dopasowujących operatory (operatory and, or I negative).

nauczyłeś się również, że możliwe jest doładowanie istniejących operatorów poprzez użycie rozszerzalnych opcji dopasowania i określenie operatora niestandardowego, który ma być użyty.

Jeśli jesteś zainteresowany zaawansowaną administracją systemem Linux, mamy na stronie pełną sekcję poświęconą temu systemowi, więc koniecznie sprawdź!

ldap

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *