viernes, 13 de marzo de 2015

Configurar un sistema de autenticación centralizado con LDAP

Instalación de LDAP

Hacemos un apt-get update, le voy a instalar las siguientes aplicaciones apt-get install slapd ya que ahí es donde está disponible el servidor OpenLDAD.
El asistente nos pedirá que le insertemos una contraseña y le damos la contraseña que queramos.
Vamos ahora a instalar el paquete ldad-utils que contiene utilidades adicionales. apt-get install ldap-utils.

Configuración.

Lo primero que hacemos es modificar el contenido del archivo /etc/hosts y le añadimos la ip y le indicamos el nombre del servidor, que en este caso he elegido llamarlo iespsur.org.


SLAPD, es un programa que se ejecuta en segundo plano, atendiendo las solicitudes del autentificación LDAP que se reciban en el servidor. El último paso en la configuración del servidor LDAP será establecer algunos parámetros en la configuración de este demonio. 

Para ello debemos ejecutar el siguiente comando: dpkg-reconfigure slapd

Lo primero que nos pregunta el asistente es si deseamos omitir la configuración del servidor LDAP, respondemos que no ya que queremos configurarlo.


Nuestro directorio LDAP debe tener una base, a partir de la cual cuelgan el resto de elementos. Como nombre de la base, habitualmente se utiliza el nombre del dominio. Ejemplo, si nuestro dominio es iespsur.org, lo normal es que la base para nuestro directorio LDAP sea: dc=iespsur,dc=org.

La siguiente pregunta que nos hace el asistente es el nombre de nuestro dominio. Éste nombre lo utilizará para crear el nombre distinguido (DN) o dicho más claramente, nombre identificativo de la base de nuestro directorio LDAP. En este caso pondré iespsur.org.


Posteriormente nos preguntará por el nombre de nuestra organización.


Después nos preguntará por la contraseña que deseamos poner al usuario admin (administrador) del servidor LDAP. Dicha contraseña nos la pedirá dos veces para evitar errores de tecleo.


Acto seguido nos informará sobre los posibles gestores de datos para almacenar el directorio y en la siguiente ventana nos preguntará qué sistema utilizar. Lo recomendable es utilizar el sistema HDB.


Después nos preguntará si queremos que se elimine la base de datos cuando quitemos slapd. Por si acaso, lo mejor es responder que no:


En el caso de que exista una base de datos LDAP previa, nos preguntará si deseamos moverla. Lo mejor es responder , para evitar que interfiera en la nueva base de datos:


Luego nos preguntará si deseamos utilizar LDAP versión 2, respondemos que no ya que apenas se utiliza.


Y ya tendríamos nuestro servidor LDAP listo para trabajar con él. 

Ahora hay que editar el fichero de configuración de slapd y establecer como dominio el que acabamos de crear. Para ello editamos el fichero /etc/ldap/ldap.conf


Estructura del directorio.

Una de las formas más sencillas de añadir información al directorio es utilizar archivos LDIF. Se trata de archivos de texto plano, pero con un formato particular que debemos conocer poder construirlos correctamente.

Para ello agregaremos una organización y para ello hay que crear un archivo, que será en nano/etc/ldap/base.ldif e introducimos lo siguiente:


Una vez hecho procederemos a añadir la información a la base de datos OpenLDAP que se hace con ldapadd. 

Para ello usamos el comando ldapadd –x –D cn=admin, dc=iespsur,dc=org –W –f base.ldif.


Instalación de phpldapadmin.

Vamos a instalar phpldapadmin para configurar el servidor ldap más intuitivamente desde un cliente web. Para ello instalamos con apt-get install phpldapadmin.

Configuración e inicio de phpldapadmin. 

Antes de nada para evitar ciertos errores que suceden en nuestro cliente web es necesario editar el archivo de configuración de php, config.php. Esto es debido a que por defecto nos impone el dominio example.com y debemos establecer el que dimos anteriormente que fue iespsur.com. 

Para ello escribimos: nano /etc/phpldapadmin/config.php.



Ahora solo queda en la url del navegador, la dirección donde este nuestro servidor seguido de /phpldadadmin. Nos conectamos en el dominio creado por el usuario admin.


Nos logeamos con la contraseña que hayamos puesto anteriormente.



Configuración de usuarios y grupos en phpldapadmin.

Crear un grupo de prueba: pruebag con gidNumber 2000

Vamos a crear un grupo, una manera es usando phpladpadmin que sería pulsando sobre crear nuevo objeto y luego marcar la plantilla que queremos, en este caso sería la de Predeterminado.


Nos cambia la pantalla y lo siguiente a elegir es posixGroup.


Deberemos rellenar, como mínimo, los siguientes valores:

El nombre completo (RDN) que deberá ser cn(cn).
El nombre descriptivo del grupo (cn). Por ejemplo pruebag.
El identificador del grupo (gidNumber), que no podrá coincidir con ningún grupo existente. Por ejemplo 2000.
Se da a crear objeto y nos lo crea.



Se puede crear de otra manera, que es en la pantalla principal, pinchando en crear nuevo objeto y pinchando en Genericos: grupo Posix.


Por defecto el número GID que te da es el 500, pero nosotros el que queremos darle es el 2000, así que lo modificaremos más adelante. Le damos el nombre y en principio no le añadimos ningún usuario porque no lo hemos creado.


Aquí te aparece el resumen de lo creado.


Y en la siguiente pantalla es donde nos da la opción de cambiar el número de Gid, o nombrarlo de otra manera.


Vamos a crear un grupo ahora pero a través de la consola.

Para ello creamos un archivo dentro de /etc/ldapd/ al que vamos a llamar grupo.ldif y dentro de él escribimos el siguiente contenido.

dn: cn=grupoconsola, ou=grupos, dc=iespsur, dc=org
objectClass: posixGroup
cn: grupoconsola
gidNumber: 1000


Y ahora lo damos de alta con el comando ldapadd, como hicimos antes.
ldapadd –x –D cn=admin,dc=iespsur,dc=org –W –f grupo.ldif



Crear un usuario de prueba: pruebau con uidNumber 2000.

Al igual que antes tenemos varias maneras de hacerlo, una sería pulsando sobre crear nuevo objeto y luego marcar la plantilla que queremos, en este caso sería la de Predeterminado de nuevo. Entre las tipos de objetos que hay, en este caso elegimos account y posix account. Para seleccionar los dos a la vez, se mantiene pulsado control al pulsar el segundo, para que te lo marque.

En este caso como queremos crear un usuario dentro del grupo ya creado pruebag, pinchamos sobre ese grupo y le damos a crear objeto hijo.


Al hacerlo se nos abre una pantalla para crear el objeto que deseemos, en este caso ponemos genérico: cuenta de usuario.


Se nos abre ahora otra pantalla en la que hay que rellenar los datos.

Se pone el número gid, que es poner al grupo que quieres que pertenezca. Se pone el apellido y con esto te completa el nombre y el directorio personal. Se elige la consola de login y se añade una contraseña.
Y cuando se completen los datos se le da a crear objeto.

En mi caso me ha dado un error con la plantilla, de forma que gráficamente no podía introducir los datos de creación de usuarios ya que no me salía el botón de crear el objeto. 
Error trying to get a non-existant value (appearance,password_hash).
La manera de solucionarlo es modificar un dato de un archivo.
Todo lo que hay que hacer es cambiar password_hash /usr/share/phpldapadmin/lib/TemplateRender.php hay que buscar en la línea 2469 la palabra para password_hash y modificarla por password_hash_custom.

Como es engorroso ir línea a línea la consola tiene una opción para buscar concretamente la palabra que queremos, le damos a control+w y ponemos la palabra que queremos que nos busque, y la modificamos.





Vamos a crear un usuario ahora pero a través de la consola.

Consiste en crear un nuevo archivo ldif y, a continuación, integrarlo en la base de datos con ldapadd.
Creamos un archivo ldif, llamado usuarios.ldif dentro de /etc/ldap.
En el área de trabajo del editor, escribiremos un contenido como este:
dn: uid=pruebau,ou=usuarios,dc=iespsur,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: pruebau
sn: pruebau
givenName: pruebau
cn: pruebau
displayName: pruebau
uidNumber: 2001
gidNumber: 2000
userPassword: usuario
gecos: pruebau
loginShell: /bin/sh
homeDirectory: /home/pruebau 
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: pruebau@iespsur.org
postalCode: 41000
o: iespsur
initials: PB



Con esto ya estamos listos para cargar el nuevo usuario en el directorio. Sólo tenemos que escribir el siguiente comando:
ldapadd -x -D cn=admin,dc=iespsur,dc=org -W -f usuario.ldif

No hay comentarios:

Publicar un comentario