Tarea opcional: Configuración de un servidor de autenticación - INGENIERÍA DE SERVIDORES - Javier Sáez
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
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
Í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
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
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
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
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
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
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
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
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