Si está trabajando en una empresa mediana o grande, probablemente esté interactuando a diario con LDAP.
Ya sea en un controlador de dominio de Windows o en un servidor OpenLDAP de Linux, el protocolo LDAP es muy útil para centralizar la autenticación.
Sin embargo, a medida que su directorio LDAP crece, es posible que se pierda en todas las entradas que tenga que administrar.
Afortunadamente, hay un comando que le ayudará a buscar entradas en un árbol de directorios LDAP : ldapsearch.
En este tutorial, vamos a ver cómo puede buscar fácilmente LDAP usando ldapsearch.
También vamos a revisar las opciones proporcionadas por el comando para realizar búsquedas LDAP avanzadas.
Tabla de contenidos
- Buscar LDAP usando ldapsearch
- Buscar LDAP con cuenta de administrador
- Ejecutar búsquedas LDAP con filtros
- Buscar todos los objetos en el árbol de directorios
- Búsqueda de cuentas de usuario mediante ldapsearch
- Y Operador que usa ldapsearch
- U Operador utilizando ldapsearch
- Filtros de negación utilizando ldapsearch
- Encontrar la configuración del servidor LDAP mediante ldapsearch
- Uso de comodines en búsquedas LDAP
- Opciones avanzadas de Ldapsearch
- Filtros de coincidencia LDAP extensibles
- Sobrealimentar operadores predeterminados
- Conclusión
Buscar LDAP usando ldapsearch
La forma más fácil de buscar LDAP es usar ldapsearch con la opción «-x» para una autenticación simple y especificar la base de búsqueda con «-b».
Si no está ejecutando la búsqueda directamente en el servidor LDAP, tendrá que especificar el host con la opción «- H».
$ ldapsearch -x -b <search_base> -H <ldap_host>
Como ejemplo, digamos que tiene un servidor OpenLDAP instalado y ejecutándose en el host 192.168.178.29 de su red.
Si su servidor acepta autenticación anónima, podrá realizar una consulta de búsqueda LDAP sin vincularse a la cuenta de administrador.
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29
Como puede ver, si no especifica ningún filtro, el cliente LDAP asumirá que desea ejecutar una búsqueda en todas las clases de objetos de su árbol de directorios.
Como consecuencia, se le presentará mucha información. Si desea restringir la información presentada, vamos a explicar los filtros LDAP en el siguiente capítulo.
Buscar LDAP con cuenta de administrador
En algunos casos, es posible que desee ejecutar consultas LDAP como cuenta de administrador para que se le presente información adicional.
Para lograrlo, deberá realizar una solicitud de enlace utilizando la cuenta de administrador del árbol LDAP.
Para buscar LDAP usando la cuenta de administrador, debe ejecutar la consulta» ldapsearch «con la opción»- D «para el DN de enlace y el»- W » para que se le solicite la contraseña.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W
Como ejemplo, digamos que su cuenta de administrador tiene el siguiente nombre distinguido: «cn = admin, dc=devconnected,dc = com».
Para realizar una búsqueda LDAP como esta cuenta, tendría que ejecutar la siguiente consulta
$ ldapsearch -x -b "dc=devconnected,dc=com" -H ldap://192.168.178.29 -D "cn=admin,dc=devconnected,dc=com" -W
Al ejecutar una búsqueda LDAP como cuenta de administrador, puede estar expuesto a contraseñas cifradas de usuario, así que asegúrese de ejecutar la consulta de forma privada.
Ejecutar búsquedas LDAP con filtros
Ejecutar una consulta de búsqueda LDAP sin filtros es probable que sea una pérdida de tiempo y recursos.
La mayoría de las veces, desea ejecutar una consulta de búsqueda LDAP para encontrar objetos específicos en el árbol de directorios LDAP.
Para buscar una entrada LDAP con filtros, puede agregar su filtro al final del comando ldapsearch : a la izquierda especifique el tipo de objeto y a la derecha el valor del objeto.
Opcionalmente, puede especificar los atributos que se devolverán del objeto (el nombre de usuario, la contraseña de usuario, etc.).)
$ ldapsearch <previous_options> "(object_type)=(object_value)" <optional_attributes>
Buscar todos los objetos en el árbol de directorios
Para devolver todos los objetos disponibles en el árbol LDAP, puede añadir el filtro «clase de objeto» y un carácter comodín «*» para especificar que desea devolver todos los objetos.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=*"
Al ejecutar esta consulta, se le presentarán todos los objetos y atributos disponibles en el árbol.
Búsqueda de cuentas de usuario mediante ldapsearch
Por ejemplo, supongamos que desea buscar todas las cuentas de usuario en el árbol de directorios LDAP.
De forma predeterminada, lo más probable es que las cuentas de usuario tengan la clase de objeto estructural «cuenta», que se puede usar para reducir todas las cuentas de usuario.
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account"
De forma predeterminada, la consulta devolverá todos los atributos disponibles para la clase de objeto dada.
Como se especificó en la sección anterior, puede agregar atributos opcionales a su consulta si desea limitar su búsqueda.
Por ejemplo, si solo está interesado en el directorio CN, UID y home del usuario, ejecutará la siguiente búsqueda LDAP
$ ldapsearch -x -b <search_base> -H <ldap_host> -D <bind_dn> -W "objectclass=account" cn uid homeDirectory
Impresionante, ¡ha realizado con éxito una búsqueda LDAP utilizando filtros y selectores de atributos!
Y Operador que usa ldapsearch
Para tener varios filtros separados por operadores «Y», debe encerrar todas las condiciones entre corchetes y tener un carácter «&» escrito al principio de la consulta.
$ ldapsearch <previous_options> "(&(<condition_1>)(<condition_2>)...)"
Por ejemplo, digamos que usted desea encontrar todas las entradas tienen una «objectclass» es igual a «cuenta» y un «uid» es igual a «juan», puede ejecutar la siguiente consulta
$ ldapsearch <previous_options> "(&(objectclass=account)(uid=john))"
U Operador utilizando ldapsearch
con el fin De tener varios filtros separados por «O» de los operadores, tendrá que incluya todas las condiciones entre corchetes y tiene un carácter «|» escrito en el comienzo de la consulta.
$ ldapsearch <previous_options> "(|(<condition_1>)(<condition_2>)...)"
Por ejemplo, si desea encontrar todas las entradas que tengan una clase de objeto de tipo «cuenta» o de tipo «organizationalRole», ejecutará la siguiente consulta
$ ldapsearch <previous_options> "(|(objectclass=account)(objectclass=organizationalRole))"
Filtros de negación utilizando ldapsearch
En algunos casos, desea que coincidan negativamente algunas de las entradas su árbol de directorios LDAP.
Para tener un filtro de coincidencia negativa, debe incluir su(s) condición (s) con un «!»carácter y tener condiciones separadas entre paréntesis.
$ ldapsearch <previous_options> "(!(<condition_1>)(<condition_2>)...)"
Por ejemplo, si desea hacer coincidir todas las entradas QUE NO tengan un atributo «cn» de valor «john», escribiría la siguiente consulta
$ ldapsearch <previous_options> "(!(cn=john))"
Encontrar la configuración del servidor LDAP mediante ldapsearch
Un uso avanzado del comando ldapsearch es recuperar la configuración de su servidor LDAP Árbol LDAP.
Si está familiarizado con OpenLDAP, sabe que hay un objeto de configuración global en la parte superior de su jerarquía LDAP.
En algunos casos, es posible que desee ver los atributos de su configuración LDAP, para modificar el control de acceso o para modificar la contraseña de administrador raíz, por ejemplo.
Para buscar la configuración LDAP, utilice el comando» ldapsearch «y especifique» cn=config » como base de búsqueda para su árbol LDAP.
Para ejecutar esta búsqueda, debe usar la opción «-Y» y especificar «EXTERNAL» como mecanismo de autenticación.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
Nota : este comando debe ejecutarse directamente en el servidor, no desde uno de sus clientes LDAP.
De forma predeterminada, este comando devolverá muchos resultados a medida que devuelve los motores, esquemas y módulos.
Si desea restringir su búsqueda a configuraciones de base de datos, puede especificar la clase de objeto «olcDatabaseConfig» con ldapsearch.
$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config "(objectclass=olcDatabaseConfig)"
Uso de comodines en búsquedas LDAP
Otra forma poderosa de buscar a través de una lista de entradas LDAP es usar caracteres comodines como el asterisco («*»).
El carácter comodín tiene la misma función que el asterisco que usa en expresiones regulares : se utilizará para hacer coincidir cualquier atributo que comience o termine con una subcadena dada.
$ ldapsearch <previous_options> "(object_type)=*(object_value)"$ ldapsearch <previous_options> "(object_type)=(object_value)*"
Como un ejemplo, digamos que usted desea encontrar todas las entradas que tienen un atributo «uid» que comienzan con la letra «j».
$ ldapsearch <previous_options> "uid=jo*"
Opciones avanzadas de Ldapsearch
En este tutorial, aprendiste sobre las opciones básicas de ldapsearch, pero hay muchas otras que pueden interesarte.
Filtros de coincidencia LDAP extensibles
Los filtros de coincidencia LDAP extensibles se utilizan para potenciar los operadores existentes (por ejemplo, el operador de igualdad) especificando el tipo de comparación que desea realizar.
Sobrealimentar operadores predeterminados
Para sobrealimentar un operador LDAP, debe usar la sintaxis»:=».
$ ldapsearch <previous_options> "<object_type>:=<object_value>"
Por ejemplo, si desea buscar que todas las entradas tengan un «cn» que sea igual a «john», ejecute el siguiente comando
$ ldapsearch <previous_options> "cn:=john"# Which is equivalent to$ ldapsearch <previous_options> "cn=john"
Como probablemente haya notado, ejecutar la búsqueda en «john» o en «JOHN» devuelve el mismo resultado exacto.
Como consecuencia, es posible que desee restringir los resultados a la coincidencia exacta «john», haciendo que la búsqueda distinga entre mayúsculas y minúsculas.
Usando ldapsearch, puede agregar filtros adicionales separados por caracteres»:».
$ ldapsearch <previous_options> "<object_type>:<op1>:<op2>:=<object_value>"
Por ejemplo, para tener una búsqueda que distingue entre mayúsculas y minúsculas, debe ejecutar el siguiente comando
$ ldapsearch <previous_options> "cn:caseExactMatch:=john"
Si no está familiarizado con los filtros de coincidencia LDAP, aquí hay una lista de todos los operadores disponibles para usted.
Conclusión
En este tutorial, aprendiste cómo puedes buscar en un árbol de directorios LDAP usando el comando ldapsearch.
Ha visto los aspectos básicos de la búsqueda de entradas y atributos básicos, así como de la construcción de filtros de coincidencia complejos con operadores (and, or y operadores negativos).
También aprendió que es posible recargar los operadores existentes utilizando opciones de coincidencia extensibles y especificando el operador personalizado que se utilizará.
Si está interesado en la Administración Avanzada de Sistemas Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrese de echarle un vistazo!