RSS

LDAP: Servidor OpenLDAP. Instalación, configuración y administración básico

30 Ene

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

Conceptos básicos de LDAP

 

¿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

Estructura LDAP

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:

  1. 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).
  1. Una entrada consiste en conjunto de atributos.
  1. Un atributo tiene un tipo (un nombre / una descripción) y uno o más valores.
  1. Cada atributo debe estar definido en al menos un tipo de objeto (objectClass).
  1. Los atributos y clases de objetos se definen en esquemas (un objeto se considera realmente como un tipo especial de atributo).
  1. 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.
  1. 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 de la MV para OpenLDAP

 

Configuración básica de la  Máquina Virtual (Ubuntu Server 14.04)

ubuntu server 14.04 con VirtualBox

Una tarjeta  para la red interna (LAN) y el otro en adaptador puente para Internet(WAN)

ifconfig -a

Instala LDAP

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

apt-get update && apt-get upgrade

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

slapd

Proceda con la instalación:

# sudo apt-get install slapd ldap-utils

image017

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

image018

Repite la contraseña

image019

La instalación terminara iniciando el servidor OpenLDAP slapd como la figura abajo

inicia slapd

Comprobar si la instalación e iniciación esta correcta y el puerto del servicio está abierto

# sudo netstat – natup

comprobar la instlacion de openldap

# sudo ldapsearch -x

ldapsearch -x

configurar ldap

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

dpkg reconfigure-slapd

Desea omitir la configuración del servidor OpenLDAP? No

image025

¿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.

image026

¿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

image027

¿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

contraseña ldap

¿Base de datos interna? HDB

image029

¿Borrar la base de datos cuando se purga slapd? No

image030

¿Mueva la base de datos antiguo?

image031

¿Permitir protocolo LDAPv2? No

image032

image033

image034

 

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

image035

Esto debe instalar la interfaz de administración y habilitara los archivos necesarios Apache hosts virtuales y recargar el servidor web (Apache).image036

image037

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

image038

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

image039

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

image040

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

image041

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

image043

Guardar y cerrar el archivo cuando haya terminado.

Crear certificados SSL

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

image045

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

image046

image047

 

 

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

image048

A continuación modificamos Apache para aprovechar nuestra actualización de Seguridad.

image049

Configuración del certificado SSL

Lo primero que debemos hacer es habilitar el módulo SSL en Apache con el comando

# sudo a2enmod ssl

image050

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.

image051

 

Modifique la configuración de Apache para phpldapadmin

image052

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.

image053

image054

 

Configurar el host virtual HTTP

Modificar nuestro archivo hosts virtuales actual.

image055

Dentro, verás un archivo de configuración bastante básico que tiene este aspecto

image056

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.

image057

image058

 

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:

image059

Esto vincular de manera simbólico el archivo desde el directorio sites-available en los sitess-enable. Podemos editar este archivo ahora

image060

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

image061

Asignamos nombre descriptiva a los log de registro para gestiona cuando haya necesario

image062

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

image063

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

image064

Guarde y cierre el archivo. Reinicie Apache para implementar todos los cambios hechos.

 image065

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

image066

image067

Reinicia apache ahora

image068

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.

Administrar LDAP

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.

https://IP_de_servidor/ldapseguro

image070

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.

image071

Puede visualizar para aseguara que es nuestro ceritificado antes de aceptar

image072

A continuacion se inicia la conexión https y pider la autentificacion a la webimage073

Ingresa el nombre y contraseña valido y pulsa aceptarimage074

Ya he superado el primer paso de la auntentificacion, ahora pulsa en conectar para auntentificarse en el panel de administacion del servidor OpenLDAPimage075

Ingresa los datos del administrador establecido en el apartado de configuracion LDAP

image076

Creación de unidad organizativas,  grupos y usuarios

image077

image078

Rellena los datos y pulsa a crear

image079

Un grupo y usuario creado

image080


 

Anuncios
 

Etiquetas: ,

4 Respuestas a “LDAP: Servidor OpenLDAP. Instalación, configuración y administración básico

  1. 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 gusta

     
    • Rolando Nguba

      3 mayo, 2016 at 21:32

      Que error te dan? recuerde que debe acceder como sitio seguro (HTTPS)

      Me gusta

       
    • 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 gusta

       

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: