martes, 23 de febrero de 2010

Cómo configurar OpenLDAP como servidor de autenticación.(1/3)

Acá les traigo una excelente guía paso a paso sobre la configuración de LDAP en Linux que encontré en la red, en total publicaré tres guías del mismo autor, la cual, ésta es la primera a seguir para poder llegar a configurar un servidor proxy con Squid.

Introducción.

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.
URL: http://en.wikipedia.org/wiki/LDAP

Sustento lógico requerido.

openldap-2.2.13
openldap-clients-2.2.13
openldap-servers-2.2.
authconfig-4.6.10
authconfig-gtk-4.6.10 (opcional)

Instalación a través de yum.
yum -y install openldap openldap-clients openldap-servers authconfig authconfig-gtk
Instalación a través de up2date.
up2date -i openldap openldap-clients openldap-servers authconfig authconfig-gtk

Procedimientos.

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.
mkdir /var/lib/ldap/autenticar
chmod 700 /var/lib/ldap/autenticar
chown ldap.ldap /var/lib/ldap/autenticar


Crear la clave de acceso que se asignará en LDAP para el usuario administrador del directorio. Basta ejecutar desde una terminal:


slappasswd


Lo anterior debe dar como salida un criptograma como lo mostrado a continuación:


{SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


El texto de la salida será utilizado más adelante en el fichero /etc/openldap/slapd.conf y se definirá al usuario Administrador para como el utilizado para acceder con todos los privilegios al directorio.


Se edita el fichero /etc/openldap/slapd.conf y se verifica que los ficheros de esquema mínimos requeridos estén presentes. De tal modo, debe quedar algo así:


#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include  /etc/openldap/schema/core.schema
include  /etc/openldap/schema/cosine.schema
include  /etc/openldap/schema/inetorgperson.schema
include  /etc/openldap/schema/nis.schema


Independientemente de lo que ya se tenga configurado, y que no será tocado, se añade al final del fichero /etc/openldap/slapd.conf lo siguiente con el fin de definir el nuevo directorio que en adelante se utilizará para autenticar a toda al red local:


database bdb
suffix  "dc=su-red-local,dc=com"
rootdn  "cn=Administrador,dc=su-red-local,dc=com"
rootpw          {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
directory /var/lib/ldap/autenticar

# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub


Inicie el servicio de LDAP y añada éste al resto de los servicios que arrancan junto con el sistema:


service ldap start
chkconfig ldap on


Edite el fichero /usr/share/openldap/migration/migrate_common.ph y modifique los los valores de las variables $DEFAULT_MAIL_DOMAIN y $DEFAULT_BASE a fin de que queden del siguiente modo:


# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "su-red-local.com";

# Default base
$DEFAULT_BASE = "dc=su-red-local,dc=com";


A continuación hay que crear el objeto que a su vez contendrá el resto de los datos en el directorio. Genere un fichero base.ldif del siguiente modo:


/usr/share/openldap/migration/migrate_base.pl > base.ldif


Se utilizará ldapadd para insertar los datos necesarios. Las opciones utilizadas con este mandato son las siguientes:


-x  autenticación simple
-W  solicitar clave de acceso
-D binddn Nombre Distinguido (dn) a utilizar
-h anfitrión Servidor LDAP a acceder
-f fichero  fichero a utilizar


Una vez entendido lo anterior, se procede a insertar la información generada en el directorio utilizando lo siguiente:


ldapadd -x -W -D 'cn=Administrador, dc=su-red-local, dc=com' -h 127.0.0.1 -f base.ldif


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 utilizando los guiones correspondientes del siguiente modo:


/usr/share/openldap/migration/migrate_group.pl /etc/group group.ldif

/usr/share/openldap/migration/migrate_passwd.pl /etc/passwd passwd.ldif



Lo anterior creará los ficheros 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:


ldapadd -x -W -D 'cn=Administrador, dc=su-red-local, dc=com' -h 127.0.0.1 -f group.ldif

ldapadd -x -W -D 'cn=Administrador, dc=su-red-local, dc=com' -h 127.0.0.1 -f passwd.ldif



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.


ldapsearch -h 127.0.0.1 -x -b '' -s base '(objectclass=*)' namingContexts


Lo anterior debe devolver una salida similar a lo siguiente:


# extended LDIF
#
# LDAPv3
# base <> with scope base
# filter: (objectclass=*)
# requesting: namingContexts
#

#
dn:
namingContexts: dc=su-red-local,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


El siguiente mandato debe devolver toda la información de todo el directorio solicitado (dc=su-red-local,dc=com).


ldapsearch -x -b 'dc=su-red-local,dc=com' '(objectclass=*)'


Otro ejemplo es realizar una búsqueda específica para un usuario en particular. Suponiendo que en el sistema se tiene un usuario denominado fulano, puede ejecutarse lo siguiente:


ldapsearch -x -b 'uid=fulano,ou=People,dc=su-red-local,dc=com'


Lo anterior debe regresar algo como lo siguiente:


# extended LDIF
#
# LDAPv3
# base  with scope sub
# filter: (objectclass=*)
# requesting: ALL
#

# fulano, People, linuxparatodos.net
dn: uid=fulano,ou=People,dc=su-red-local,dc=com
uid: fulano
cn: fulano
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: xxxxxxxxxxxx
shadowLastChange: 12594
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 505
gidNumber: 505
homeDirectory: /home/fulano

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1


Configuración de clientes.



Defina los valores para los parámetros host y base a fin de establecer hacia que servidor y a que directorio conectarse. Para fines prácticos, el valor del parámetros base debe ser el mismo que se especificó en el fichero /etc/openldap/slapd.conf para el parámetro suffix.


# Your LDAP server. Must be resolvable without using LDAP.
# Multiple hosts may be specified, each separated by a
# space. How long nss_ldap takes to failover depends on
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
host 192.168.0.1

# The distinguished name of the search base.
base dc=su-red-local,dc=com


Lo que sigue es utilizar ya sea authconfig o authconfig-gtk para configurar el sistema a fin de que se utilice el servidor LDAP para autenticar.


authconfig (modo texto)


Habilite las casillas Utilizar LDAP y Utilizar Autenticación LDAP y pulse la tecla Tab hasta Siguiente y pulse la tecla Enter y verifique que los datos del servidor y el directorio a utilizar sean los correctos.


authconfig, pantalla principal.


uthconfig, pantalla principal.


authconfig, pantalla configuración ldap.


authconfig, pantalla configuración ldap.


authconfig-gtk (modo gráfico)


Si se utiliza authconfig-gtk se deben habilitar las casillas de Soporte LDAP. Antes de cerrar la ventana en la pestañas de Información del usuario y Autenticación. Antes de dar clic en Aceptar, haga clic en Configurar LDAP y verifique que los datos del servidor y el directorio a utilizar sean los correctos.


authconfig-gtk, pestaña de Información del usuario.


authconfig-gtk, pestaña de Información del usuario.


authconfig-gtk, pestaña de Autenticación.


authconfig-gtk, pestaña de Autenticación.


authconfig-gtk, ventana Configurar LDAP.


authconfig-gtk, ventana Configurar LDAP.


Administración.



Hay una gran cantidad de programas para acceder y administrar servidores LDAP, pero la mayoría solo sirven para administrar usuarios y grupos del sistema como diradmin y el módulo de LDAP de Webmin. La mejor herramienta de administración de directorios LDAP que podemos recomendar es LDAP Browser/Editor (requiere Java).


LDAP Browser/Editor 2.8.1


LDAP Browser/Editor 2.8.1.


Respaldo de datos.



Debe detenerse el servicio de LDAP antes de proceder con el respaldo de datos.


service ldap stop


A continuación, se utiliza la herramienta slapcat, utilizando el fichero de configuración /etc/openldap/slapd.conf.


slapcat -v -f /etc/openldap/slapd.conf -l respaldo-$(date +%Y%m%d).ldif


Concluido el proceso de respaldo de datos, puede iniciarse de nuevo el servicio de ldap.


service ldap start


Restauración de datos.



El procedimiento requiere detener el servicio.


service ldap stop


Debe eliminarse los datos del directorio a restaurar.


rm -f /var/lib/ldap/autenticar/*


A continuación, se utiliza la herramienta slapadd para cargar los datos desde un fichero *.dif de respaldo.


slapadd -v -c -l respaldo-20061003.ldif -f /etc/openldap/slapd.conf


Se debe ejecutar la herramienta slapindex, que se utiliza para regenerar los índices LDAP.


slapindex


Concluido el proceso de restauración de datos, puede iniciarse de nuevo el servicio de ldap.


service ldap start


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 por TCP (LDAP).


Las reglas para el fichero /etc/shorewall/rules de Shorewall correspondería a algo similar a lo siguiente:


#ACTION SOURCE DEST PROTO  DEST  SOURCE
#    PORT  PORT(S)1
ACCEPT net fw tcp 389
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE


Autor: Joel Barrios Dueñas


Correo electrónico: jbarrios arroba linuxparatodos punto net Sitio de Red: http://www.linuxparatodos.net/


Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1



© 1999-2006 Linux Para Todos. Algunos Derechos Reservados 2007 Factor Evolución SA de CV. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales. c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.





Fuente: http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-ldap-auth


3 comentarios:

  1. Hola, buenos días.
    Vi muchos tutoriales de openLDAP, y con este me quedo claro para que se utiliza cada elemento.

    Gracias por la publicación.

    ResponderEliminar
  2. Hola oye tengo una duda ala hora que dices que se hace la importacion , los archivos group.ldif y el otro como se generan.

    /usr/share/openldap/migration/migrate_group.pl /etc/group group.ldif

    /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd passwd.ldif

    ResponderEliminar
  3. Esos se generan con los archivos migrate_group.pl y migrate_password.pl los cuales son archivos perl los cuales hacen llamada al intérprete y generan los LDIF como por ejemplo las llamadas hechas anteriormente:

    /usr/share/openldap/migration/migrate_group.pl /etc/group/group.ldif

    /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd/passwd.ldif

    Ó

    /usr/share/openldap/migration/migrate_group.pl /etc/group.ldif

    /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd.ldif

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...