Instalación y Configuración de OpenLDAP
El servido OpenLDAP nos provee de un modo sencillo de centralizar la autenticación de usuarios y servicios en una única base de datos de rápida lectura, de modo que podamos hacer que cualquier servicio ( ftp, web, correo,...) autoricen o no el acceso dependiendo de los datos, por ejemplo, de usuario y contraseña que hayamos configurado en el mismo.
1.- Instalación de OpenLDAP
En primer lugar instalamos el demonio servidor slapd, ldap-utils -paquete que contiene utilidades para el manejo de LDAP y db4.2-util – que proporciona herramientas para realizar algunas operaciones con bases de datos como pueden ser cargas, modificaciones o actualizaciones del formato de las mismas-:
sudo apt-get install slapd ldap-utils db4.2-util
Durante la instalación nos pedirá que introduzcamos una contraseña para identificar al administrador de ldap.
Por defecto, además, el sufijo del directorio coincidirá con el nombre de dominio del servidor. Por ejemplo si el FQDN (Fully Qualified Domain) es ldap.ejemplo.com, el sufijo por defecto será dc=example,dc=com. Si queremos cambiarlo lo podremos hacer usando dpkg-reconfigure dónde podremos configurar varias opciones de slapd (en nuestro caso no sería necesario ya que el dominio de nuestro equipo ya era el deseado: mczones.es).
sudo dpkg-reconfigure slapd
Nos aparecerá un asistente que nos pedirá los siguientes datos:
-
Si deseamos omitir la configuración del servidor LDAP. Obviamente responderemos que no, ya que precisamente lo que queremos es configurar el servidor LDAP.
-
Nuestro directorio LDAP base , habitualmente se utiliza el nombre del dominio. Ejemplo, si nuestro dominio es mczones.es, lo normal es que la base para nuestrodirectorio LDAP sea: dc=mczones,dc=es.
-
Nombre de nuestro dominio. Éste nombre lo utilizará para crear el nombre distinguido (DN) o dicho más claramente, nombre identificativo de la base de nuestrodirectorio LDAP: mczones.es.
-
Posteriormente nos preguntará por el nombre de nuestra organización: mczones.
-
Contraseña que deseamos poner al usuario admin (administrador) del servidor LDAP. La solicitará dos veces para evitar errores de tecleo. Podemos poner cualquier contraseña, por ejemplo 'root'.
-
Acto seguido nos informará sobre los posibles gestores de datos para almacenar el directorio y nos preguntará qué sistema utilizar. Lo recomendable es utilizar el sistema HDB.
-
Si queremos que se elimine la base de datos cuando quitemos slapd. Por si acaso, lo mejor es responder que no.
-
En el caso de que exista una base de datos LDAP previa, nos preguntará si deseamos moverla. Lo mejor es responder Sí, para evitar que interfiera en la nueva base de datos:
-
Luego nos preguntará si deseamos utilizar LDAP versión 2, respondemos que no ya que apenas se utiliza.
-
Finalmente nos da la oportunidad de omitir la configuración. Si respondemos que sí, será como que no hemos ejecutado el asistente, por lo tanto si nuestra intención es configurar el servidor LDAP responderemos no.
2.- Configuración del servidor OpenLDAP
En versiones anteriores openldap se configuraba el comportamiento del servidor empleando únicamente el fichero slapd.conf, actualmente podemos hacer modificaciones dinámicamente -con lo que no es necesario parar y reiniciar el demonio slapd para realizar cada cambio- desde la base cn=config; se puede acceder a ella desde phpldapadmin con el usuario cn=admin,cn=config y la contraseña del admin, para luego buscar como está configurado, también podremos emplear las herramientas de línea de comandos que hemos instalado. Por ejemplo para comprobar el árbol de directorio creado durante la instalación o tras la reconfiguración (nos pedirá la contraseña de administrador del sistema LDAP):
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
2.1 Instalación y configuración de phpLDAPadmin
PhpLDAPadmin es una aplicación web que nos permitirá acceder al directorio LDAP para poder crear y modificar elementos. Otros posibles exploradores LDAP libres podrían ser gq y Jxexplorer.
Para instalar phpldap admin:
sudo apt-get install phpldapadmin
Esto nos instalará también apache -el servidor web-. Si estamos en el servidor, simplemente teclearemos en la barra de direcciones de nuestro explorador web: http://localhost/phpldapadmin/. Si se produce el error : “Memory Limit Low. Your php memory limit is low -currently 16 M” deberemos aumentar la memoria, por ejemplo a 64M, en el fichero /etc/php5/apache2/php.ini
(editamos el fichero /etc/php5/apache2/php.ini y ponemos: memory_limit = 64M ; ) y reiniciamos el servidor apache: /etc/init.d/apache2 restart.
En la versión de phpLDAPadmin que he instalado (1.1.05-6) cuando entramos por primera vez, en el panel izquierdo nos aparece el dominio de ejemplo (example.com) en lugar del que hemos configurado; para solucionarlo editamos el fichero /etc/phpldapadmin/config.php y cambiamos las líneas:
$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com')); por
$ldapservers->SetValue($i,'server','base',array('dc=mczones,dc=es'));
si además queremos que cuando nos solicite el login, también aparezca el dominio correcto en el campo nombre de usuario, deberemos sustituir también:
$ldapservers->SetValue($i,'login','dn','cn=admin,dc=example,dc=com'); por
$ldapservers->SetValue($i,'login','dn','cn=admin,dc=example,dc=com');
Tras realizar estos dos cambios deberemos reiniciar el servidor apache: /etc/init.d/apache2 restart.
En la versión de phpLDAPadmin que he instalado (1.1.05-6) cuando entramos por primera vez, en el panel izquierdo nos aparece el dominio de ejemplo (example.com) en lugar del que hemos configurado; para solucionarlo editamos el fichero /etc/phpldapadmin/config.php y cambiamos las líneas:
$ldapservers->SetValue($i,'server','base',array('dc=example,dc=com')); por
$ldapservers->SetValue($i,'server','base',array('dc=mczones,dc=es'));
si además queremos que cuando nos solicite el login, también aparezca el dominio correcto en el campo nombre de usuario, deberemos sustituir también:
$ldapservers->SetValue($i,'login','dn','cn=admin,dc=example,dc=com'); por
$ldapservers->SetValue($i,'login','dn','cn=admin,dc=example,dc=com');
Tras realizar estos dos cambios deberemos reiniciar el servidor apache: /etc/init.d/apache2 restart.
2.2 Creación de Unidades organizativas, grupos y usuarios con phpLDAPadmin
Una vez hemos entrado en el sistema como cn=admin,dc=mczones,dc=es y password -en mi caso- ldapadmin, podemos crear la estructura del dominio. Para ello pulsamos en crear nuevo objeto y seleccionamos “Organisational Unit” para crear las unidades organizativas, en mi caso:
- Grupos: Dentro de ella crearé los “Posix Groups” “contabilidad” , “desarrollo” y “otros” a los que pertenecerán todos los usuarios.
-
-
Usuarios: en ella crearé directamente los usuarios que pertenezcan al grupo “otros”. Igualmente para mantener el orden crearé dos unidades organizativas:
-
Contabilidad: En ella iré añadiendo los User Account de este departamento: c1 y c2 pertenecientes al posix group “contabilidad” con contraseña “1234”.
-
Desarrollo: en ella he añadido los “User Account” d1 y d2 pertenecientes al Posix Group Desarrollo con contraseña “1234”.
-
En la unidad organizativa Usuarios he creado el usuario juan.
-
3.- Configuración de los clientes: Autenticación con OpenLDAP
Una de las principales razones para usar LDAP es centralizar la autenticación de los usuarios en un único sistema servidor (ya sea para iniciar sesión, ftp, web, correo,...), en lugar de utilizar los clásicos archivos /etc/passwd, /etc/group y /etc/shadow. Para ello veremos las modificaciones que hay que realizar en un sistema Linux para que autentifique a los usuarios en un servidor LDAP, en primer lugar, será necesario instalar y configurar los paquetes libpam-ldap y libnss-ldap.
La librería pam-ldap permite que las aplicaciones que utilizan PAM para autentificarse, puedan hacerlo mediante un servidor LDAP. Para que el sistema linux se autentifique mediante un servidor LDAP es necesario instalar esta librería ya que utiliza PAM. El archivo de configuración de ésta librería es /etc/ldap.conf. Hay otras aplicaciones o servicios que utilizan PAM para la autentificación y por tanto podrían, gracias a la librería pam-ldap, autentificarse ante un servidor 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/.
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 como la que he usado yo, la 2.4.2). 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
3.1 Instalación y configuración de libpam-ldap
La instalación de la librería libpam-ldap se puede realizar ejecutando el comando (instalará ya todas librerías necesarias como libnss-ldap):
# apt-get install libpam-ldap
Nos lanzará un asistente que nos pedirá los siguientes datos, que se almacenarán en el fichero /etc/lapd.conf desde dónde podremos modificarlos en cualquier momento a posteriori (basado en la versión 2.4.2 de openldap):
-
Quién es el servidor LDAP (nombre o IP) *en el caso de emplear la ip deberemos escribir ldap no ldapi, ya que sino resolverá el finger pero no nos permitirá autenticarnos: ldap://192.168.2.3/
-
Cuál es la base de nuestro directorio LDAP (base DN): dc=mczones,dc=es
-
Cuál es la versión de LDAP a utilizar: 3
-
Hacer que las utiliadades password que usen ldap se comporte como si cambiaramos las locales:si
-
Necesitamos conectarnos a la base de datos LDAP para recibir las entradas: NO
-
Cuenta LDAP para el usuario root: cn=admin,dc=mczones,dc=es
-
Contraseña del administrador.
Finalmente tendremos, por lo tanto, las siguientes líneas en el fichero /etc/ldap.conf
// Configurar en /etc/ldap.conf host 192.168.2.3 //nombre o IP del servidor LDAP base dc=mczones,dc=es uri ldap://192.168.2.3 ldap_version 3 rootbinddn cn=admin,dc=mczones,dc=es pam_password md5 nss_base_passwd ou=usuarios,dc=mczones,dc=es?sub nss_base_shadow ou=usuarios,dc=mczones,dc=es?sub nss_base_group ou=grupos,dc=mczones,dc=es?sub Tras el carácter “?”, se puede poner one (por defecto), base o sub; yo he empleado sub para que también compruebe los usuarios y contraseñas creados colgando de la unidad organizativa “usuarios” -es decir en las unidades organizativas contabilidad y desarrollo-.
3.1 Configuración de NSS
Para que el servidor LDAP actúe como si se tratara de los archivos passwd, group y shadow, además de instalar las dos librerías anteriores, debemos indicar que se utilice LDAP como alternativa para autentificar usuarios. Para ello hay que añadir en las líneas que hacen referencia a passwd, group y shadow en el archivo /etc/nsswitch.conf, la palabra 'ldap' tras la palabra 'compat' quedando el archivo /etc/nsswitch.conf así:
// Archivo /etc/nsswitch.conf # /etc/nsswitch.conf passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
3.2 Configuración de servicios PAM
Nuestro sistema ya estaría preparado para autentificarse por LDAP. Editando los archivos que hay en la carpeta /etc/pam.d, podemos configurar la forma en la que se autentifica cada uno de los servicios que requieren autentificación. 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)
La configuración de los archivos comunes para emplear LDAP se puede hacer de modo automático tecleando en consola pam-auth-update que nos permite seleccionar el perfil a emplear. Si queremos que cada vez que entremos en una sesión se verifique si el usuario ya tiene un directorio personal (home) en el equipo para que si no es así sea creado (la primera vez me advertirá como se ve en la imagen que va a crear el directorio personal), deberíamos añadir la siguiente línea al final del fichero /etc/common-session:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Si deseamos que algún servicio se autentifique de forma diferente, podemos editar el archivo del servicio (ej: /etc/pam.d/su, /etc/pam.d/ssh, /etc/pam.d/ftp, etc...), eliminar la línea que comienza por @include e introducir la configuración particular que deseemos.
3.3 Probar la autentificación
Ahora mismo ya deberíamos poder autentificarnos de modo correcto. Para probarlo podemos emplear el comando pamtest que está en el paquete libpam-dotfile:
sudo apt-get isntall libpam-dotfile
Podemos probar si funciona el cambo de contraseña sobre cualquier usuario sobre c2, por ejemplo.
También podemos usar el comando finger sobre usuarios que sólo estén en LDAP y en sistema local.
Incluso podemos emplear, directamente el comando su desde la consola para cambiarnos a los usuarios que sólo estén dados de alta en el sistema LDAP.
Tras ello ya podremos cerrar sesión y entrar en los equipos como los usuarios dados de alta en LDAP:
4. Otros ficheros y directorios
Además de los citados ficheros se deberían tener presentes los siguientes:
Para logs: /var/log/syslog y /var/log/auth.log
Almacenar la Base de datos y los backups: /var/lib/ldap y /var/backups respectivamente
Fichero de configuración del demonio slapd en el servidor: /etc/default/slapd
para continuar viendo el resto de manuales Linux siga el enlace:administración de servidores con Linux
5. Enlaces
Samba PDC en Debian :: Improvisa :: Magazine Digital :: Informatica ...
Ubuntu Server PDC - Página 5 | jorge.herskovic | Jorge Herskovic
OpenLDAP-SambaPDC-OrgInfo-Posix - Community Ubuntu Documentation
Installing custom ldap schema 6.0 - Zimbra :: Wiki
OpenLDAPServer - Community Ubuntu Documentation
Linux Tutorial - Apache Web Login Authentication:
Configurar un servidor Controlador de Dominio con Samba y OpenLDAP en Ubuntu Server Hardy 8.04
En busca de la solución definitiva para la autenticación | CRySoL
How-To set up a LDAP server and its clients -- page 2 | Debian/Ubuntu ...
9 comentarios:
Hola Juan, antes que nada felicidades por toamrte el tiempo de hacer este estupendo tutorial.
pues fijate que ya tengo instalado el phpldapadmin y tambien tengo creadas las cuentas asi como tu las tienes en el tutorial, tambien hice lo que es desde el paso # 3 a la maquina que seria el cliente-linux, pero al llegar al paso # 3.3 prueba de autenticacion
digito: finger juan
y me da el resultado que tu muestras, cuando ejecuto el otro comando de:
pamtest passwd juan
me pide el password, le digito el password y dentro de un rato me dice:
Failed to authenticate: Authentication failure
que será lo que no me deja autenticar, espero me puedas ayudar a resolverlo.
de antemano muchisimas gracias!!!!
Hola, ya logre hacer funcionar todo asi como dice este tutorial, pero me gustaria que publicaras algo donde integres samba basado en este tutorial....
Adelante amigo!!!!
Hola Juan, gracias por tomarte el tiempo de leer este comentario, tengo una pregunta...
fijate que tengo corriendo ldap y samba y para la administracion uso phpldapadmin, lo que me han pedido que haga es que en vez de usar db4.8-util integre lo que es postgresql, he buscado algun tutorial en la web pero no he tenido exito, lo que al final quieren que haga es que tenga ldap+samba+postgresql+postfix corriendo en el servidor, no se si tu podrias ayudarme a encontrar un tutorial o tu tengas alguna idea de lo que me piden,
de antemano gracias por tu tiempo...!!!
hola, siento no poder echarte una mano, no conozco ningún manual dónde trate el tema y yo nunca lo he empleado, espero que tengas suerte y encuentres algo de ayuda.
saludos y gracias por tus comentarios.
De todos modos échale un vistazo a esta página que es de unos compañeros de informática y es bastante posible que tengan algo que te sea de ayuda:
http://informatica.iessanclemente.net/manuais/index.php/Portada
Juan,
Muy bueno el tutorial, hace tiempo que buscaba algo asi.
Me gustaria saber como puedo configurar para que las carpetas home de los clientes se almacenen en el servidor, de modo de tener centralizados los backups.
Desde ya muchas gracias.
Francisco
Hola que tal. estoy probando esta linea
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
le introduzco el password
Enter LDAP Password:
y me da este error
ldap_bind: Invalid credentials (49)
lo curioso del tema es que con phpldapadmin si que puedo entrar en la gestión del ldap y el resto del manual funciona.
alguien sabe lo del error de autenticación ?
gracias
Para Pancho.
Lo que quieres se consigue con NFS.
Hola.
No me pide la contraseña del administrador al instalar.
¿Dónde se debe poner?
o ¿Tiene alguna por defecto?
Gracias.
Hola Doug182 hace algún tiempo publicaste que tenías el error al realizar pamtest passwd (Failed to authenticate: Authentication failure) a mi me está sucediendo, me podrías contar como lo solucionaste... gracias!
Publicar un comentario