|
|
Atención: 20 al 24 de febrero, Curso Global de Servidores con CentOS 6. Atención: 21 y 28 de enero, 4 y 11 de febrero, Taller de programación de Python. Atención: Disponible ALDOS 1.4.2. Nuestro sistema operativo para escritorio. Cómo configurar OpenLDAP como servidor de autenticación.
Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ Jabber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
Introducción.Acerca de LDAP.LDAP (Lightweight Directory Access Protocol) es un protocolo para consulta y modificación de servicios de directorio que se desempeñan sobre TCP/IP. LDAP utiliza el modelo X.500 para su estructura, es decir, se estructura árbol de entradas, cada una de las cuales consiste de un conjunto de atributos con nombre y que a su vez almacenan valores.El inicio de la operación StartTLS en un servidor LDAP, establece la comunicación TLS (Transport Layer Security, o Seguridad para Nivel de Transporte) a través del mismo puerto 389 por TCP. Provee confidencialidad en el transporte de datos e protección de la integridad de datos. Durante la negociación, el servidor envía su certificado con estructura X.509 para verificar su identidad. URL: http://en.wikipedia.org/wiki/LDAP Acerca de RSA.RSA, acrónimo de los apellidos de sus autores, Ron Rivest, Adi Shamir y Len Adleman, es un algoritmo para el ciframiento de claves públicas que fue publicado en 1977, patentado en EE.UU. en 1983 por el el Instituto Tecnológico de Michigan (MIT). RSA es utilizado ampliamente en todo el mundo para los protocolos destinados para el comercio electrónico. URL: http://es.wikipedia.org/wiki/RSA Acerca de X.509.X.509 es un estándar ITU-T (estandarización de Telecomunicaciones de la International Telecommunication Union ) para infraestructura de claves públicas (PKI, o Public Key Infrastructure). Entre otras cosas, establece los estándares para certificados de claves públicas y un algoritmo para validación de ruta de certificación. Este último se encarga de verificar que la ruta de un certificado sea válida bajo una infraestructura de clave pública determinada. Es decir, desde el certificado inicial, pasando por certificados intermedios, hasta el certificado de confianza emitido por una Autoridad Certificadora (CA, o Certification Authority). URL: http://es.wikipedia.org/wiki/X.509Acerca de OpenSSL.OpenSSL es una implementación libre, de código abierto, de los protocolos SSL (Secure Sockets Layer o Nivel de Zócalo Seguro) y TLS (Transport Layer Security, o Seguridad para Nivel de Transporte). Está basado sobre el extinto proyecto SSLeay, iniciado por Eric Young y Tim Hudson, hasta que éstos comenzaron a trabajar para la división de seguridad de EMC Corporation. Equipamiento lógico necesario.
Instalación a través de yum.Si utiliza CentOS 6, o Red Hat™ Enterprise Linux 6, ejecute lo siguiente para instalar, o actualizar, el equipamiento lógico necesario:
Procedimientos.SELinux y el servicio ldap.El servicio slapd funcionará perfectamente con SELinux activo en modo de imposición (enforcing). Todo el contenido del directorio /var/lib/ldap debe tener contexto tipo slapd_db_t.
Lo anterior solo será necesario si se restaura un respaldo hecho a partir de un sistema sin SELinux. Certificados para TLS/SSL.Es muy importante utilizar TLS/SSL cuando se configura el sistema para fungir como servidor de autenticación, por lo cual el siguiente procedimiento es obligatorio. Si utiliza CentOS 6, o Red Hat™ Enterprise Linux 6, requerirá al menos openldap-2.4.23-16.el6, debido a que la versiones anteriores tienen roto el soporte para TLS/SSL. Cambie al directorio /etc/pki/tls/certs:
La creación de la firma digital y certificado requiere utilizar una firma digital con algoritmo RSA de 2048 octetos, y estructura x509. De modo predeterminado se establece una validez por 365 días (un año) para el certificado que se creará.
Lo anterior solicitará se ingresen varios datos:
La salida sería similar a la siguiente:
El certificado solo será válido cuando el servidor LDAP sea invocado con el nombre definido en el campo Common Name. Es decir, sólo podrá utilizarlo cuando se defina como nombre de anfitrión, es decir servidor.dominio.tld. Para que esto funcione, será indispensable que un servidor DNS se encargue de la resolución del nombre de anfitrión del servidor LDAP para toda la red de área local. Es indispensable que el archivo que contiene la firma digital y el certificado tenga permisos de acceso de lectura y escritura para el usuario root, y permisos de acceso de sólo lectura para el grupo ldap:
Creación de directorios.Con fines de organización se creará un directorio específico para este directorio y se configurará con permisos de acceso exclusivamente al usuario y grupo ldap.
Se requiere copiar el archivo DB_CONFIG.example dentro del directorio /var/lib/ldap/autenticar/, como el archivo DB_CONFIG. Ejecute lo siguiente:
Todo el contenido del directorio /var/lib/ldap/autenticar debe pertenecer al usuario y grupo ldap. Ejecute lo siguiente:
Creación de claves de acceso para LDAP.Para crear la clave de acceso que se asignará en LDAP para el usuario administrador del directorio, ejecute lo siguiente:
Lo anterior debe devolver como salida un criptograma, similar al mostrado a continuación:
Copie y respalde este criptograma. El texto de la salida será utilizado más adelante en el archivo /etc/openldap/slapd.conf y se definirá como clave de acceso para el usuario Administrador, quien tendrá todos los privilegios sobre el directorio. Archivo de configuración /etc/openldap/slapd.conf.Se debe crear /etc/openldap/slapd.conf como archivo nuevo:
El archivo /etc/openldap/slapd.conf debe de tener definidos todos los archivos de esquema mínimos requeridos. De tal modo, el inicio del archivo debe contener algo similar a lo siguiente:
Se deben habilitar los parámetros TLSCACertificateFile, TLSCertificateFile y TLSCertificateKeyFile estableciendo las rutas hacia el certificado y clave.
A fin de permitir conexiones desde clientes con OpenLDAP 2.x, establecer el archivo de número de proceso, y el archivo de argumentos de LDAP, deben estar presentes los siguientes parámetros, con los correspondientes valores:
Para concluir con el /etc/openldap/slapd.conf, se añade lo siguiente, que tiene como finalidad el definir la configuración del nuevo directorio que en adelante se utilizará para autenticar a toda la red de área local:
En resumen, el archivo /etc/openldap/slapd.conf debiera quedar de modo similar al siguiente:
Por seguridad, el archivo /etc/openldap/slapd.conf deberá tener permisos de lectura y escritura, sólo para el usuario ldap.
Elimine el conjunto de archivos y directorios que componen los configuración predeterminada:
Convierta el archivo /etc/openldap/slapd.conf en el nuevo subconjunto de archivos ldif que irán dentro del directorio /etc/ldap/slapd.d:
Todo el contenido del directorio /etc/ldap/slapd.d debe pertenecer al usuario y grupo ldap. Ejecute lo siguiente:
Inicio del servicio.Inicie el servicio slapd, y añada éste al resto de los servicios que arrancan junto con el sistema, ejecutando los siguientes dos mandatos:
Migración de cuentas existentes en el sistema.Edite el archivo /usr/share/migrationtools/migrate_common.ph:
Modifique los los valores de las variables $DEFAULT_MAIL_DOMAIN y
A continuación, hay que crear el objeto que a su vez contendrá el resto de los datos en el directorio, utilizando migrate_base.pl para generar el archivo base.ldif. Genere el archivo base.ldif, ejecutando lo siguiente:
Utilice el mandato ldapadd para insertar los datos necesarios. Las opciones utilizadas con este mandato son las siguientes:
Una vez entendido lo anterior, se procede a insertar la información generada en el directorio utilizando lo siguiente:
Una vez hecho lo anterior, se podrá comenzar a poblar el directorio con datos. Lo primero será importar los grupos y usuarios existentes en el sistema. Realice la importación de usuarios creando los archivos group.ldif y passwd.ldif, utilizando migrate_group.pl y migrate_passwd.pl. Ejecute los siguientes dos mandatos:
Lo anterior creará los archivos group.ldif y passwd.ldif, los cuales incluirán la información de los grupos y cuentas en el sistema, incluyendo las claves de acceso. Los datos se podrán insertar en el directorio LDAP utilizando lo siguiente:
Comprobaciones.Antes de configurar el sistema para utilizar LDAP para autenticar, es conveniente verificar que todo funciona correctamente. El siguiente mandato verifica que directorios disponibles existen en el servidor 127.0.0.1.
Lo anterior debe devolver una salida similar a lo siguiente:
El siguiente mandato debe devolver toda la información de todo el directorio solicitado (dc=dominio,dc=tld).
Otro ejemplo es realizar una búsqueda específica, para un usuario en particular. Asumiendo que en el directorio existe el usuario denominado fulano, ejecute lo siguiente:
Lo anterior debe regresar algo similar a lo siguiente:
Configuración de clientes.Los clientes CentOS 6, y Red Hat Enterprise Linux 6, requieren tener instalados los paquetes nss-pam-ldap, authconfig y openldap-clients-2.4.23-16.el6 (las versiones anteriores de este último tienen roto el soporte para TLS/SSL):
Defina los valores para los parámetros host y base, a fin de establecer hacia que servidor y a que directorio conectarse, en el archivo /etc/pam_ldap.conf.
Para fines prácticos, el valor del parámetro uri corresponde al nombre del servidor LDAP, previamente resuelto por un DNS, y el valor del parámetro base debe ser el mismo que se especificó en el archivo /etc/openldap/slapd.conf para el parámetro suffix. Considerando que el nombre de anfitrión del servidor LDAP está resuelto por un servidor DNS, como servidor.dominio.tld, puede definir lo siguiente:
Asumiendo que el servidor LDAP tiene definido como nombre de anfitrión servidor.dominio.tld, previamente resuelto en un servidor DNS, ejecute lo siguiente:
Si utiliza CentOS 6, o Red Hat™ Enterprise Linux 6, con openldap-clients-2.4.23-15.el6, y versiones anteriores, utilice --disableldaptls, en lugar de --enableldaptls. Administración.Existen muchos programas para acceder y administrar servidores LDAP, pero la mayoría sólo sirven para administrar usuarios y grupos del sistema, como el módulo de LDAP de Webmin. La mejor herramienta de administración de directorios LDAP que puedo recomendar es PHP LDAP Admin. Respaldo de datos.El procedimiento requiere detener el servicio slapd.
Utilice el mandato slapcat del siguiente modo, definiendo el directorio de configuración /etc/openldap/slapd.d.
Inicie de nuevo el servicio slapd.
Restauración de datos.El procedimiento requiere detener el servicio. Ejecute lo siguiente:
Deben eliminarse los datos del directorio a restaurar.
Utilice la herramienta slapadd para cargar los datos del respaldo desde un archivo *.ldif.
Para regenerar los índices LDAP, ejecute el mandato slapindex:
Inicie de nuevo el servicio, ejecutando lo siguiente:
Modificaciones necesarias en el muro cortafuegos.Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir el puerto 389 (ldap), por TCP. Si utiliza Shorewall, edite el archivo /etc/shorewall/rules:
Las reglas corresponderían a algo similar a lo siguiente:
Al terminar de configurar las reglas para Shorewall, reinicie el muro cortafuegos, ejecutando el siguiente mandato:
|
Comentarios Recientes