En este tutorial, vamos a echar un vistazo a la instalación y configuración del servidor OpenLDAP en Ubuntu 16.04 LTS. También instalaremos el phpLDAPadmin herramienta de gestión basada en web.
Qué es OpenLDAP
OpenLDAP es un servidor de directorio rápido y de código abierto que proporciona al cliente de red servicios de directorio. Las aplicaciones cliente se conectan al servidor OpenLDAP mediante el Protocolo ligero de acceso a directorios (LDAP) para acceder a la información de la organización almacenada en ese servidor. Con el acceso apropiado, los clientes pueden buscar en el directorio, modificar y manipular registros en el directorio. OpenLDAP es eficiente tanto para leer como para modificar datos en el directorio.
Los servidores OpenLDAP se utilizan más comúnmente para proporcionar una gestión centralizada de cuentas de usuario. Por ejemplo, puede crear una cuenta en OpenLDAP y, si está conectado con un servidor de correo, un servidor FTP, un servidor Samba o cualquier otro servidor, puede usar la cuenta para iniciar sesión en estos servidores sin crear una nueva cuenta para cada servidor.
Cómo instalar el servidor OpenLDAP en Ubuntu 16.04
Ejecute el siguiente comando para instalar el servidor OpenLDAP y las utilidades de línea de comandos del cliente desde el repositorio de paquetes de Ubuntu 16.04. slapd
significa demonio LDAP independiente .
sudo apt install slapd ldap-utils
Se le pedirá que establezca una contraseña para la entrada de administrador en el directorio LDAP.
Una vez hecho esto, slapd se iniciará automáticamente. Puedes consultar su estado con:
systemctl status slapd
Por defecto, se ejecuta como openldap
usuario como se define en /etc/default/slapd
archivo.
Configuración básica posterior a la instalación
El proceso de instalación instala el paquete sin ninguna configuración. Para que nuestro servidor OpenLDAP funcione correctamente, debemos realizar una configuración básica posterior a la instalación. Ejecute el siguiente comando para iniciar el asistente de configuración.
sudo dpkg-reconfigure slapd
Tendrás que responder a una serie de preguntas. Responda estas preguntas de la siguiente manera:
Omitir la configuración del servidor LDAP:NO .
Nombre de dominio DNS:ingrese su nombre de dominio como linuxbabe.com
. Deberá establecer un registro A correcto para su nombre de dominio. También puede usar un subdominio como directory.linuxbabe.com
. Esta información se utiliza para crear el DN base (nombre distinguido) del directorio LDAP.
Nombre de la organización:Ingrese el nombre de su organización como LinuxBabe.
Contraseña de administrador:Ingrese la misma contraseña establecida durante la instalación.
Back-end de la base de datos:MDB .
BDB (Berkeley Database) es lento y engorroso. Está en desuso y se eliminará el soporte en futuras versiones de OpenLDAP. HDB (Base de datos jerárquica) es una variante del backend de BDB y también quedará en desuso.
MDB las lecturas son 5-20 veces más rápidas que BDB. Las escrituras son de 2 a 5 veces más rápidas. Y consume 1/4 de RAM que BDB. Así que elegimos MDB como backend de la base de datos.
¿Desea que se elimine la base de datos cuando se purgue slapd? No .
¿Mover base de datos antigua? Sí .
¿Permitir el protocolo LDAPv2? No . La última versión de LDAP es LDAP v.3, desarrollada en 1997. LDAPv2 está obsoleto.
Ahora el proceso reconfigurará el servicio OpenLDAP de acuerdo a sus respuestas. Su servidor OpenLDAP ahora está listo para usar.
Configuración de los clientes LDAP
/etc/ldap/ldap.conf
es el archivo de configuración para todos los clientes OpenLDAP. Abre este archivo.
sudo nano /etc/ldap/ldap.conf
Necesitamos especificar dos parámetros:el DN base y el URI de nuestro servidor OpenLDAP. Copie y pegue el siguiente texto al final del archivo. Reemplace your-domain
y com
según corresponda.
BASE dc=your-domain,dc=com URI ldap://localhost
La primera línea define el DN base. Le dice a los programas cliente dónde comenzar su búsqueda en el directorio. Si usó un subdominio al configurar el servidor OpenLDAP, entonces necesita agregar el subdominio aquí así
BASE dc=subdomain,dc=your-domain,dc=com
La segunda línea define la URI de nuestro servidor OpenLDAP. Dado que el servidor LDAP y el cliente están en la misma máquina, debemos configurar el URI en ldap://localhost
.
Prueba del servidor OpenLDAP
Ahora que el servidor OpenLDAP se está ejecutando y la configuración del cliente está lista, ejecute el siguiente comando para realizar conexiones de prueba con el servidor.
ldapsearch -x
Salida:
# extended LDIF # # LDAPv3 # base <dc=linuxbabe,dc=com> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # linuxbabe.com dn: dc=linuxbabe,dc=com objectClass: top objectClass: dcObject objectClass: organization o: LinuxBabe # admin, linuxbabe.com dn: cn=admin,dc=linuxbabe,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
Resultado:0 Exito indica que el servidor OpenLDAP está funcionando. Si obtiene la siguiente línea, entonces no está funcionando.
result: 32 No such object
Instalando phpLDAPadmin
phpLDAPadmin es un programa basado en web para administrar el servidor OpenLDAP. Las utilidades de línea de comandos se pueden usar para administrar nuestro servidor OpenLDAP, pero para aquellos que desean una interfaz fácil de usar, pueden instalar phpLDAPadmin.
Ejecute el siguiente comando para instalar phpLDAPadmin desde el repositorio de paquetes de Ubuntu.
sudo apt install phpldapadmin
Si su servidor Ubuntu no tiene un servidor web en ejecución, el comando anterior instalará el servidor web Apache como una dependencia. Si ya existe un servidor web como Nginx, Apache no se instalará.
Si usa Apache
La instalación colocará un archivo de configuración phpldapadmin.conf
en /etc/apache2/conf-enabled/
directorio. Una vez finalizada la instalación, puede acceder a la interfaz web de phpLDAPadmin en
your-server-ip/phpldapadmin
o
your-domain.com/phpldapadmin
Para habilitar HTTPS, puede obtener e instalar un certificado TLS gratuito emitido por Let's Encrypt.
Si usa Nginx
Los usuarios de Nginx deberán crear manualmente un archivo de bloqueo del servidor para phpLDAPadmin.
sudo nano /etc/nginx/conf.d/phpldapadmin.conf
Copie el siguiente texto y péguelo en el archivo. Reemplace ldap.su-dominio.com con su nombre de dominio preferido.
server { listen 80; server_name ldap.your-domain.com; root /usr/share/phpldapadmin/htdocs; index index.php index.html index.htm; error_log /var/log/nginx/phpldapadmin.error; access_log /var/log/nginx/phpldapadmin.access; location ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; } }
Guarde y cierre el archivo. Luego envíe un mensaje de texto con las configuraciones de Nginx.
sudo nginx -t
Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.
sudo systemctl reload nginx
Ahora puede acceder a la interfaz web de phpLDAPadmin en ldap.your-domain.com
. Para habilitar HTTPS, puede obtener e instalar un certificado TLS gratuito emitido por Let's Encrypt.
Configuración de phpLDAPadmin
Necesitamos hacer algunas configuraciones tal como lo hicimos con el cliente de línea de comandos. El archivo de configuración de phpLDAPadmin está en /etc/phpldapadmin/config.php
.
sudo nano /etc/phpldapadmin/config.php
Dado que OpenLDAP y phpLDAPadmin se ejecutan en la misma máquina, configuraremos phpLDAPadmin para conectarse a localhost en el puerto LDAP predeterminado 389 sin cifrado SSL/TLS.
La línea 293 especifica que phpLDAPadmin se conectará a localhost.
$servers->setValue('server','host','127.0.0.1');
La línea 296 está comentada de forma predeterminada, lo que significa que se utilizará el puerto estándar 389.
// $servers->setValue('server','port',389);
La línea 335 está comentada de forma predeterminada, lo que significa que el cifrado TLS no está habilitado.
// $servers->setValue('server','tls',false);
Luego ve a la línea 300.
$servers->setValue('server','base',array('dc=example,dc=com'));
Cámbialo por:
$servers->setValue('server','base',array());
Esto permitirá que phpLDAPadmin detecte automáticamente el DN base de su servidor OpenLDAP. A continuación, puede deshabilitar el inicio de sesión anónimo. Vaya a la línea 453.
// $servers->setValue('login','anon_bind',true);
De forma predeterminada, el inicio de sesión anónimo está habilitado. Para deshabilitarlo, debe eliminar el carácter de comentario (las dos barras) y cambiar verdadero a falso.
$servers->setValue('login','anon_bind',false);
Probablemente querrá deshabilitar las advertencias de plantilla porque estas advertencias son molestas y sin importancia. Vaya a la línea 161.
// $config->custom->appearance['hide_template_warning'] = false;
Elimina el carácter de comentario y cambia falso por verdadero.
$config->custom->appearance['hide_template_warning'] = true;
Guarde y cierre el archivo.
Acceso a la interfaz web de phpLDAPadmin
Ahora podemos probar la herramienta phpLDAPadmin con nuestro navegador web. Cuando phpLDAPadmin se carga por primera vez, se parece a esto.
Para iniciar sesión en nuestro servidor OpenLDAP, haga clic en el enlace de inicio de sesión. Verá el cuadro de diálogo de inicio de sesión. El DN de inicio de sesión predeterminado es cn=admin,dc=example,dc=com
. Es posible que deba cambiar dc=example
. En mi caso, necesito cambiar el DN de inicio de sesión a cn=admin,dc=linuxbabe,dc=com
.
La contraseña es la contraseña de administrador que estableció durante la configuración del servidor OpenLDAP. Una vez que inicie sesión en phpLDAPadmin, puede administrar este servidor de directorio.
¡Eso es todo! Espero que este tutorial te haya ayudado a instalar y configurar ambos servidor OpenLDAP y phpLDAPadmin en Ubuntu 16.04. En el próximo tutorial, veremos cómo configurar Ubuntu para autenticar los inicios de sesión de los usuarios con OpenLDAP.