Configuración de NSS para la integración con LDAP en RHLE6

NSS (Name Service Switch) es el componente de nuestro sistema Linux encargado de listar todos los usuarios, grupos, hosts, etc de nuestro sistema. Cómo consultar esta información se configura en el fichero /etc/nsswitch.conf y en él, normalmente encontramos las líneas:

passwd:         files
group: files
shadow: files
Estas líneas configuran que busque los grupos (groups), cuentas de usuario (passwd) y contraseñas del sistema (shadow) en ficheros, los archi conocidos/etc/group, /etc/passwd y /etc/shadow. Cuando queremos configurar que nuestro sistema Linux busque las cuentas de usuario en un directorio LDAP, instalaremos las librerías ldapnss, y configuraremos apropiadamente los ficheros /etc/ldap.conf y /etc/nsswitch.conf.

En RHEL6 esta configuración ha cambiado con respecto a como la conocíamos en los sistemas RedHat hasta ahora. En esta versión, se usa un demonio independiente llamado nslcd. La configuración de este servicio se almacena en /etc/nslcd.conf y sustituye al antiguo /etc/ldap.conf. La configuración del servicio está documentada en las notas de RedHat: La mayor ventaja que podemos obtener de ello, es que si se para este servicio, el sistema no tratará de buscar usuarios en LDAP, y esto es una ventaja ante situaciones de parada o error, ya que el sistema no tiene que esperar a que expiren los timeouts de conexión al directorio, ni tener que editar el fichero /etc/nsswitch.conf para salvar este comportamiento.

Para configurar la búsqueda de usuarios y grupos en LDAP en nuestro sistema RHEL6 editaremos el fichero /etc/nslcd.conf y aplicaremos los siguientes cambios:
  1. Configurar la URI del servidor LDAP al que se conectará:
    uri ldap://LDAPSERVER.tecnoquia.com/
  2. Configurar la versión del protocolo que usaremos,
    ldap_version 3
  3. Configurar las credenciales del usuario LDAP que se usará para conectar al directorio, en las búsquedas de usuarios y grupos
    binddn cn=nss,o=tecnoquia,c=es
    bindpw super-secreto
  4. Definir que las búsquedas sean en profundidad
    scope sub
  5. Especificar que siempre deben recorrerse los alias
    deref always
  6. Indicar las ramas y filtros para localizar las cuentas de usuario y grupo en el directorio,
    base    group   ou=grupos,o=tecnoquia,c=es
    base passwd o=tecnoquia,c=es
    filter passwd (objectClass=posixAccount)

    scope passwd sub
    scope group sub
  7. Establecer los parámetros de timeout para la conexión/desconexión del servicio de directorio,
    bind_timelimit 2
    timelimit 4
    idle_timelimit 10
    reconnect_retrytime 2
  8. Indicar que no se usará SSL para conectar al directorio,
    ssl no
    tls_cacertdir /etc/openldap/cacerts
  9. y que NSS no busque los usuarios locales (que hay en /etc/passwd)
    nss_initgroups_ignoreusers  ALLLOCAL
Como se puede comprobar existe una diferencia con respecto a versiones anteriores: Tenemos que configurar como rama base para la búsqueda de cuentas de usuario la raíz del árbol, para que la búsqueda en profundidad incluya la rama de usuarios y cuentas de máquina y luego añadir un filtro. Esto anteriormente no era necesario porque se podían especificar varias ramas, pero en esta nueva versión ya no es posible y si las especificamos, sólo tomará la última que aparezca en el fichero. La verdad es que es un paso atrás.

Luego editar el fichero /etc/nsswitch.conf para cambiar la configuración de donde debemos buscar los usuarios y grupos:
passwd: files [NOTFOUND=continue] ldap
shadow: files
group: files [NOTFOUND=continue] ldap
Para aplicar estos cambios, tendremos que iniciar el demonio nslcd:
/etc/init.d/nslcd start
...y luego sí podremos ejecutar los comandos:
  • getent passwd, que nos mostrará un listado de todos los usuarios y máquinas locales y en LDAP
  • getent group, nos mostrará un listado de las cuentas de grupo locales y en el directorio,
  • id <LOGIN> nos mostrará información del usuario, que puede estar almacenada en LDAP

1 comentario:

Anónimo dijo...

¡Gracias! Es de mucha utilidad.