Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez

Página creada Sebastian Planeilles
 
SEGUIR LEYENDO
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
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
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
Í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                                              7
   4.1. shellserver. Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    7
   4.2. empleado1. CentOS 7 con entorno gráfico . . . . . . . . . . . . . . . . . . . . .     12
   4.3. empleado2. Windows XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   15

5. Conclusiones                                                                               20

                                               1
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
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 OpenLDAP
como base de datos donde guardar información de los usuarios y su uso como servidor de
autenticación. Para probar esta configuración vamos a configurar 3 sistemas diferentes, cada
uno orientado a un servicio distinto: uno es un servidor de shell remota, otro es un puesto gráfico
Linux 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. Aunque
podrían ser equipos reales vamos a montarlo todo como una infraestructura virtual bajo
VirtualBox. Los equipos se conectan mediante una red NAT. En este esquema de conexiones
todos los equipos pueden verse entre sí y pueden acceder a Internet. Además, el servidor
ldapserver va a tener una segunda interfaz de red de tipo host-only para facilitar las
conexiones host-máquina virtual. El resto de equipos (menos Windows), se configurarán a
través de una conexión ssh. El esquema de máquinas virtuales y sus conexiones quedan de la
siguiente manera:

                         Host-Only
                       192.168.56.70

                                                         Host VirtualBox

                                                             10.0.3.1
                                   10.0.3.4
                                                                                    10.0.3.8
                                                              Red
             Servidor LDAP                                    NAT
               ldapserver                                                                               Puesto shell remota
                                                                                                           shellserver

                                                10.0.3.100                 10.0.3.101

                                       Puesto CentOS 7
                                         empleado1                                      Puesto Windows XP
                                                                                            empleado2

                                       Figura 1: Diagrama de conexiones

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

                                                              2
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
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áquina
ldapserver siguiendo las instrucciones encontradas en [5] y [4]. Para simplificar la instalación
vamos a usar LDAP sin un túnel TLS para evitar la generación y configuración de los certificados
SSL. En un entorno no seguro o un entorno de producción esto es indispensable. Como LDAP es
un servicio de directorio necesitamos un dominio base del que cuelgan todas las entradas del
directorio. Nuestra raíz va a ser miempresa.com.

Procedemos a la instalación del servidor ldap.

sudo apt install slapd
sudo dpkg-reconfigure slapd

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

LDAP usa un sistema de configuración dentro del propio LDAP como una base de datos distinta a

                                                 3
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
la que usamos. Esto se hace para poder cambiar la configuración de LDAP sin tener que reiniciar
el servicio. Para poder editar la configuración hacemos uso de las herramientas de ldap-utils.

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

root@ldapserver:/etc/ldap/slapd.d# sudo ldapsearch -Q -LLL -Y EXTERNAL -H
ldapi:/// -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=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: miempresa
dc: miempresa

dn: cn=admin,dc=miempresa,dc=com
objectClass: simpleSecurityObject

                                              4
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
objectClass: organizationalRole
cn: admin
description: LDAP administrator

Ahora mismo en nuestro directorio solo existe el elemento raiz y el elemento administrador que
depende de él.

Vamos a crear unos datos iniciales que nos servirán para poder autenticar sistemas UNIX y un
par de usuarios de prueba. Estos datos se podrían introducir atributo a atributo mediante el
comando 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=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=miempresa,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=empleados,ou=Groups,dc=miempresa,dc=com
objectClass: posixGroup
cn: empleados
gidNumber: 5000

dn: uid=jscoba,ou=People,dc=miempresa,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jscoba
sn: Saez
givenName: Javier
cn: Javier Saez
displayName: Javier Saez
uidNumber: 10000
gidNumber: 5000
userPassword: isepass
loginShell: /bin/bash
homeDirectory: /home/jscoba

                                                 5
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
dn: uid=empleado1,ou=People,dc=miempresa,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: empleado1
sn: Generico
givenName: Empleado
cn: Empleado Generico
displayName: Empleado sin nombre
uidNumber: 10001
gidNumber: 5000
userPassword: isepass
loginShell: /bin/bash
homeDirectory: /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 en
LDAP ejecutamos

~# ldapadd -x -D cn=admin,dc=miempresa,dc=com -W -f initial_users.ldif
Enter 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 del
servidor.

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

~# lsldap -u
Warning : using command-line passwords, ldapscripts may not be safe
dn: uid=jscoba,ou=People,dc=miempresa,dc=com

                                            6
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jscoba
givenName: Javier
uidNumber: 10000
gidNumber: 5000
userPassword:: aXNlcGFzcw==
loginShell: /bin/bash
homeDirectory: /home/jscoba
sn: Saez
cn: Javier Saez
displayName: Javier Saez

dn: uid=empleado1,ou=People,dc=miempresa,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: empleado1
sn: Generico
givenName: Empleado
cn: Empleado Generico
displayName: Empleado sin nombre
uidNumber: 10001
gidNumber: 5000
userPassword:: aXNlcGFzcw==
loginShell: /bin/bash
homeDirectory: /home/empleado1

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

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

4.1. shellserver. Ubuntu

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

                                               7
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
Nos logueamos con el usuario local que se creó durante la instalación y procedemos a ejecutar
los siguiente comandos

sudo apt install libnss-ldap
sudo auth-client-config -t nss -p lac_ldap
sudo pam-auth-update

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

                            Figura 3: Dirección del servidor LDAP

                                             8
Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
Figura 4: Base del directorio LDAP

                9
Figura 5: Entidad administradora del directorio LDAP

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

                                            10
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
tuviéramos un servidor de archivos del que montamos el home de los usuarios esto no sería
necesario.

4.2.   empleado1. CentOS 7 con entorno gráfico

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

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

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

passwd:        files ldap sss
shadow:        files ldap sss
group:         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/nologin
jscoba:x:10000:5000:Javier Saez:/home/jscoba:/bin/bash
empleado1:x:10001:5000:Empleado Generico:/home/empleado1:/bin/bash

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

sudo authconfig-tui

                                              12
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
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
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 la
escasa 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
Figura 12: Instalación de pGina y NET 4.0

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

                                             16
Figura 13: Configuración de LDAP con pGina

Y probamos que la configuración es correcta.

                                               17
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
Figura 15: pGina logon

         19
Figura 16: Sesión iniciada en Windows como empleado1

5. Conclusiones

En este documento hemos visto como montar un servidor de autenticación usando el servidor
OpenLDAP y la configuración de distintos clientes cubriendo un amplio abanico de casos de
uso extrapolables a un entorno de producción real. Todas las tareas que hemos llevado a cabo
pueden 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 servidor
LDAP, aunque como ya se ha explicado antes, por razones de simplicidad no hemos configurado
la conexión cifrada con LDAP para evitar la gestión de los certificados. En todos los ficheros de
configuració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. Por
ello OpenLDAP dispone en la configuración del servidor de mecanismos para establecer la
configuración de replicación deseada y que todos los clientes LDAP permiten configurar más
de un servidor LDAP para dar soporte a esa redundancia.

                                               20
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
También puede leer