Se stai lavorando in un’azienda di medie e grandi dimensioni, probabilmente stai interagendo quotidianamente con LDAP.
Che si tratti di un controller di dominio Windows o di un server Linux OpenLDAP, 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, stiamo andando a vedere come si può facilmente cercare LDAP utilizzando ldapsearch.
Esamineremo anche le opzioni fornite dal comando per eseguire ricerche LDAP avanzate.
Sommario
- Cerca LDAP usando ldapsearch
- Cerca LDAP con account amministratore
- Eseguire ricerche LDAP con filtri
- Trovare tutti gli oggetti nell’albero delle directory
- Trovare gli account utente utilizzando ldapsearch
- E Operatore che utilizza ldapsearch
- O Operatore con ldapsearch
- Negazione Filtri con ldapsearch
- Ricerca di configurazione del server LDAP utilizzando ldapsearch
- Usare i caratteri jolly nelle ricerche LDAP
- Ldapsearch Opzioni Avanzate
- Filtri di corrispondenza estensibili LDAP
- Sovralimentazione degli operatori predefiniti
- Conclusione
Cerca LDAP usando ldapsearch
Il modo più semplice per cercare LDAP è usare ldapsearch con l’opzione “-x” per l’autenticazione semplice e specificare la base di ricerca con “-b”.
Se non si esegue la ricerca direttamente sul server LDAP, sarà necessario specificare l’host con l’opzione “-H”.
$ ldapsearch -x -b <search_base> -H <ldap_host>
Ad esempio, supponiamo di avere un server OpenLDAP installato e in esecuzione sull’host 192.168.178.29 della tua rete.
Se il server accetta l’autenticazione anonima, sarà possibile eseguire una query di ricerca LDAP senza associare l’account amministratore.
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
Come si può vedere, se non si specifica alcun filtro, il client LDAP presuppone che si desidera eseguire una ricerca su tutte le classi di oggetti del vostro albero di directory.
Di conseguenza, ti verranno presentate molte informazioni. Se si desidera limitare le informazioni presentate, ci accingiamo a spiegare filtri LDAP nel prossimo capitolo.
Cerca LDAP con account amministratore
In alcuni casi, potresti voler eseguire query LDAP come account amministratore per avere informazioni aggiuntive presentate all’utente.
Per ottenere ciò, è necessario effettuare una richiesta di bind 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 bind DN e “-W” per essere richiesto per 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 account, è necessario 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 si esegue una ricerca LDAP account amministratore, si può essere esposti a utente password crittografate, in modo da assicurarsi che si esegue la query privatamente.
Eseguire ricerche LDAP con filtri
Eseguire una semplice query di ricerca LDAP senza filtri è probabilmente uno spreco di tempo e risorse.
La maggior parte delle volte, si desidera eseguire una query di ricerca LDAP per trovare oggetti specifici nell’albero delle directory LDAP.
Per cercare una voce LDAP con filtri, è possibile aggiungere il filtro alla fine del comando ldapsearch : a sinistra si specifica il tipo di oggetto e a destra il valore dell’oggetto.
Facoltativamente, è possibile specificare gli attributi da restituire dall’oggetto (il nome utente, la password 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 nell’albero LDAP, è possibile aggiungere il filtro “objectclass” e un carattere jolly “*” per specificare che si desidera restituire tutti gli oggetti.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
Quando si esegue questa query, verranno presentati tutti gli oggetti e tutti gli attributi disponibili nell’albero.
Trovare gli account utente utilizzando ldapsearch
Ad esempio, supponiamo che tu voglia trovare tutti gli account utente nell’albero delle directory LDAP.
Per impostazione predefinita, gli account utente avranno 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 oggetto specificata.
Come specificato nella sezione precedente, puoi aggiungere attributi opzionali alla tua query se vuoi restringere la ricerca.
Per esempio, se siete interessati solo l’utente CN, UID, e la home directory, eseguire il seguente di ricerca LDAP
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
Impressionante, è stato correttamente eseguito una ricerca LDAP utilizzando i filtri e i selettori di attributo!
E Operatore che utilizza ldapsearch
Per avere più filtri separati dagli operatori “E”, devi racchiudere tutte le condizioni tra parentesi e avere un carattere “&” scritto all’inizio della query.
$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
Per esempio, diciamo che si desidera trovare tutte le voci hanno un “objectclass” è uguale a “account” e un “uid” è uguale a “giovanni”, eseguire la seguente query
$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
O Operatore con ldapsearch
per avere più filtri separati da “O” operatori è necessario racchiudere tutte le condizioni indicate tra parentesi e hanno un carattere “|” scritto all’inizio della query.
$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
Per esempio, se si desidera trovare tutte le voci con una classe di oggetti di tipo “account” o di tipo “organizationalRole”, eseguire la seguente query
$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
Negazione Filtri con ldapsearch
In alcuni casi, si desidera negativamente corrispondenza di alcune delle voci nel vostro albero di directory LDAP.
Per avere un filtro di corrispondenza negativo, devi racchiudere le tue condizioni con un”!”carattere e hanno condizioni separate racchiudendo parentesi.
$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
Per esempio, se si desidera abbinare tutte le voci NON avere un attributo “cn” di valore “giovanni”, è possibile scrivere la seguente query
$ ldapsearch <previous_options> "(!(cn=john))"
Ricerca di configurazione del server LDAP utilizzando ldapsearch
Un utilizzo avanzato del comando ldapsearch è quello di recuperare la configurazione del vostro albero LDAP.
Se hai familiarità con OpenLDAP, sai che c’è un oggetto di configurazione globale che si trova nella parte superiore della tua gerarchia LDAP.
In alcuni casi, potresti voler vedere gli attributi della tua configurazione LDAP, per modificare il controllo degli accessi o per modificare la password di amministratore di root, ad esempio.
Per cercare la configurazione LDAP, utilizzare il comando “ldapsearch” e specificare “cn=config” come base di ricerca per l’albero LDAP.
Per eseguire questa ricerca, è necessario 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 client LDAP.
Per impostazione predefinita, questo comando restituirà molti risultati quando restituisce backend, schemi e moduli.
Se si desidera limitare la ricerca alle configurazioni del database, è possibile specificare la classe oggetto “olcDatabaseConfig” con ldapsearch.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"
Usare i caratteri jolly nelle ricerche LDAP
Un altro modo efficace per cercare in un elenco di voci LDAP è usare caratteri jolly come l’asterisco (“*”).
Il carattere jolly ha la stessa funzione dell’asterisco che usi in regex : sarà usato per abbinare qualsiasi attributo che inizia o termina con una data sottostringa.
$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"
Ad esempio, diciamo che vuoi trovare tutte le voci con un attributo “uid” che inizia con la lettera “j”.
$ ldapsearch <previous_options> "uid=jo*"
Ldapsearch Opzioni Avanzate
In questo tutorial, hai imparato su base ldapsearch opzioni, ma ci sono molti altri che potrebbero essere interessati a voi.
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 degli operatori predefiniti
Per sovralimentare un operatore LDAP, è necessario utilizzare la sintassi”:=”.
$ ldapsearch <previous_options> "<object_type>:=<object_value>"
Ad esempio, se si desidera cercare tutte le voci hanno un “cn” che è uguale a “john”, si dovrebbe eseguire il seguente comando
$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"
Come probabilmente avete notato, eseguendo la ricerca su “john” o su “JOHN” restituisce lo stesso risultato esatto.
Di conseguenza, potresti voler vincolare i risultati alla corrispondenza esatta “john”, rendendo la ricerca case sensitive.
Utilizzando ldapsearch, è possibile aggiungere filtri aggiuntivi separati da caratteri”:”.
$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
Ad esempio, per avere una ricerca che sia sensibile al maiuscolo/minuscolo, dovresti eseguire il seguente comando
$ 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 è possibile cercare un albero di directory LDAP utilizzando il comando ldapsearch.
Hai visto le basi della ricerca di voci e attributi di base e della creazione di filtri di corrispondenza complessi con operatori (and, or e operatori negativi).
Hai anche imparato che è possibile sovralimentare gli operatori esistenti utilizzando le opzioni di corrispondenza estensibile e specificando l’operatore personalizzato da utilizzare.
Se siete interessati a Advanced Linux System Administration, abbiamo una sezione completa dedicata ad esso sul sito web, quindi assicuratevi di check it out!