Introducción
Librerías de autentificación pam-ldap y nss-ldap
Para especificar el modo de autentificación de cada servicio es necesario configurar los archivos que se encuentran en la carpeta /etc/pam.d/. Al final de este documento se indican los cambios necesarios en éstos archivos.
La librería nss-ldap permite que un servidor LDAP suplante a los archivos /etc/passwd, /etc/group y /etc/shadow como bases de datos del sistema. Su archivo de configuración se encuentra en /etc/libnss-ldap.conf (o /etc/ldap.conf en versiones recientes). Posteriormente deberemos configurar el arhivo /etc/nsswitch.conf para que se utilice LDAP como base de datos del sistema en lugar de los archivos passwd, group y shadow.
La instalación de ambas librerías se puede realizar mediante apt-get.
Instalación y configuración de libpam-ldap
// Instalación de la librería libpam-ldap# apt-get install libpam-ldap
El archivo de configuración de la librería es el archivo /etc/ldap.conf . Únicamente hay que configurar los siguientes parámetros:
- Quién es el servidor LDAP (nombre o IP)
- Cuál es la base de nuestro directorio LDAP (base DN)
- Cuál es la versión de LDAP a utilizar
- Quién es el administrador del directorio
- En qué unidad organizativa se encuentran los usuarios (sustituto de /etc/passwd)
- En qué unidad organizativa se encuentran las contraseñas (sustituto de /etc/shadow)
- En qué unidad organizativa se encuentran los grupos (sustituto de /etc/group)
Para ello las líneas que hay que modificar en el archivo de configuración son las siguientes (el valor de los parámetros es un ejemplo):
// Configurar en /etc/ldap.confhost 172.16.15.1 //nombre o IP del servidor LDAP
base dc=iesacarballeira,dc=com
ldap_version 3
rootbinddn cn=admin,dc=iesacarballeira,dc=com
nss_base_passwd ou=users,dc=iesacarballeira,dc=com?one
nss_base_shadow ou=users,dc=iesacarballeira,dc=com?one
nss_base_group ou=groups,dc=iesacarballeira,dc=com?one
Instalación y configuración de libnss-ldap
Para instalar la librería libnss-ldap debemos ejecutar el comando:
// Instalación de la librería libnss-ldap# apt-get install libnss-ldap
Acto seguido se iniciará el asistente de configuración de dicha librería. Se puede lanzar dicho asistente más adelante mediante el comando:
// Lanzar asistente de configuración de libnss-ldap# dpkg-reconfigure libnss-ldap
Dicho asistente modificará el archivo /etc/libnss-ldap.conf (o /etc/ldap.conf en versiones recientes) que es donde se almacena la configuración de la librería. Posteriormente tendremos que editar dicho archivo manualmente para introducir algún cambio que no realiza el asistente.
Asistente de instalación
La primera pregunta que nos hace el asistente es quién es el servidor LDAP. Podemos poner la IP o el nombre:
Luego nos preguntará por la base del directorio LDAP (base DN):
dc=iesacarballeira,dc=com
Acto seguido tendremos que indicar la versión de LDAP a utilizar:
la más actual -la 3- por defecto.
En el siguiente paso nos pregunta si necesitamos autentificarnos en el servidor LDAP o no. Como la librería únicamente va a realizar consultas, no es necesario autentificarse por lo tanto debemos responder 'No':
Posteriormente nos preguntará si el archivo /etc/libnss-ldap (o /etc/ldap.conf en versiones recientes) debe solamente tener permisos de lectura y escritura para el usuario (root que es quién instala) o no. Como en el paso anterior hemos indicado que no necesitamos autentificación, no se almacenarán contraseñas en el archivo de configuración, por tanto podemos responder 'No':
Finalmente nos advierte que debemos modificar el archivo /etc/nsswitch.conf para que el sistema utilice el directorio LDAP como base de datos del sistema, al igual que hace con los archivos passwd, group y shadow:
Con el asistente se habrá configurado casi todo lo necesario aunque para que nuestro sistema se autentifique por LDAP, aún hay que configurar dos parámetros más:
- En qué unidad organizativa se encuentran los usuarios (sustituto de /etc/passwd - en nuestro caso ou=users)
- En qué unidad organizativa se encuentran los grupos (sustituto de /etc/group - en nuestro caso ou=groups)
// Configurar en /etc/ldap.confnss_base_passwd ou=users,dc=iesacarballeira,dc=com
nss_base_group ou=groups,dc=iesacarballeira,dc=com
Configuración de NSS
// Archivo /etc/nsswitch.conf# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Configurar servicios PAM
Para no tener que configurar de cada uno de los servicios, existen unos archivos comunes cuyo nombre empieza por common que afectan a la mayoría de ellos y sus archivos de configuración los referencian mediante una línea @include a los archivos comunes causando el mismo el efecto que si el contenido de los archivos comunes estuviera copiado en el lugar de la línea @include. Los archivos comunes son:
- /etc/pam.d/common-auth (para autentificarse)
- /etc/pam.d/common-account (para disponer de una cuenta)
- /etc/pam.d/common-session (para poder iniciar sesion)
- /etc/pam.d/common-password (para poder cambiar password)
Estos archivos contienen una línea que hace referencia a la librería pam_unix.so que corresponde a la autentificación contra los archivos UNIX. Para que los servicios de nuestro sistema utilicen primero las librerías pam_ldap.so para autentificar al usuario, debemos añadir la línea correspondiente a pam_ldap.so por encima de la línea correspondiente a la librería pam_unix.so en los archivos common. Así, auntentificará primero contra el servidor LDAP, y si la autentificación falla, probará despues con los archivos UNIX.
Configuración archivo common-auth
// Añadir en /etc/pam.d/common-auth encima de la línea pam_unix.soauth sufficient pam_ldap.so
Además de ello, hemos de modificar la línea -añadiendo al final use_first_pass:
auth required pam_unix.so use_first_pass
Configuración archivo common-account
// Añadir en /etc/pam.d/common-account encima de la línea pam_unix.soaccount sufficient pam_ldap.so nullok_secure
Configuración archivo common-session
// Añadir en /etc/pam.d/common-session encima de la línea pam_unix.sosession sufficient pam_ldap.so
Configuración archivo common-password
// Añadir en /etc/pam.d/common-password encima de la línea pam_unix.sopassword sufficient pam_ldap.so
Configuración particular para cada servicio
Probar la autentificación
// Instalación del comando pamtest# apt-get install libpam-dotfile
Si deseamos probar que funciona el servicio passwd (cambiar contraseña) sobre un usuario del directorio LDAP (ejemplo jessica) , podemos ejecutar:
// Probando el cambio de contraseñaroot@cnice-desktop:/etc/pam.d# pamtest passwd jessica
Trying to authenticatefor service .
Password: // Introducimos el password de jessica
Authentication successful. // La autentificación ha sido satisfactoria
También podemos utilizar el comando finger sobre usuarios que estén solamente en el directorio LDAP, por ejemplo joel:
// Probando fingerroot@cnice-desktop:/etc/pam.d# finger joel
Login: joel Name: Joel Javier
Directory: /home/www/alumnos Shell: /bin/sh
Last login Tue Sep 27 18:02 (CEST) on pts/3 from 192.168.0.213
No mail.
No Plan.
Podemos por ejemplo, desde una consola de root, cambiar mediante el comando 'su' (su=Switch User - cambiar de usuario) a un usuario que esté en el directorio LDAP, para lo cuál no nos pedirá contraseña ya que root tiene permiso para cambiar a cualquier usuario. Si posteriormente cambiamos a otro usuario del directorio, ahora sí que nos pedirá contraseña. Deberemos introducir la contraseña que esté almacenada en el directorio LDAP para dicho usuario:
// Cambiando de usuario
root@cnice-desktop:/etc/pam.d# su joel // Somos root y cambiamos a joel
joel@cnice-desktop: // No nos pide password
joel@cnice-desktop:/etc/pam.d$ su jessica // Somos joel, y cambiamos a jessica
Password: // Nos pide password, le introducimos
jessica@cnice-desktop:/etc/pam.d$ // Ha cambiado correctamente
Las opciones de configuración de PAM son muy variadas. Para obtener más información se puede instalar el paquete libpam-doc que instala bastante documentación al respecto bajo la carpeta /usr/share/doc/libpam-doc/
Para información sobre cómo instalar el servidor LDAP pulsa en el enlace
Fuente:
- Curso Redes de Área Local. Aplicaciones y servicios en Linux. del isftic: http://www.isftic.mepsyd.es/formacion/materiales/85/cd/REDES_LINUX/indice.htm
21 comentarios:
Qué bien me van a venir tus apuntes para clase.... la próxima vez que tenga que dar sistemas!
Saludos.
ana.
los apuntes son, más bien, del cnice, lo único que he hecho es actualizar algunas cosas que eran de versiones antiguas y no funcionaban en las actuales.
Bueno, eso y capturar pantallas de las instalaciones, pero como puedes ver, precisamente en éste, se me pasó y quedó sin las pantallitas.
saludos
Muchisimas gracias por el contenido del post, es de muchísima utilidad.
Espero que vaya bien!
Salu2!
me alegro de que te haya sido útil
saludos
Esta es la mejor guia que he encontrado muchas gracias por publicarla.
Tengo un pequeño problema. cuando intento conectarme desde la consola a un usuario creado en ldpa mediante jxplorer me sale un herror diciendo que no exiten las carpetas personales (configuradas en jxplorer: /home/sergio) ¿alguien sabe por que?
un saludo y gracias por todo
Excelente articulo, al igual que el primero.
Pero me ha surgido una duda tras ponerlo todo en marcha. La pregunta puede resultar estupida pero no me reconocia ningun usuario de la instalación previa. ¿La instalación y configuración de NSS se realizar en el cliente o en el servidor? En la introducción no dice nada al respecto.
Increible, esta muy bueno y me ayudo mucho...
que puede ser que no me autentifica los usuarios, ni me puedo loguear, pero si me logueo con un usuario local y hago pamtest passwd user, me lo toma bien.
pero el cliente no se puede autentificar con el server, que datos necesitarias que te muestre?
por lo que comentas es bastante probable que ldap no esté funcionando, échale un vistazo a los logs especialmente /var/log/auth.log y sys.log a ver si te dan alguna pista.
Prueba a parar y volver a arrancar el servicio ldap a ver que te dice.
dentro de unas semanas colgaré un artículo más actualizado sobre configuración de ldap.
Tengo problemas con la autenticación de usuarios, seguí todos tus pasos al pie de la letra y al final al hacer la autenticación de usuarios falla la autenticación,también trato de hacer un ping a la ip que le puse al ldap dice que no es alcanzable, hago finger de los usuarios creados y no me da nada, estoy trabajando sobre ubuntu 9.10 virtualizado eso podría causar algun problema? tienes alguna idea de que tengo mal?
Muchas Gracias.
lo primero que tienes que hacer es ver al otro equipo, si el ping no te va, quiere decir que no tienes conexión con lo cual no te va a funcionar nada. Comprueba que las tarjetas de red no estén en NAT sino en Virtual host only, así te será más fácil hacer las comprobaciones.
Por si te sirve de ayuda, en breve voy a meter más manuales, esta vez propios, dónde explicaré cómo usar LDAP e incluso con varios servicios: correo, samba,... para autenticar a los usuarios.... desde una máquina virtual para poder hacer las pruebas sin problemas
una pregunta, en que version de ubuntu estas haciendo la instalacion?...intentare hacerla con el ubuntu server 9.10...a ver que tal...Saludos!!
otra pregunta, este articulo es una alternativa del articulo:
Servidor Ldap en ubuntu o debian con html
o es necesario hacer primero el articulo del "Servidor LDap en ubuntu o debian con html" y despues hacer este "autenticacion en un sistema LDAP(OPENLDAP) ubuntu o debian"
espero me respondan...
de antemano gracias!!!!
este artículo como comentas es una continuación del anterior, en uno tienes la instalación del servidor y en este qué tienes que hacer en el cliente, de todos modos, esto está basado en la versión 8.10, para las versiones actuales intentaré colgar ya, un manual, si tengo un momento libre este fin de semana lo colgaré ya.
saludos
ok Juan, dejame decirte que ya tengo instalado Ldap en la maquina que servira como servidor, entonces (para ver si entendi) quieres decir que todo este articulo se tiene que hacer en la maquina que sera el cliente? o todavia existe en este articulo cosas por configurar en el servidor donde esta instalado Ldap??
nuevamente gracias por tomarte el tiempo de contestar, estare pendiente con los manuales que estas por postear.
Sigue Adelante!!!!!
he colgado ya el tema de LDAP más actualizado:
http://tecnoloxiaxa.blogspot.com/2010/05/servidor-ldap-en-ubuntu.html
espero te sea útil.
saludos
Muchas gracias por tus tutos, fueron de mucha utilidad y al fin puede entender sobre este tema. Solo una pregunta Como hago para montar los directorios del cliente?.
Hola, muchas gracias por el tutorial, lo he seguido pero me surgió un problema, monte la autenticación de usuarios en el servidor LDAP con el mismo servidor y ningún problema, luego traté de seguir el tutorial para montar la autenticación de usuarios en un cliente, y ahora este servidor cliente no me permite acceder (ni con usuarios fuera de LDAP), traté de modificar el archivo de configuración nsswitch.conf con un live cd para volver al sistema de autenticación básico, y ahora esta peor, que puedo hacer? como puedo volver al sistema de autenticación por defecto de linux?
Hice todos tus pasos.. y cuando quise entrar a root no pude.. quise poner smbldap-usermod -u 0 -d /root -s /bin/bash root pero no me dejo porque no tenia el paquete smbldap, el cual no puedo instalar porque no puedo autenticarme con root... :S alguna idea? :(
Si
Adri tonto, Oscar MDM
Publicar un comentario