Si vous travaillez dans une moyenne à 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 répertoire LDAP se développe, vous risquez de vous perdre dans toutes les entrées que vous pourriez avoir à gérer.
Heureusement, il existe une commande qui vous aidera à rechercher des entrées dans une arborescence de répertoires LDAP : ldapsearch.
Dans ce tutoriel, nous allons voir comment vous pouvez facilement rechercher LDAP en utilisant ldapsearch.
Nous allons également revoir les options fournies par la commande afin d’effectuer des recherches LDAP avancées.
Table des matières
- Recherchez LDAP à l’aide de ldapsearch
- Recherchez LDAP avec un compte administrateur
- Exécuter des recherches LDAP avec des filtres
- Trouver tous les objets de l’arborescence des répertoires
- Recherche de comptes d’utilisateurs à l’aide de ldapsearch
- ET Opérateur utilisant ldapsearch
- OU l’opérateur utilisant ldapsearch
- Filtres de négation en utilisant ldapsearch
- Trouver la configuration du serveur LDAP à l’aide de ldapsearch
- Utilisation de caractères génériques dans les recherches LDAP
- Options avancées Ldapsearch
- Filtres de correspondance LDAP extensibles
- Suralimentation des opérateurs par défaut
- Conclusion
Recherchez LDAP à l’aide de ldapsearch
Le moyen le plus simple de rechercher LDAP est d’utiliser ldapsearch avec l’option « -x” pour une authentification simple et de 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, disons que vous avez 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 voir, si vous ne spécifiez aucun filtre, le client LDAP supposera que vous souhaitez effectuer une recherche sur toutes les classes d’objets de votre arborescence de répertoires.
En conséquence, de nombreuses informations vous seront présentées. Si vous souhaitez restreindre les informations présentées, nous allons expliquer les filtres LDAP dans le chapitre suivant.
Recherchez LDAP avec un compte administrateur
Dans certains cas, vous pouvez exécuter des requêtes LDAP en tant que compte administrateur afin de vous présenter des informations supplémentaires.
Pour y parvenir, vous devrez effectuer une demande de liaison en utilisant le compte administrateur de l’arborescence LDAP.
Pour rechercher 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é à saisir le mot de passe.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
À 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 devez 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
div>
Lorsque vous exécutez une recherche LDAP en tant que compte administrateur, vous pouvez être exposé à des mots de passe chiffrés par l’utilisateur, assurez-vous donc d’exécuter votre requête en privé.
Exécuter des recherches LDAP avec des filtres
Exécuter une requête de recherche LDAP simple sans aucun filtre est susceptible d’être une perte de temps et de ressources.
La plupart du temps, vous souhaitez exécuter une requête de recherche LDAP afin de trouver des objets spécifiques dans votre arborescence de répertoires LDAP.
Pour rechercher une entrée LDAP avec des filtres, vous pouvez ajouter votre filtre à la fin de la commande ldapsearch : à gauche, vous spécifiez 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 de 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.
Recherche de comptes d’utilisateurs à l’aide de ldapsearch
Par exemple, supposons que vous souhaitiez trouver tous les comptes d’utilisateurs dans l’arborescence des répertoires LDAP.
Par défaut, les comptes d’utilisateurs auront très probablement la classe d’objet structurel « account », 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’objet donnée.
Comme spécifié 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 répertoire utilisateur CN, UID et personnel, 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 réussi une recherche LDAP en utilisant des filtres et des sélecteurs d’attributs!
ET Opérateur 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 que 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))"
OU l’opérateur utilisant ldapsearch
Afin d’avoir plusieurs filtres séparés par des opérateurs « OU”, 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, si vous souhaitez trouver toutes les entrées ayant une classe d’objet 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 en utilisant ldapsearch
Dans certains cas, vous souhaitez faire correspondre négativement certaines des entrées de votre Arborescence des répertoires LDAP.
Pour avoir un filtre de correspondance négative, vous devez joindre votre (vos) condition(s) par 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 écrirez 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 serveur LDAP Arbre LDAP.
Si vous connaissez OpenLDAP, vous savez qu’il existe un objet de configuration globale situé en haut de votre hiérarchie LDAP.
Dans certains cas, vous voudrez peut-être voir les attributs de votre configuration LDAP, afin de modifier le contrôle d’accès ou de modifier le mot de passe 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 lancer cette recherche, vous devez utiliser l’option « -Y » et spécifier « EXTERNE » 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 à partir d’un de vos clients LDAP.
Par défaut, cette commande renverra beaucoup de résultats car elle renvoie des backends , schémas et 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
Une autre façon puissante 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 n’importe quel 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)*"
À titre d’exemple, disons que vous voulez trouver toutes les entrées ayant un attribut « uid” commençant par la lettre « j”.
$ ldapsearch <previous_options> "uid=jo*"
Options avancées Ldapsearch
Dans ce tutoriel, vous avez appris les options de base de ldapsearch, mais il y en a beaucoup d’autres qui pourraient vous intéresser.
Filtres de correspondance LDAP extensibles
Les filtres de correspondance LDAP extensibles sont utilisés pour surcharger les opérateurs existants (par exemple l’opérateur d’égalité) en spécifiant le type de comparaison que vous souhaitez effectuer.
Suralimentation des opérateurs par défaut
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é, l’exécution de la recherche sur « john” ou sur « JOHN” renvoie le même résultat exact.
En conséquence, vous pouvez contraindre les résultats à la correspondance exacte « john”, ce qui rend la recherche sensible à la casse.
En utilisant 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 devez exécuter 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 tutoriel, vous avez appris comment rechercher une arborescence de répertoires LDAP à l’aide de la commande ldapsearch.
Vous avez vu les bases de la recherche d’entrées et d’attributs de base ainsi que de la construction de filtres de correspondance complexes avec des opérateurs (et, ou et 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 l’administration système Linux avancée, nous avons une section complète qui lui est dédiée sur le site Web, alors assurez-vous de la vérifier!