GNU/Linux >> Linux Esercitazione >  >> Linux

Come cercare LDAP usando ldapsearch (con esempi)

Se lavori in un'azienda di dimensioni medio-grandi, probabilmente stai interagendo quotidianamente con LDAP.

Che si tratti di un controller di dominio Windows o di un server OpenLDAP Linux , il protocollo LDAP è molto utile per centralizzare l'autenticazione.

Tuttavia, man mano che la tua directory LDAP cresce, potresti perderti in tutte le voci che potresti dover gestire.

Fortunatamente, c'è un comando che ti aiuterà a cercare le voci in un albero di directory LDAP:ldapsearch .

In questo tutorial, vedremo come cercare LDAP utilizzando ldapsearch facilmente .

Esamineremo anche le opzioni fornite dal comando per eseguire ricerche LDAP avanzate .

Cerca LDAP utilizzando ldapsearch

Il modo più semplice per cercare LDAP è utilizzare ldapsearch con l'opzione "-x" per un'autenticazione semplice e specificare la base di ricerca con "-b".

Se non stai eseguendo la ricerca direttamente sul server LDAP, dovrai specificare l'host con l'opzione “-H”.

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

Ad esempio, supponiamo che tu abbia un server OpenLDAP installato e in esecuzione sull'host 192.168.178.29 della tua rete.

Se il tuo server accetta l'autenticazione anonima, sarai in grado di eseguire una query di ricerca LDAP senza vincolarti all'account amministratore.

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

Come puoi vedere, se non specifichi alcun filtro, il client LDAP presumerà che tu voglia eseguire una ricerca su tutte le classi di oggetti del tuo albero di directory.

Di conseguenza, ti verranno presentate molte informazioni. Se desideri limitare le informazioni presentate, spiegheremo i filtri LDAP nel prossimo capitolo.

Cerca in LDAP con l'account amministratore

In alcuni casi, potresti voler eseguire query LDAP come account amministratore per ricevere informazioni aggiuntive.

Per ottenere ciò, dovrai effettuare una richiesta di collegamento utilizzando l'account amministratore dell'albero LDAP.

Per cercare LDAP utilizzando l'account amministratore, è necessario eseguire la query "ldapsearch" con l'opzione "-D" per il DN di collegamento e "-W" in modo che venga richiesta la password.

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

Ad esempio, supponiamo che il tuo account amministratore abbia il seguente nome distinto :“cn=admin,dc=devconnected,dc=com “.

Per eseguire una ricerca LDAP come questo account, dovresti eseguire la seguente query

$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W 

Quando esegui una ricerca LDAP come account amministratore, potresti essere esposto a password crittografate dall'utente, quindi assicurati di eseguire la query in privato.

Esecuzione di ricerche LDAP con filtri

Esecuzione di una semplice query di ricerca LDAP senza alcun filtro rischia di essere una perdita di tempo e risorse.

Nella maggior parte dei casi, desideri eseguire una ricerca LDAP query per trovare oggetti specifici nella struttura della directory LDAP.

Per cercare una voce LDAP con filtri, puoi aggiungere il tuo filtro alla fine del comando ldapsearch:a sinistra specifichi il tipo di oggetto ea destra il valore dell'oggetto.

Facoltativamente, puoi specificare gli attributi che devono essere restituiti dall'oggetto (il nome utente, la password dell'utente ecc.)

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

Trovare tutti gli oggetti nell'albero delle directory

Per restituire tutti gli oggetti disponibili nel tuo albero LDAP, puoi aggiungere il filtro "objectclass" e un carattere jolly "*" per specificare che vuoi restituire tutti gli oggetti.

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

Quando esegui questa query, ti verranno presentati tutti gli oggetti e tutti gli attributi disponibili nell'albero.

Trovare account utente utilizzando ldapsearch

Ad esempio, supponiamo di voler trovare tutti gli account utente nell'albero delle directory LDAP.

Per impostazione predefinita, gli account utente avranno molto probabilmente la classe di oggetti strutturali "account", che può essere utilizzata per restringere tutti gli account utente.

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

Per impostazione predefinita, la query restituirà tutti gli attributi disponibili per la classe di oggetti specificata.

Come specificato nella sezione precedente, puoi aggiungere attributi facoltativi alla tua query se desideri restringere la ricerca.

Ad esempio, se sei interessato solo all'utente CN, UID e home directory, esegui la seguente ricerca LDAP

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

Fantastico, hai eseguito con successo una ricerca LDAP utilizzando filtri e selettori di attributi!

AND Operatore che utilizza ldapsearch

Per avere più filtri separati da operatori "AND", devi racchiudere tutte le condizioni tra parentesi e avere un carattere "&" scritto all'inizio della query.

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

Ad esempio, supponiamo che tu voglia trovare tutte le voci che hanno una "classe di oggetti" che è uguale a "account" e un "uid" che è uguale a "john", dovresti eseguire la seguente query

$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"

OPPURE Operatore che utilizza ldapsearch

Per avere più filtri separati da operatori "OR", devi racchiudere tutte le condizioni tra parentesi e avere un "|" carattere scritto all'inizio della query.

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

Ad esempio, se vuoi trovare tutte le voci che hanno una classe di oggetti di tipo "account" o o tipo "organizationalRole", eseguire la query seguente

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

Filtri di negazione utilizzando ldapsearch

In alcuni casi, vuoi far corrispondere negativamente alcune delle voci nella tua struttura di directory LDAP.

Per avere un filtro di corrispondenza negativa, devi racchiudere le tue condizioni con un "!" carattere e hanno condizioni separate da parentesi racchiuse.

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

Ad esempio, se vuoi abbinare tutte le voci NON aventi un attributo "cn" di valore "john", dovresti scrivere la seguente query

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

Trovare la configurazione del server LDAP utilizzando ldapsearch

Un uso avanzato del comando ldapsearch consiste nel recuperare la configurazione del tuo albero LDAP.

Se hai familiarità con OpenLDAP, sai che esiste un oggetto di configurazione globale in cima alla tua gerarchia LDAP.

In alcuni casi, potresti voler vedere gli attributi della tua configurazione LDAP, ad esempio per modificare il controllo dell'accesso o per modificare la password dell'amministratore root.

Per cercare la configurazione LDAP, usa il comando “ldapsearch” e specifica “cn=config” come base di ricerca per il tuo albero LDAP.

Per eseguire questa ricerca, devi utilizzare l'opzione "-Y" e specificare "ESTERNO" come meccanismo di autenticazione.

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

Nota :questo comando deve essere eseguito direttamente sul server, non da uno dei tuoi client LDAP.

Per impostazione predefinita, questo comando restituirà molti risultati poiché restituisce backend, schemi e moduli.

Se vuoi limitare la tua ricerca alle configurazioni del database, puoi specificare la classe di oggetti "olcDatabaseConfig" con ldapsearch.

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

Utilizzo di caratteri jolly nelle ricerche LDAP

Un altro metodo efficace per cercare in un elenco di voci LDAP è utilizzare caratteri jolly come l'asterisco ("*").

Il carattere jolly ha la stessa funzione dell'asterisco che usi in regex :verrà utilizzato per abbinare qualsiasi attributo che inizia o termina con una determinata sottostringa.

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

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

Ad esempio, supponiamo di voler trovare tutte le voci che hanno un attributo "uid" che inizia con la lettera "j".

$ ldapsearch <previous_options> "uid=jo*"

Opzioni avanzate di Ldapsearch

In questo tutorial, hai appreso le opzioni di base di ldapsearch, ma ce ne sono molte altre che potrebbero interessarti.

Filtri di corrispondenza estensibili LDAP

I filtri di corrispondenza LDAP estensibili vengono utilizzati per potenziare gli operatori esistenti (ad esempio l'operatore di uguaglianza) specificando il tipo di confronto che si desidera eseguire.

Sovralimentazione operatori predefiniti

Per potenziare un operatore LDAP, devi utilizzare la sintassi “:=”.

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

Ad esempio, se vuoi cercare tutte le voci che hanno un "cn" uguale a "john", dovresti eseguire il comando seguente

$ ldapsearch <previous_options> "cn:=john"

# Which is equivalent to

$ ldapsearch <previous_options> "cn=john"

Come probabilmente avrai notato, eseguendo la ricerca su “john” o su “JOHN” si ottiene lo stesso identico risultato.

Di conseguenza, potresti voler vincolare i risultati alla corrispondenza esatta "john", facendo distinzione tra maiuscole e minuscole.

Utilizzando ldapsearch, puoi aggiungere filtri aggiuntivi separati dai caratteri ":".

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

Ad esempio, per avere una ricerca con distinzione tra maiuscole e minuscole, eseguire il comando seguente

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

Se non hai familiarità con i filtri di corrispondenza LDAP, ecco un elenco di tutti gli operatori a tua disposizione.

Conclusione

In questo tutorial, hai imparato come cercare in un albero di directory LDAP utilizzando ldapsearch comando.

Hai visto le nozioni di base sulla ricerca di voci e attributi di base, nonché sulla creazione di filtri di corrispondenza complessi con operatori (and, or e operatori negativi).

Hai anche appreso che è possibile potenziare gli operatori esistenti utilizzando opzioni di corrispondenza estensibili e specificando l'operatore personalizzato da utilizzare.

Se sei interessato all'amministrazione avanzata del sistema Linux, abbiamo una sezione completa dedicata ad esso sul sito Web, quindi assicurati di dargli un'occhiata!


Linux
  1. SSH per il porting diverso da 22:come farlo (con esempi)

  2. Come decomprimere i file in Linux (con esempi)

  3. Come generare una coppia di chiavi SSH (con esempi)

  4. Aggiungi utente al gruppo in Linux, come farlo (con esempi)

  5. Come riempire un file con FF usando dd?

Come utilizzare il comando Linux rm con esempi

Utilizzo di Cat Command in Linux con esempi

Come cercare su Google dalla riga di comando utilizzando Googler

Come visualizzare i cheatsheet dei comandi di Linux usando ad es

Come installare e utilizzare il comando Ack in Linux con esempi

Come usare il comando di spegnimento con esempi