Un protocolo diseñado a nivel de aplicación que permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red
¿Qué es LDAP?
El Lightweight Directory Access Protocol o LDAP, es un protocolo que usa TCP / IP para hacer consultas y modificaciones a servicio de directorio distribuidos basado en X.500.
¿Qué es OpenLDAP?
OpenLDAP es una herramienta de código abierto para crear directorio distribuido de direcciones para autentificar usuarios tantos equipos. Es «ligero» o «más pequeño» en comparación con el X.500. Está diseñado para funcionar también en equipos más pequeños, como los escritorios
Como funciona OpenLDAP
Un cliente LDAP se une (login) a un servidor LDAP. Se envía una consulta para solicitar información o presente información para actualizase. Los permisos de acceso se revisan por el servidor y cuando está autorizado, el servidor responde con respuesta o tal vez con una referencia a otro servidor LDAP donde el cliente puede tener la consulta
En OpenLDAP los permisos de acceso al directorio de direcciones se basan en dos categorías de funciones en slapd, lista de control de acceso y funciones de autorización. En Linux / Unix, los permisos de acceso a los sistemas de archivos se basan en permisos de directorio / archivo.
OpenLDAP implementaciones de LDAP se basa en un estándar. Las especificaciones que rigen la implementación de LDAP están en IETF RFC
Actualidad en OpenLDAP
La versión actual de LDAP es LDAPv3, como se define en RFC4510, y la implementación LDAP utilizado en Ubuntu es OpenLDAP, actualmente en la versión 2.4.25 (onírico).
Así que este protocolo tiene acceso a los directorios LDAP.
He aquí algunos conceptos y términos clave:
- Un directorio LDAP es un árbol de entradas de datos que es de naturaleza jerárquica y se llama el árbol de información de directorios (DIT).
- Una entrada consiste en conjunto de atributos.
- Un atributo tiene un tipo (un nombre / una descripción) y uno o más valores.
- Cada atributo debe estar definido en al menos un tipo de objeto (objectClass).
- Los atributos y clases de objetos se definen en esquemas (un objeto se considera realmente como un tipo especial de atributo).
- Cada entrada tiene un identificador único: es el nombre distinguido (DN o dn). Esto consiste en su nombre completo relativo (RDN), seguido de DN de la entrada principal.
- La entrada DN no es un atributo. No se considera parte de la propia entrada.
Nota: Los términos de objetos, contenedores, y el nodo tener ciertas connotaciones pero todos esencialmente significa lo mismo que la entrada, el término técnicamente correcto.
Configuración básica de la Máquina Virtual (Ubuntu Server 14.04)
Una tarjeta para la red interna (LAN) y el otro en adaptador puente para Internet(WAN)
Instalación del servidor OpendLDAP
Instalar el “daemon”del servidor OpenLDAP y las utilidades de gestión de LDAP.
Estos se encuentran en paquetes slapd y ldap-utils respectivamente.
Como esta es nuestra primera vez usando apt en esta sesión, por lo que vamos a cargar y actualizar nuestro índice de paquetes local. Posteriormente podemos instalar los paquetes.
# sudo apt-get update && sudo apt-get update
La instalación de slapd por defecto se creará una plantilla de configuración para poder trabajar. En particular, se creará una plantilla de base de datos que se puede utilizar para almacenar sus datos. Sin embargo, el sufijo (o base DN) de esta plantilla se determinan a partir del nombre de dominio del host local. Si quieres algo diferente, editar / etc / hosts y reemplazar el nombre de dominio con uno que le dará el sufijo que desea.
Por ejemplo, si desea que el sufijo dc =aula128, dc = es a continuación, su archivo tendrá una línea similar a esta:
127.0.1.1 nombre_del_host.aula128.es nombre_del_host
En mi caso de esta práctica será como la figura abajo
Proceda con la instalación:
# sudo apt-get install slapd ldap-utils
Durante la instalación, se le pidiera definir credenciales administrativas. Estas son las credenciales basadas en LDAP para la rootDN de la base de datos. De forma predeterminada, DN del usuario es cn = admin, dc = aula128, dc = es.
También de forma predeterminada, no hay ninguna cuenta administrativa creada por la base de datos slapd-config y por lo tanto tendrá que autenticarse externamente para LDAP con el fin de acceder a él. Veremos cómo hacer esto más adelante.
Aquí ingresa una contraseña recordable para pasa este paso de la instalación
Repite la contraseña
La instalación terminara iniciando el servidor OpenLDAP slapd como la figura abajo
Comprobar si la instalación e iniciación esta correcta y el puerto del servicio está abierto
# sudo netstat – natup
# sudo ldapsearch -x
Configuración de slapd
La razón de esto es que mientras que el paquete tiene la capacidad de hacer un montón de preguntas de configuración importantes, éstos se han saltado en el proceso de instalación. Podemos tener acceso a todas las preguntas, diciendo a nuestro sistema que se volva a configurar el paquete con el siguiente comando
# sudo dpkg-reconfigure slapd
Desea omitir la configuración del servidor OpenLDAP? No
¿Nombre de dominio DNS?
Esta opción determinará la estructura de base de la ruta de directorio. Lea el mensaje para entender exactamente cómo se va a implementar. Esto es realmente una opción bastante abierta. Puede seleccionar lo que sea «nombre de dominio» valor desea, incluso si usted no es propietario del dominio real. Sin embargo, si usted tiene un nombre de dominio para el servidor, es probablemente una buena idea usar eso.
Para esta guía, vamos a seleccionar aula128.es para nuestra configuración.
¿Nombre de la organización?
Esto también es casi totalmente de sus preferencias.
Para esta tarea, vamos a utilizar bobesponja como el nombre de nuestra organización
¿Contraseña del administrador?
Como mencioné en el apartado de instalación, esta es tu oportunidad real para seleccionar una contraseña para el administrador. Cualquier cosa que seleccione aquí se sobrescribirá la contraseña anterior que utilizó. Y volva a repetirla en el siguiente
¿Base de datos interna? HDB
¿Borrar la base de datos cuando se purga slapd? No
¿Mueva la base de datos antiguo? Sí
¿Permitir protocolo LDAPv2? No
Instalación de phpldapadmin
Aunque es posible de administrar LDAP a través de la línea de comandos, la mayoría de los administradores les resulta más fácil de usar con una interfaz web. Vamos a instalar phpLDAPadmin, que proporciona esta funcionalidad. Los repositorios de Ubuntu contienen el paquete phpLDAPadmin. Se puede instalar escribiendo el siguiente comando
# sudo apt-get install phpldapadmin
Esto debe instalar la interfaz de administración y habilitara los archivos necesarios Apache hosts virtuales y recargar el servidor web (Apache).
Configuración de phpldapadmin
Ahora que el paquete está instalado, tenemos que configurar algunas cosas para que pueda conectarse con la estructura de directorios LDAP que se creó durante la configuración de OpenLDAP.
Editar el archivo de configuración principal con privilegios de root con el comando
# sudo nano –c /etc/phpldapadmin/config.php
En este archivo, tenemos que añadir los detalles de la configuración que hemos creado para nuestro servidor LDAP. Modificar las siguientes líneas, he usado –c para numeran
Línea 286, nombre de nuestro servidor LDAP
Modificar es un ajuste que controla la visibilidad de los mensajes de advertencia. Por defecto phpLDAPadmin arrojará números mensajes de advertencia que molesta en su interfaz web acerca de los archivos de plantilla que no tienen ningún impacto en la funcionalidad
Podemos ocultar estas buscando para el parámetro hide_template_warning, eliminando el comentario de la línea que la contiene, y se establece en «true»
Línea 161
Echen un vistazo para el parámetro host y poniéndolo a nombre de dominio del servidor o la dirección IP pública. Este parámetro debe reflejar la forma en que piensa sobre cómo acceder a la interfaz web por descubrimientos dns.
Asignamos una url para nuestro servidor ldap
Línea 293
En el siguiente, tendrá que configurar el nombre de dominio que ha seleccionado para su servidor LDAP. Recuerde, en esta práctica seleccionamos aula128.es, Tenemos que traducir esto en sintaxis LDAP sustituyendo cada componente de dominio (todo los puntos) en el valor de especificación dc.
Línea 300
Guardar y cerrar el archivo cuando haya terminado.
Creación de un certificado SSL
Para asegurar nuestra conexión con el servidor LDAP con SSL para que los terceros no puedan interceptar nuestras comunicaciones, porque desde la interfaz de administración está hablando con el servidor LDAP en sí en la red local o las conexiones externa a nuestro navegador cuando nos conectamos desde fuera.
Para ello, sólo tenemos que crear un certificado SSL autofirmado que nuestro servidor puede usar. Esto no nos ayudará a validar la identidad del servidor, pero nos permitirá cifrar todo nuestros mensajes y/o comunicaciones.
Los paquetes OpenSSL deben estar instalados en el sistema por defecto. En primer lugar, debemos crear un directorio para almacena nuestro certificado y la clave
# sudo mkdir /etc/ssl/autofirmado
A continuación, podemos crear la clave y el certificado en un solo movimiento escribiendo el siguiente parámetro que incluye todo.
# sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/autofirmado/cert_autofirmado.key -out /etc/ssl/autofirmado/cert_autofirmado.crt
Tendrá que responder algunas preguntas en orden a que la utilidad se llenar los campos en el certificado correctamente. El único que realmente importa es el mensaje que dice Nombre común (por ejemplo, nombre de dominio completo del servidor o su nombre). Escriba el nombre de dominio de su servidor o la dirección IP.
Cuando haya terminado, el certificado y la clave serán creados y guardado en el directorio
Crear un archivo de autenticación con contraseña
Para conseguir 99,9% de seguridad a la administración debemos proteger nuestra ubicación phpldapadmin con contraseña. Aunque phpLDAPadmin tiene autentificación de contraseña, esto proporcionará un nivel adicional de protección.
La utilidad que necesitamos está contenida en un paquete de utilidades Apache.
Instala escribiendo el siguiente comando
# sudo apt-get install apache2-utils
Ahora que tiene la utilidad disponible, puede crear un archivo de contraseñas que contendré los nombre de usuarios que elija y las contraseñas con algoritmo hash asociado.
Vamos a mantener esto en el directorio / etc / apache2. Cree el archivo y especifique el nombre de usuario que desea utilizar escribiendo
A continuación modificamos Apache para aprovechar nuestra actualización de Seguridad.
Configuración del certificado SSL
Lo primero que debemos hacer es habilitar el módulo SSL en Apache con el comando
# sudo a2enmod ssl
Utilizamos este módulo ssl mediante las configuraciones en apache. Actualmente, Apache está leyendo un archivo (la página web) por defecto llamado 000-default.conf para las conexiones HTTP habituales, sin encriptación. Tenemos que decirle a redirigir las peticiones de nuestra interfaz phpldapadmin a nuestra interfaz HTTPS para que se cifra la conexión.
Cuando redirigir el tráfico a usar nuestros certificados SSL, también implementaremos el archivo de contraseñas para autentificar usuarios. Mientras estamos modificando cosas, también vamos a cambiar la ubicación de la propia interfaz phpldapadmin para minimizar los ataques dirigidos.
Modifique la configuración de Apache para phpldapadmin
Este es el lugar donde tenemos que decidir la ubicación URL en la que queremos acceder a nuestra interfaz. El valor predeterminado es / phpldapadmin, pero queremos cambiar esto para reducir los intentos de entrada al azar por los bots y los ciber-delicuentes.
Para esta práctica, vamos a utilizar la ubicación / ldapseguro. Tenemos que modificar la línea que especifica el Alias. Esto debería estar en un bloque mod_alias.c IfModule. Cuando haya terminado, debería tener este aspecto.
Configurar el host virtual HTTP
Modificar nuestro archivo hosts virtuales actual.
Dentro, verás un archivo de configuración bastante básico que tiene este aspecto
Añadimos la información de nuestro nombre de dominio o dirección IP para definir nuestro nombre de servidor y establecimos nuestro redirección a redirigir todas las peticiones HTTP a la interfaz HTTPS. Esto coincidirá con el alias configuramos en la última sección
Los cambios que hemos discutido terminará pareciéndose a esto. Modificar los artículos en pintado con sus propios valores y guarde y cierre el archivo cuando haya terminado.
Configure el Virtual Host HTTPS
Apache incluye un archivo de hosts virtuales SSL por defecto. Sin embargo, no está habilitado por defecto. Podemos activarla con el comando:
Esto vincular de manera simbólico el archivo desde el directorio sites-available en los sitess-enable. Podemos editar este archivo ahora
Este archivo es un poco más complicado que el anterior, por lo que sólo se discutirán los cambios que tenemos que hacer. Todos los cambios a continuación deben ir dentro del bloque del host virtual en el archivo.
En primer lugar, establecimos el valor de ServerName al nombre de dominio o dirección IP de nuestro servidor y cambiar la directiva ServerAdmin
Asignamos nombre descriptiva a los log de registro para gestiona cuando haya necesario
A continuación, tenemos que establecer las directivas de certificados SSL para apuntar a la clave y el certificado que hemos creado. Las directivas ya deben existir en el archivo, Por lo que sólo modificamos las rutas a los que apuntan
La última cosa que necesitamos hacer es configurar el bloque de ubicación que implementará nuestra protección por contraseña para toda sesiones phpldapadmin.
Hacemos esto haciendo referencia a la ubicación en la que estamos accediendo al phpldapadmin y configuración de la autenticación mediante el archivo que generamos. Vamos a exigir cualquier persona que intente acceder a este contenido para autenticarse como usuario autorizado
Guarde y cierre el archivo. Reinicie Apache para implementar todos los cambios hechos.
Nota: Si te encuentras con el error, No te preocupes
* Restarting web server apache2
AH00557: apache2: apr_sockaddr_info_get() failed for bobesponja
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using
127.0.1.1 Set ‘ServerName’ directive globally to suppress this message.
Solucion: agregar la line ServerName localhost en final del fichero /etc/apache2/apache2.conf
Reinicia apache ahora
Así, el servidor OpenLDAP está instalado y configurado con una interfaz web para administrar su estructura a través de la herramienta phpldapadmin. Seguridad para la aplicación al forzar SSL y contraseña para proteger toda la aplicación.
Administración de un servidor OpenLDAP
Como dijo a principio, se puede administra LDAP atreves de línea de comandos pero como phpldapadmin (también conocido como PLA) es un cliente LDAP basado en la web.
Proporciona la facilidad de acceso a la administración desde cualquier lugar y/o sistema operativo, la administración multilingüe (idioma) para el servidor LDAP. Su árbol y funcionalidad de búsqueda avanzada jerárquica hacen intuitiva para navegar y administrar su directorio LDAP.
Ya que es una aplicación web Este navegador de LDAP funciona en muchas, por lo que su servidor LDAP fácilmente manejable desde cualquier ubicación. Su base de usuarios está compuesta principalmente por profesionales de la administración de LDAP.
Accedemos al panel de administración habitualmente poniendo la IP_del_servidor/phpldapadmin
Pero ya que el anterior no está cifrado y en mi caso que tengo asegurado el acceso con conexión cifrada y dos pasos de autentificación me forzar y cambia la ruta siempre para https.
Alli, se salta el certificado para cifra la conexión, como es un certificado autofirmado (es decir no está firmado por una autoridad de certificación) por eso que su registro no está en los navegadores. Así debe aceptar en la primera vez la advertencia de riesgo.
Puede visualizar para aseguara que es nuestro ceritificado antes de aceptar
A continuacion se inicia la conexión https y pider la autentificacion a la web
Ingresa el nombre y contraseña valido y pulsa aceptar
Ya he superado el primer paso de la auntentificacion, ahora pulsa en conectar para auntentificarse en el panel de administacion del servidor OpenLDAP
Ingresa los datos del administrador establecido en el apartado de configuracion LDAP
Creación de unidad organizativas, grupos y usuarios
Rellena los datos y pulsa a crear
Un grupo y usuario creado
Jonathan Diaz
21 abril, 2016 at 20:09
Amigo hice todo lo necesario pero no consigo loguearme en phpldapadmin,no me deja entrar con el admin.
Me gustaMe gusta
Rolando Nguba
3 May, 2016 at 21:32
Que error te dan? recuerde que debe acceder como sitio seguro (HTTPS)
Me gustaLe gusta a 1 persona
Anthony Vidal Calderon Chuquillanqui
14 febrero, 2017 at 16:55
Tienes que cambiar $servers->setValue(‘login’,’attr’,’uid’); a $servers->setValue(‘login’,’attr’,’dn’); y con eso solucionas tu ingreso para eso ya debes instanciar tus parametros del ldap
Me gustaMe gusta