Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
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
Í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
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
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
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
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
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
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
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
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 guardadasen 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í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
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 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
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 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
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