GNU/Linux >> Tutoriels Linux >  >> Linux

Comment rechercher LDAP à l'aide de ldapsearch (avec exemples)

Si vous travaillez dans une moyenne ou grande entreprise, vous interagissez probablement quotidiennement avec LDAP.

Que ce soit sur un contrôleur de domaine Windows ou sur un serveur OpenLDAP Linux , le protocole LDAP est très utile pour centraliser l'authentification.

Cependant, à mesure que votre annuaire LDAP se développe, vous risquez de vous perdre dans toutes les entrées que vous devrez peut-être gérer.

Heureusement, il existe une commande qui vous aidera à rechercher des entrées dans une arborescence d'annuaires LDAP :ldapsearch .

Dans ce didacticiel, nous allons voir comment vous pouvez facilement rechercher LDAP à l'aide de ldapsearch .

Nous allons également passer en revue les options fournies par la commande afin d'effectuer des recherches LDAP avancées .

Rechercher LDAP à l'aide de ldapsearch

Le moyen le plus simple de rechercher dans LDAP consiste à utiliser ldapsearch avec l'option "-x" pour une authentification simple et à spécifier la base de recherche avec "-b".

Si vous n'exécutez pas la recherche directement sur le serveur LDAP, vous devrez spécifier l'hôte avec l'option "-H".

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

Par exemple, supposons que vous ayez un serveur OpenLDAP installé et exécuté sur l'hôte 192.168.178.29 de votre réseau.

Si votre serveur accepte l'authentification anonyme, vous pourrez effectuer une requête de recherche LDAP sans vous lier au compte administrateur.

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

Comme vous pouvez le constater, si vous ne spécifiez aucun filtre, le client LDAP supposera que vous souhaitez lancer une recherche sur toutes les classes d'objets de votre arborescence d'annuaires.

En conséquence, de nombreuses informations vous seront présentées. Si vous souhaitez restreindre les informations présentées, nous allons vous expliquer les filtres LDAP dans le chapitre suivant.

Rechercher LDAP avec un compte administrateur

Dans certains cas, vous souhaiterez peut-être exécuter des requêtes LDAP en tant que compte administrateur afin d'avoir des informations supplémentaires qui vous sont présentées.

Pour ce faire, vous devrez faire une demande de liaison en utilisant le compte administrateur de l'arborescence LDAP.

Pour effectuer une recherche LDAP à l'aide du compte administrateur, vous devez exécuter la requête "ldapsearch" avec l'option "-D" pour le DN de liaison et le "-W" afin d'être invité à entrer le mot de passe.

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

A titre d'exemple, supposons que votre compte administrateur porte le nom distinctif suivant :"cn=admin,dc=devconnected,dc=com ".

Pour effectuer une recherche LDAP en tant que compte, vous devrez exécuter la requête suivante

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

Lors de l'exécution d'une recherche LDAP en tant que compte administrateur, vous pouvez être exposé aux mots de passe cryptés des utilisateurs, alors assurez-vous que vous exécutez votre requête en privé.

Exécuter des recherches LDAP avec des filtres

Exécution d'une simple requête de recherche LDAP sans aucun filtre est susceptible d'être une perte de temps et de ressources.

La plupart du temps, vous souhaitez exécuter une recherche LDAP requête afin de trouver des objets spécifiques dans l'arborescence de votre annuaire LDAP.

Afin de rechercher une entrée LDAP avec des filtres, vous pouvez ajouter votre filtre à la fin de la commande ldapsearch :à gauche vous précisez le type d'objet et à droite la valeur de l'objet.

En option, vous pouvez spécifier les attributs à renvoyer de l'objet (le nom d'utilisateur, le mot de passe de l'utilisateur, etc.)

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

Trouver tous les objets dans l'arborescence des répertoires

Afin de renvoyer tous les objets disponibles dans votre arborescence LDAP, vous pouvez ajouter le filtre "objectclass" et un caractère générique "*" pour spécifier que vous souhaitez renvoyer tous les objets.

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

Lors de l'exécution de cette requête, tous les objets et tous les attributs disponibles dans l'arborescence vous seront présentés.

Rechercher des comptes d'utilisateurs à l'aide de ldapsearch

Par exemple, supposons que vous souhaitiez rechercher tous les comptes d'utilisateurs dans l'arborescence de l'annuaire LDAP.

Par défaut, les comptes d'utilisateurs auront très probablement la classe d'objets structurelle "compte", qui peut être utilisée pour restreindre tous les comptes d'utilisateurs.

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

Par défaut, la requête renverra tous les attributs disponibles pour la classe d'objets donnée.

Comme indiqué dans la section précédente, vous pouvez ajouter des attributs facultatifs à votre requête si vous souhaitez affiner votre recherche.

Par exemple, si vous n'êtes intéressé que par le CN, l'UID et le répertoire personnel de l'utilisateur, vous exécuterez la recherche LDAP suivante

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

Génial, vous avez effectué avec succès une recherche LDAP à l'aide de filtres et de sélecteurs d'attribut !

Opérateur ET utilisant ldapsearch

Afin d'avoir plusieurs filtres séparés par des opérateurs "ET", vous devez placer toutes les conditions entre crochets et avoir un caractère "&" écrit au début de la requête.

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

Par exemple, disons que vous voulez trouver toutes les entrées ont un "objectclass" qui est égal à "account" et un "uid" qui est égal à "john", vous exécuterez la requête suivante

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

Opérateur OR utilisant ldapsearch

Afin d'avoir plusieurs filtres séparés par des opérateurs "OU", vous devez mettre toutes les conditions entre crochets et avoir un "|" caractère écrit au début de la requête.

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

Par exemple, si vous souhaitez rechercher toutes les entrées ayant une classe d'objets de type "account" ou ou de type "organizationalRole", vous exécuterez la requête suivante

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

Filtres de négation utilisant ldapsearch

Dans certains cas, vous souhaitez faire correspondre négativement certaines des entrées de votre arborescence d'annuaire LDAP.

Afin d'avoir un filtre de correspondance négatif, vous devez entourer votre ou vos conditions d'un "!" caractère et avoir des conditions séparées par des parenthèses.

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

Par exemple, si vous souhaitez faire correspondre toutes les entrées N'ayant PAS d'attribut "cn" de valeur "john", vous devez écrire la requête suivante

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

Trouver la configuration du serveur LDAP à l'aide de ldapsearch

Une utilisation avancée de la commande ldapsearch consiste à récupérer la configuration de votre arborescence LDAP.

Si vous connaissez OpenLDAP, vous savez qu'il existe un objet de configuration globale au sommet de votre hiérarchie LDAP.

Dans certains cas, vous pouvez souhaiter voir les attributs de votre configuration LDAP, afin de modifier le contrôle d'accès ou de modifier le mot de passe de l'administrateur root par exemple.

Pour rechercher la configuration LDAP, utilisez la commande "ldapsearch" et spécifiez "cn=config" comme base de recherche pour votre arborescence LDAP.

Pour exécuter cette recherche, vous devez utiliser l'option "-Y" et spécifier "EXTERNAL" comme mécanisme d'authentification.

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

Remarque :cette commande doit être exécutée directement sur le serveur, pas depuis l'un de vos clients LDAP.

Par défaut, cette commande renverra beaucoup de résultats car elle renvoie des backends, des schémas et des modules.

Si vous souhaitez limiter votre recherche aux configurations de base de données, vous pouvez spécifier la classe d'objets "olcDatabaseConfig" avec ldapsearch.

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

Utilisation de caractères génériques dans les recherches LDAP

Un autre moyen efficace de rechercher dans une liste d'entrées LDAP consiste à utiliser des caractères génériques tels que l'astérisque ("*").

Le caractère générique a la même fonction que l'astérisque que vous utilisez dans regex :il sera utilisé pour faire correspondre tout attribut commençant ou se terminant par une sous-chaîne donnée.

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

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

Par exemple, supposons que vous souhaitiez rechercher toutes les entrées ayant un attribut "uid" commençant par la lettre "j".

$ ldapsearch <previous_options> "uid=jo*"

Options avancées de Ldapsearch

Dans ce didacticiel, vous avez découvert les options de base de ldapsearch, mais il y en a beaucoup d'autres qui pourraient vous intéresser.

Filtres de correspondance extensibles LDAP

Des filtres de correspondance LDAP extensibles sont utilisés pour surcharger les opérateurs existants (par exemple l'opérateur d'égalité) en précisant le type de comparaison que vous souhaitez effectuer.

Opérateurs par défaut de suralimentation

Pour suralimenter un opérateur LDAP, vous devez utiliser la syntaxe ":=".

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

Par exemple, si vous souhaitez rechercher toutes les entrées ayant un "cn" égal à "john", vous exécuterez la commande suivante

$ ldapsearch <previous_options> "cn:=john"

# Which is equivalent to

$ ldapsearch <previous_options> "cn=john"

Comme vous l'avez probablement remarqué, lancer la recherche sur "john" ou sur "JOHN" renvoie exactement le même résultat.

Par conséquent, vous souhaiterez peut-être limiter les résultats à la correspondance exacte "john", ce qui rendra la recherche sensible à la casse.

À l'aide de ldapsearch, vous pouvez ajouter des filtres supplémentaires séparés par des caractères " :".

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

Par exemple, pour avoir une recherche sensible à la casse, vous exécuterez la commande suivante

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

Si vous n'êtes pas familier avec les filtres de correspondance LDAP, voici une liste de tous les opérateurs à votre disposition.

Conclusion

Dans ce didacticiel, vous avez appris comment effectuer une recherche dans une arborescence d'annuaires LDAP en utilisant ldapsearch commande.

Vous avez vu les bases de la recherche d'entrées et d'attributs de base ainsi que la création de filtres de correspondance complexes avec les opérateurs (et, ou et les opérateurs négatifs).

Vous avez également appris qu'il est possible de suralimenter les opérateurs existants en utilisant des options de correspondance extensibles et en spécifiant l'opérateur personnalisé à utiliser.

Si vous êtes intéressé par Advanced Linux System Administration, nous avons une section complète qui lui est consacrée sur le site Web, alors assurez-vous de la consulter !


Linux
  1. SSH vers un port autre que 22 :comment le faire (avec exemples)

  2. Comment décompresser des fichiers sous Linux (avec exemples)

  3. Comment générer une paire de clés SSH (avec exemples)

  4. Ajouter un utilisateur au groupe sous Linux, comment le faire (avec exemples)

  5. Comment faire fonctionner Ldapsearch sur Sles sur Tls à l'aide d'un certificat ?

Comment utiliser la commande Linux rm avec des exemples

Utilisation de la commande Cat sous Linux avec des exemples

Comment effectuer une recherche Google à partir de la ligne de commande à l'aide de Googler

Comment afficher les feuilles de triche des commandes Linux en utilisant par exemple

Comment installer et utiliser la commande Ack sous Linux avec des exemples

Comment utiliser la commande shutdown avec des exemples