GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo buscar LDAP usando ldapsearch (con ejemplos)

Si trabaja 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 crezca su directorio LDAP, es posible que se pierda en todas las entradas que deba administrar.

Afortunadamente, existe un comando que lo ayudará a buscar entradas en un árbol de directorios LDAP:ldapsearch .

En este tutorial, veremos cómo puede buscar LDAP fácilmente usando ldapsearch .

También vamos a revisar las opciones que proporciona el comando para realizar búsquedas LDAP avanzadas. .

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, deberá especificar el host con la opción "-H".

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

Como ejemplo, supongamos que tiene un servidor OpenLDAP instalado y ejecutándose en el host 192.168.178.29 de su red.

Si su servidor acepta la 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 supondrá que desea realizar una búsqueda en todas las clases de objetos de su árbol de directorios.

Como consecuencia, se le presentará una gran cantidad de información. Si desea restringir la información presentada, le explicaremos filtros LDAP en el próximo capítulo.

Buscar LDAP con cuenta de administrador

En algunos casos, es posible que desee ejecutar consultas LDAP como la 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 con la cuenta de administrador, debe ejecutar la consulta "ldapsearch" con la opción "-D" para el DN de enlace y "-W" para que se le solicite la contraseña.

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

Como ejemplo, supongamos 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 su consulta de forma privada.

Ejecución de búsquedas LDAP con filtros

Ejecutar una consulta de búsqueda LDAP simple sin filtros es probable que sea una pérdida de tiempo y recursos.

La mayoría de las veces, desea ejecutar una búsqueda LDAP consulta para encontrar objetos específicos en su árbol de directorios LDAP.

Para buscar una entrada LDAP con filtros, puede agregar su filtro al final del comando ldapsearch:a la izquierda especifica el tipo de objeto y a la derecha el valor del objeto.

Opcionalmente, puede especificar los atributos que devolverá el objeto (el nombre de usuario, la contraseña del usuario, etc.)

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

Encontrar todos los objetos en el árbol de directorios

Para devolver todos los objetos disponibles en su árbol LDAP, puede agregar 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 todos los atributos disponibles en el árbol.

Encontrar cuentas de usuario usando ldapsearch

Por ejemplo, supongamos que desea buscar todas las cuentas de usuario en el árbol de directorios LDAP.

De manera predeterminada, las cuentas de usuario probablemente tendrán la clase de objeto estructural "cuenta", que se puede usar para restringir 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 restringir su búsqueda.

Por ejemplo, si solo está interesado en el CN ​​del usuario, el UID y el directorio de inicio, ejecutaría 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!

Operador AND usando 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 desea encontrar que todas las entradas tienen una "clase de objeto" que es igual a "cuenta" y un "uid" que es igual a "juan", ejecutaría la siguiente consulta

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

Operador OR usando ldapsearch

Para tener varios filtros separados por operadores "O", 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, si desea encontrar todas las entradas que tienen una clase de objeto de tipo "cuenta" o "Rol organizacional", debe ejecutar la siguiente consulta

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

Filtros de negación usando ldapsearch

En algunos casos, desea hacer coincidir negativamente algunas de las entradas en su árbol de directorios LDAP.

Para tener un filtro de coincidencia negativa, debe encerrar su(s) condición(es) con un “!” carácter y tener condiciones separadas por 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 "juan", escribiría la siguiente consulta

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

Encontrar la configuración del servidor LDAP usando ldapsearch

Un uso avanzado del comando ldapsearch es recuperar la configuración de su árbol LDAP.

Si está familiarizado con OpenLDAP, sabe que hay un objeto de configuración global ubicado 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 modificar la contraseña del administrador raíz, por ejemplo.

Para buscar la configuración de 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 "EXTERNO" como mecanismo de autenticación.

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

Nota :este comando debe ejecutarse en el servidor directamente, no desde uno de sus clientes LDAP.

De forma predeterminada, este comando devolverá una gran cantidad de resultados, ya que devuelve backends, esquemas y módulos.

Si desea restringir su búsqueda a las configuraciones de la 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 comodín como el asterisco ("*").

El carácter comodín tiene la misma función que el asterisco que usa en expresiones regulares:se usará para hacer coincidir cualquier atributo que comience o termine con una subcadena determinada.

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

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

Como ejemplo, supongamos que desea buscar todas las entradas que tengan un atributo "uid" que comience con la letra "j".

$ ldapsearch <previous_options> "uid=jo*"

Opciones avanzadas de Ldapsearch

En este tutorial, aprendió sobre las opciones básicas de ldapsearch, pero hay muchas otras que pueden interesarle.

Filtros de coincidencia extensibles LDAP

Los filtros de coincidencia LDAP extensibles se utilizan para sobrealimentar a los operadores existentes (por ejemplo, el operador de igualdad) especificando el tipo de comparación que desea realizar.

Operadores predeterminados sobrealimentados

Para potenciar un operador LDAP, debe usar la sintaxis ":=".

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

Por ejemplo, si desea buscar todas las entradas que tengan un "cn" que sea igual a "juan", debe ejecutar 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" arroja exactamente el mismo resultado.

Como consecuencia, es posible que desee restringir los resultados a la coincidencia exacta de "juan", 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 distinga entre mayúsculas y minúsculas, ejecutaría 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, aprendió cómo puede buscar en un árbol de directorios LDAP usando la búsqueda ldap comando.

Ha visto los aspectos básicos de la búsqueda de entradas y atributos básicos, así como la creación de filtros de coincidencia complejos. con operadores (y, o y operadores negativos).

También aprendió que es posible sobrealimentar a los operadores existentes mediante el uso de opciones de coincidencia ampliables y la especificación del operador personalizado que se utilizará.

Si está interesado en la administración avanzada del sistema Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrese de consultarla!


Linux
  1. SSH a un puerto distinto del 22:cómo hacerlo (con ejemplos)

  2. Cómo descomprimir archivos en Linux (con ejemplos)

  3. ¿Cómo hacer que Ldapsearch funcione en Sles sobre Tls usando un certificado?

  4. ¿Cómo incluir la biblioteca C necesaria usando gcc?

  5. ¿Cómo rellenar un archivo con FF usando dd?

Cómo usar el comando rm de Linux con ejemplos

Uso de Cat Command en Linux con ejemplos

Cómo buscar en Google desde la línea de comandos usando Googler

Cómo mostrar hojas de trucos de comandos de Linux usando, por ejemplo

Cómo instalar y usar el comando Ack en Linux con ejemplos

Cómo usar el comando de apagado con ejemplos