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
- Szukaj LDAP z kontem administratora
- uruchamianie wyszukiwania LDAP za pomocą filtrów
- znalezienie wszystkich obiektów w drzewie katalogów
- znajdowanie kont użytkowników za pomocą ldapsearch
- I Operator używający ldapsearch
- lub operator używający ldapsearch
- filtry negacji za pomocą ldapsearch
- znalezienie konfiguracji serwera LDAP za pomocą ldapsearch
- używanie symboli wieloznacznych w wyszukiwaniach LDAP
- Ldapsearch Zaawansowane opcje
- LDAP Extensible Match Filters
- doładowanie domyślnych operatorów
- wnioski
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
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
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.
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
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))"
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.
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*"
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ź!