Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2....

22
INGENIERÍA DE SERVIDORES Tarea opcional: Configuración de un servidor de autenticación Instalación y configuración de autenticación mediante OpenLDAP Javier Sáez de la Coba Curso 2018-2019 9 de diciembre de 2018 cb

Transcript of Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2....

Page 1: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

INGENIERÍA DE SERVIDORES

Tarea opcional: Configuración de unservidor de autenticación

Instalación y configuración de autenticaciónmediante OpenLDAP

Javier Sáez de la Coba

Curso 2018-2019

9 de diciembre de 2018

cb

Page 2: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Índice

1. Introducción al problema 2

2. Diseño del laboratorio virtual 2

3. Instalación del servidor LDAP 3

4. Configuración de autenticación en los clientes 74.1. shellserver. Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74.2. empleado1. CentOS 7 con entorno gráfico . . . . . . . . . . . . . . . . . . . . . 124.3. empleado2. Windows XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5. Conclusiones 20

1

Page 3: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

1. Introducción al problema

En el listado de tareas a realizar elegimos ”Configuración de un servidor de autenticación’́.Tras hablarlo con el profesor decidimos hacer una instalación y configuración de OpenLDAPcomo base de datos donde guardar información de los usuarios y su uso como servidor deautenticación. Para probar esta configuración vamos a configurar 3 sistemas diferentes, cadaunoorientadoaunserviciodistinto:unoesunservidordeshell remota,otroesunpuestográficoLinux y otro un puesto de escritorio con Windows XP.

2. Diseño del laboratorio virtual

Para poder montar toda esta infraestructura nos hace falta un conjunto de equipos. Aunquepodrían ser equipos reales vamos a montarlo todo como una infraestructura virtual bajoVirtualBox. Los equipos se conectan mediante una red NAT. En este esquema de conexionestodos los equipos pueden verse entre sí y pueden acceder a Internet. Además, el servidorldapserver va a tener una segunda interfaz de red de tipo host-only para facilitar lasconexiones host-máquina virtual. El resto de equipos (menos Windows), se configurarán através de una conexión ssh. El esquema de máquinas virtuales y sus conexiones quedan de lasiguiente manera:

Puesto shell remota shellserver

Servidor LDAP ldapserver

Puesto CentOS 7 empleado1 Puesto Windows XP

empleado2

Red NAT

10.0.3.1

10.0.3.8

10.0.3.10110.0.3.100

10.0.3.4

Host-Only 192.168.56.70

Host VirtualBox

Figura 1: Diagrama de conexiones

Todos los equipos tienen un usuario javier con contraseña isepass con permisos de

2

Page 4: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

administrador.

Figura 2: Laboratorio virtual preparado

3. Instalación del servidor LDAP

Una vez tenemos listo el laboratorio virtual vamos a instalar el servidor LDAP en la máquinaldapserver siguiendo las instrucciones encontradas en [5] y [4]. Para simplificar la instalaciónvamos a usar LDAP sin un túnel TLS para evitar la generación y configuración de los certificadosSSL. En un entorno no seguro o un entorno de producción esto es indispensable. Como LDAP esun servicio de directorio necesitamos un dominio base del que cuelgan todas las entradas deldirectorio. Nuestra raíz va a ser miempresa.com.

Procedemos a la instalación del servidor ldap.

sudo apt install slapdsudo dpkg-reconfigure slapd

Durante la ejecución de estos comandos se nos pedirá la contraseña administrativa quequeremos ponerle al servidor y un nombre de dominio que actuará como raíz del directorio.

LDAPusaun sistemadeconfiguracióndentrodel propio LDAPcomounabasededatosdistinta a

3

Page 5: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

la que usamos. Esto se hace para poder cambiar la configuración de LDAP sin tener que reiniciarel servicio. Para poder editar la configuración hacemosusode las herramientas de ldap-utils.

Vamos a ver las dos estructuras que tenemos creadas: el directorio de configuración y eldirectorio de nuestra empresa.

root@ldapserver:/etc/ldap/slapd.d# sudo ldapsearch -Q -LLL -Y EXTERNAL -Hldapi:/// -b cn=config dn

dn: cn=config

dn: cn=module{0},cn=config

dn: cn=schema,cn=config

dn: cn={0}core,cn=schema,cn=config

dn: cn={1}cosine,cn=schema,cn=config

dn: cn={2}nis,cn=schema,cn=config

dn: cn={3}inetorgperson,cn=schema,cn=config

dn: olcBackend={0}mdb,cn=config

dn: olcDatabase={-1}frontend,cn=config

dn: olcDatabase={0}config,cn=config

dn: olcDatabase={1}mdb,cn=config

root@ldapserver:/etc/ldap/slapd.d# ldapsearch -x -LLL -H ldapi:///-b dc=miempresa,dc=com

dn: dc=miempresa,dc=comobjectClass: topobjectClass: dcObjectobjectClass: organizationo: miempresadc: miempresa

dn: cn=admin,dc=miempresa,dc=comobjectClass: simpleSecurityObject

4

Page 6: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

objectClass: organizationalRolecn: admindescription: LDAP administrator

Ahoramismo en nuestro directorio solo existe el elemento raiz y el elemento administrador quedepende de él.

Vamos a crear unos datos iniciales que nos servirán para poder autenticar sistemas UNIX y unpar de usuarios de prueba. Estos datos se podrían introducir atributo a atributo mediante elcomando ldapadd. Este método sería muy lento, por ello vamos a hacer uso del formato LDIF(LDAP Data Interchange Format).

El archivo que vamos a cargar es el siguiente:

dn: ou=People,dc=miempresa,dc=comobjectClass: organizationalUnitou: People

dn: ou=Groups,dc=miempresa,dc=comobjectClass: organizationalUnitou: Groups

dn: cn=empleados,ou=Groups,dc=miempresa,dc=comobjectClass: posixGroupcn: empleadosgidNumber: 5000

dn: uid=jscoba,ou=People,dc=miempresa,dc=comobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: shadowAccountuid: jscobasn: SaezgivenName: Javiercn: Javier SaezdisplayName: Javier SaezuidNumber: 10000gidNumber: 5000userPassword: isepassloginShell: /bin/bashhomeDirectory: /home/jscoba

5

Page 7: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

dn: uid=empleado1,ou=People,dc=miempresa,dc=comobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: shadowAccountuid: empleado1sn: GenericogivenName: Empleadocn: Empleado GenericodisplayName: Empleado sin nombreuidNumber: 10001gidNumber: 5000userPassword: isepassloginShell: /bin/bashhomeDirectory: /home/empleado1

Donde especificamos dos unidades organizativas (People y Groups), un grupo de usuarios(empleados) y dos usuarios distintos (jscoba y empleado1). Para cargar esta información enLDAP ejecutamos

~# ldapadd -x -D cn=admin,dc=miempresa,dc=com -W -f initial_users.ldifEnter LDAP Password:adding new entry "ou=People,dc=miempresa,dc=com"

adding new entry "ou=Groups,dc=miempresa,dc=com"

adding new entry "cn=empleados,ou=Groups,dc=miempresa,dc=com"

adding new entry "uid=jscoba,ou=People,dc=miempresa,dc=com"

adding new entry "uid=empleado1,ou=People,dc=miempresa,dc=com"

Con la información cargada en LDAP ya podemos dar por terminada la configuración delservidor.

Podemos comprobar que todo funciona correctamente mediante las utilidades contenidas enel paquete ldapscripts.

~# lsldap -uWarning : using command-line passwords, ldapscripts may not be safedn: uid=jscoba,ou=People,dc=miempresa,dc=com

6

Page 8: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

objectClass: inetOrgPersonobjectClass: posixAccountobjectClass: shadowAccountuid: jscobagivenName: JavieruidNumber: 10000gidNumber: 5000userPassword:: aXNlcGFzcw==loginShell: /bin/bashhomeDirectory: /home/jscobasn: Saezcn: Javier SaezdisplayName: Javier Saez

dn: uid=empleado1,ou=People,dc=miempresa,dc=comobjectClass: inetOrgPersonobjectClass: posixAccountobjectClass: shadowAccountuid: empleado1sn: GenericogivenName: Empleadocn: Empleado GenericodisplayName: Empleado sin nombreuidNumber: 10001gidNumber: 5000userPassword:: aXNlcGFzcw==loginShell: /bin/bashhomeDirectory: /home/empleado1

4. Configuración de autenticación en los clientes

Ahora vamos a configurar los distintos clientes de nuestro laboratorio virtual para que utilicenel servidor LDAP como servidor de autenticación.

4.1. shellserver. Ubuntu

Vamos a configurar la autenticación mediante ldap en el servidor shellserver, cuyo sistemaoperativo es el mismo Ubuntu Server que el del servidor LDAP.

7

Page 9: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Nos logueamos con el usuario local que se creó durante la instalación y procedemos a ejecutarlos siguiente comandos

sudo apt install libnss-ldapsudo auth-client-config -t nss -p lac_ldapsudo pam-auth-update

Durante la instalación de libnss-ldap se nos pregunta acerca de la ubicación del servidorLDAP, la base de nuestro directorio y la contraseña de administración del LDAP para que rootpueda cambiar contraseñas.

Figura 3: Dirección del servidor LDAP

8

Page 10: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 4: Base del directorio LDAP

9

Page 11: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 5: Entidad administradora del directorio LDAP

Una vez finalizados estos pasos ya podemos iniciar sesión usando las credenciales guardadasen el directorio.

10

Page 12: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 6: Inicio de sesión con las credenciales de LDAP

Figura 7: Inicio de sesión con las credenciales de LDAP

Nótese que el home del usuario se crea la primera vez que inicia sesión en el sistema. Si

11

Page 13: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

tuviéramos un servidor de archivos del que montamos el home de los usuarios esto no seríanecesario.

4.2. empleado1. CentOS 7 con entorno gráfico

Primero instalamos el cliente de LDAP siguiendo los pasos de [4].

sudo yum install openldap-clientssudo yum install nss-pam-ldapd

Editamos el archivo /etc/openldap/ldap.conf con la base de nuestro servidor y la direccióndelmismo. Además editamos el archivo /etc/nsswitch.confpara añadir la autenticación porldap

passwd: files ldap sssshadow: files ldap sssgroup: files ldap sss

Editamos también el fichero /etc/nslcd.conf con todos los parámetros de nuestro servidor.Levantamos el servicio nslcd y ya podemos ver los usuarios.

[javier@empleado1 ~]$ getent passwd

...nslcd:x:65:55:LDAP Client User:/:/sbin/nologinjscoba:x:10000:5000:Javier Saez:/home/jscoba:/bin/bashempleado1:x:10001:5000:Empleado Generico:/home/empleado1:/bin/bash

Ahora configuramos PAM para que acepte LDAP como mecanismo de autenticación en todaslas shell, damos permisos para que los usuarios puedan cambiar su contraseña y activamospam-mkhomedir.so para que se creen los directorios de usuario la primera vez que iniciensesión.

sudo authconfig-tui

12

Page 14: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 8: Configuración de PAM en CentOS 7

sudo authconfig --enablemkhomedir --update

Con esto ya podemos iniciar sesión a través de LDAP en CentOS 7

13

Page 15: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 9: CentOS 7 login mediante LDAP

Y también podemos iniciar sesión a través de la consola gráfica.

Figura 10: GDM3 iniciando sesión

14

Page 16: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 11: Sesión gráfica del usuario empleado1

4.3. empleado2. Windows XP

Para la configuración de LDAP en Windows vamos a usar un software de terceros debido a laescasa compatibilidad de Windows XP. El software a usar se llama pGina [3]

La descarga e instalación es la típica de cualquier programa de Windows

15

Page 17: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 12: Instalación de pGina y NET 4.0

Procedemos a configurar el software siguiendo la documentación [1].

16

Page 18: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 13: Configuración de LDAP con pGina

Y probamos que la configuración es correcta.

17

Page 19: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 14: Test del login con pGina

Ahora reiniciamos la máquina virtual y ya podemos iniciar sesión con nuestro usuario de LDAP.

18

Page 20: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 15: pGina logon

19

Page 21: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Figura 16: Sesión iniciada en Windows como empleado1

5. Conclusiones

En este documento hemos visto comomontar un servidor de autenticación usando el servidorOpenLDAP y la configuración de distintos clientes cubriendo un amplio abanico de casos deuso extrapolables a un entorno de producción real. Todas las tareas que hemos llevado a cabopueden ser automatizadas para instalar cientos de clientes de forma fácil e ”indolora”.

Además no se ha tenido en cuenta la seguridad de la conexión entre los clientes y el servidorLDAP, aunque comoya se ha explicado antes, por razones de simplicidadnohemos configuradola conexión cifrada con LDAP para evitar la gestión de los certificados. En todos los ficheros deconfiguración modificados hay opciones para determinar el certificado del servidor a utilizar.

Por último, cabe recordar la importancia de la redundancia en este tipo de servicios. Porello OpenLDAP dispone en la configuración del servidor de mecanismos para establecer laconfiguración de replicación deseada y que todos los clientes LDAP permiten configurar másde un servidor LDAP para dar soporte a esa redundancia.

20

Page 22: Servidor de autenticación: OpenLDAP · Índice 1. Introducciónalproblema 2 2. Diseñodellaboratoriovirtual 2 3. InstalacióndelservidorLDAP 3 4. Configuracióndeautenticaciónenlosclientes

Referencias

[1] Configure pGina Windows 7 OpenLDAP Authentication. Mar. de 2016. URL: http : / /premsubhashraolondhe.blogspot.com/2016/03/configure- pgina- windows- 7-openldap.html.

[2] Luiz Ernesto Pinheiro Malère. LDAP Linux HOWTO. Mar. de 2007. URL: https://www.tldp.org/HOWTO/LDAP-HOWTO/.

[3] David Wolff y Nate Yocom. pGina. URL: https://github.com/pgina/pgina.

[4] OpenLDAP - ArchWiki. URL: https://wiki.archlinux.org/index.php/OpenLDAP.

[5] OpenLDAP server - Ubuntu docs. URL: https://help.ubuntu.com/lts/serverguide/openldap-server.html.en.

21