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:
-
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.
-
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
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 ...
OpenLDAP Server