Vamos a ver cómo unir Linux a Active Directory utilizando Realmd.
Realmd permite unir Linux a Active Directory, es decir que permite a clientes linux realizar la integración con un dominio de Active Directory y utilizar ciertos recursos de Active Directory como la autenticación de usuarios, identidades y DNS. Además de servicios de sudo que veremos más adelante.
En este caso vamos a trabajar con Red Hat /CentOS;
En este artículo (Autor: Daniel Grasa):
- Añadir dominio FQDN al nombre de host
- Establecer dominio de búsqueda y servidores DNS
- Instalar Samba y realm
- Inspeccionar el dominio al que vamos a unirnos
- Añadimos el equipo al dominio de AD
- Comprobamos que estamos en el dominio
- Reiniciamos el agente sssd
- Habilitamos el agente de inicio de sesión
- Habilitaremos la función “generar directorios” en sssd
- Revisamos el status del agente sssd (que inicie durante el arranque)
- EN DEBIAN:
- Iniciamos sesión:
- Modificar /etc/sssd/sssd.conf
- Otras modificaciones interesantes en la directiva de sssd.conf
realm une un cliente linux a un servidor Active Directory, así que primero tenemos que crear su nombre netbios del equipo con el FQDN del dominio de AD (Active Directory);
Editamos el fichero /etc/hostname y /etc/hosts
-
Primero añadimos el dominio FQDN de Active Directory al nombre de host:
[root@MeesekCentOS8 ~]# cat /etc/hostname CentOS8AD.lagunica.local [root@MeesekCentOS8 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 CentOS8AD.lagunica.local ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
-
Después tenemos que establecer el dominio de busqueda y los servidores DNS que deberán de apuntar al dominio de Active Directory.
Para ello utilizaremos la herramienta nmtui (Network manager TIU), al iniciarlo lo primero que nos encontraremos es una lista con las opciones que nos permite realizar el programa, en este caso vamos a modificar una interfaz, por lo que seleccionaremos la primera opción
En la siguiente pantalla nos aparecerá una lista con todas las interfaces que podemos modificar, en este caso solo tenemos una:
Nos moveremos con el tabulador hasta seleccionar la opción “Editar” :
Ahora volveremos a movernos hasta el apartado de servidores DNS donde estableceremos nuestro servidor de Active Directory, y nos volveremos a dirigir al apartado de “Busqueda de dominios” en el que pulsaremos el botón “Añadir” para que nos genere el campo en el que añadiremos nuestro dominio, en este caso lagunica.local :
Una vez aplicados los cambios comprobaremos que el fichero “/etc/resolv.conf” se ha actualizado con la nueva información
[root@CentOS8AD ~]# cat /etc/resolv.conf # Generated by NetworkManager search lagunica.local nameserver 192.168.0.210 nameserver 8.8.8.8 nameserver 192.168.0.253 |
Una vez hecho los primeros pasos para unir el equipo linux a dominio Windows, procederemos a reiniciar el cliente Linux para aplicar los cambios del nombre de equipo
-
Reiniciamos el cliente Linux
-
Una vez hecho tenemos que instalar samba y realm, el programa que nos facilitará mucho el trabajo
dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation authselect-compat |
[root@CentOS8AD ~]# dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation authselect-compat Última comprobación de caducidad de metadatos hecha hace 0:16:02, el lun 22 mar 2021 16:36:43 EDT. El paquete realmd-0.16.3-19.el8.x86_64 ya está instalado. El paquete sssd-2.3.0-9.el8.x86_64 ya está instalado. El paquete oddjob-0.34.5-3.el8.x86_64 ya está instalado. El paquete oddjob-mkhomedir-0.34.5-3.el8.x86_64 ya está instalado. El paquete adcli-0.8.2-7.el8.x86_64 ya está instalado. El paquete samba-common-4.12.3-12.el8.3.noarch ya está instalado. El paquete authselect-compat-1.2.1-2.el8.x86_64 ya está instalado. Dependencias resueltas. ================================================================================================================================================================================================================= Paquete Arquitectura Versión Repositorio Tam. ================================================================================================================================================================================================================= Instalando: krb5-workstation x86_64 1.18.2-5.el8 baseos 955 k samba-common-tools x86_64 4.12.3-12.el8.3 baseos 484 k Instalando dependencias: libkadm5 x86_64 1.18.2-5.el8 baseos 185 k samba-libs x86_64 4.12.3-12.el8.3 baseos 188 k Resumen de la transacción ================================================================================================================================================================================================================= Instalar 4 Paquetes Tamaño total de la descarga: 1.8 M Tamaño instalado: 5.0 M ¿Está de acuerdo [s/N]?: |
-
Una vez hecho esto vamos a inspeccionar el dominio al que vamos a unirnos.
En ocasiones el nombre completo de dominio no funciona y tenemos que utilizar nombre de NETBIOS o viceversa. En este caso vemos que funciona con el nombre completo del dominio, y no con el nombre NETBIOS:
[root@CentOS8AD ~]# realm discover lagunica.local lagunica.local type: kerberos realm-name: LAGUNICA.LOCAL domain-name: lagunica.local configured: no server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools |
Si no funciona mediante resolución de nombre DNS (el paso previo) , siempre se puede probar a resolver por el nombre de netbios.
En este caso sería:
[root@CentOS8AD ~]# realm discover LAGUNICA |
Una vez comprobado que tenemos comunicación con el mismo y que el programa lo reconoce correctamente procedemos a unirlo con realm
-
Ahora vamos a proceder a añadir el equipo al dominio de Active Directory con realm :
[root@CentOS8AD ~]# realm join -U Administrador lagunica.local Contraseña para Administrador: [root@CentOS8AD ~]# |
el comando join de realm permite unir el equipo al dominio indicado.
-U Especifica el usuario a utilizar para unir el dominio
Podemos revisar la lista de comandos de realm desde la documentación oficial de Red Hat.
-
Comprobamos que estamos en el dominio :
[root@CentOS8AD ~]# realm list lagunica.local type: kerberos realm-name: LAGUNICA.LOCAL domain-name: lagunica.local configured: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %[email protected] login-policy: allow-realm-logins |
Si nos dirigimos al dominio veremos también en la lista:
-
Reiniciamos el servicio del agente de inicio de sesión ssssd
[root@CentOS8AD ~]# systemctl restart sssd [root@CentOS8AD ~]# systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled) Active: active (running) (thawing) since Mon 2021-03-22 17:09:43 EDT; 5s ago Main PID: 25552 (sssd) Tasks: 5 (limit: 23663) Memory: 41.0M CGroup: /system.slice/sssd.service ├─25552 /usr/sbin/sssd -i --logger=files ├─25554 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files ├─25555 /usr/libexec/sssd/sssd_be --domain lagunica.local --uid 0 --gid 0 --logger=files ├─25556 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files └─25557 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files mar 22 17:09:42 CentOS8AD.lagunica.local systemd[1]: sssd.service: Succeeded. mar 22 17:09:42 CentOS8AD.lagunica.local systemd[1]: Stopped System Security Services Daemon. mar 22 17:09:42 CentOS8AD.lagunica.local systemd[1]: Starting System Security Services Daemon... mar 22 17:09:42 CentOS8AD.lagunica.local sssd[25552]: Starting up mar 22 17:09:42 CentOS8AD.lagunica.local be[lagunica.local][25555]: Starting up mar 22 17:09:42 CentOS8AD.lagunica.local be[implicit_files][25554]: Starting up mar 22 17:09:43 CentOS8AD.lagunica.local pam[25557]: Starting up mar 22 17:09:43 CentOS8AD.lagunica.local nss[25556]: Starting up mar 22 17:09:43 CentOS8AD.lagunica.local systemd[1]: Started System Security Services Daemon. [root@CentOS8AD ~]# |
-
Habilitamos el agente de inicio de sesión:
[root@CentOS8AD ~]# sudo authselect select sssd with-mkhomedir Perfil "sssd" fue seleccionado. Los siguientes mapas nsswitch están sobrescritos por el perfil: - passwd - group - netgroup - automount - services Make sure that SSSD service is configured and enabled. See SSSD documentation for more information. |
-
Para que ssd pueda generar los directorios home del usuario AD, habilitaremos la función mkhomedir en sssd
[root@CentOS8AD ~]# sudo authselect select sssd with-mkhomedir Perfil "sssd" fue seleccionado. Los siguientes mapas nsswitch están sobrescritos por el perfil: - passwd - group - netgroup - automount - services |
-
Nos aseguraremos que el agente SSSD inicia durante el arranque
[ylittner@CentOS8AD ~]$ systemctl status sssd ● sssd.service - System Security Services Daemon Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-03-22 18:08:53 EDT; 7min ago Main PID: 733 (sssd) Tasks: 5 (limit: 23663) Memory: 66.6M CGroup: /system.slice/sssd.service ├─733 /usr/sbin/sssd -i --logger=files ├─753 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files ├─754 /usr/libexec/sssd/sssd_be --domain lagunica.local --uid 0 --gid 0 --logger=files ├─759 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files └─760 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files mar 22 18:08:52 CentOS8AD.lagunica.local be[lagunica.local][754]: Starting up mar 22 18:08:53 CentOS8AD.lagunica.local nss[759]: Starting up mar 22 18:08:53 CentOS8AD.lagunica.local pam[760]: Starting up mar 22 18:08:53 CentOS8AD.lagunica.local systemd[1]: Started System Security Services Daemon. mar 22 18:08:57 CentOS8AD.lagunica.local be[lagunica.local][754]: Backend is online mar 22 18:08:58 CentOS8AD.lagunica.local adcli[1137]: GSSAPI client step [ylittner@CentOS8AD ~]$ Make sure that SSSD service is configured and enabled. See SSSD documentation for more information. - with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module is present and oddjobd service is enabled and active - systemctl enable --now oddjobd.service Make sure that SSSD service is configured and enabled. See SSSD documentation for more information. |
-
Nos aseguramos que la función arranca el modulo oddjobd.service, para que funcione mkdirhome:
[root@CentOS8AD ~]# systemctl enable --now oddjobd.service [ylittner@CentOS8AD ~]$ systemctl status oddjobd.service ● oddjobd.service - privileged operations for unprivileged applications Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2021-03-22 18:08:54 EDT; 8min ago Main PID: 777 (oddjobd) Tasks: 1 (limit: 23663) Memory: 1.4M CGroup: /system.slice/oddjobd.service └─777 /usr/sbin/oddjobd -n -p /var/run/oddjobd.pid -t 300 mar 22 18:08:54 CentOS8AD.lagunica.local systemd[1]: Started privileged operations for unprivileged applications. [ylittner@CentOS8AD ~]$ |
- EN DEBIAN:
En este caso tenemos que añadir la función mkdirome al pam.auth
Para poder iniciar sesión deberemos de utilizar el nombre de dominio FQDN para iniciar sesión de la siguiente forma:
–> Iniciar sesión usando el nombre de dominio:
PS C:\Users\daniwxp11> ssh lagunica.local\[email protected] lagunica.local\[email protected]'s password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Mon Mar 22 19:38:38 2021 from 192.168.0.26 |
–> Iniciar sesión usando el nombre NETBIOS:
PS C:\Users\daniwxp11> ssh lagunica.local\[email protected] lagunica.local\[email protected]'s password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Mon Mar 22 19:38:38 2021 from 192.168.0.26 |
-
Desde el fichero “/etc/sssd/sssd.conf” podemos cambiar ciertos comportamientos de la integración como si hace falta usar FQDN, como se generan los directorios home,etc…
[root@CentOS8AD ~]# cat /etc/sssd/sssd.conf [sssd] domains = lagunica.local config_file_version = 2 services = nss, pam [domain/lagunica.local] ad_domain = lagunica.local krb5_realm = LAGUNICA.LOCAL realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad |
-
Vamos a cambiar la obligatoriedad del uso de FQDN , para ello cambiaremos el booleano por false:
use_fully_qualified_names = False |
- Después de cada cambio en el agente deberemos de reiniciar el servicio sssd para que los cambios surjan efecto
- Desde el cliente podemos limitar qué usuarios o grupos pueden entrar a la maquina
Vamos a permitir que solo paco acceda a la maquina (Paco pertenece al “grupo6“):
[root@CentOS8AD ~]# realm permit [email protected] [root@CentOS8AD ~]# realm permit -g grupo6 |
Mostramos cómo ha quedado la configuración del fichero sssd.conf:
[root@CentOS8AD ~]# cat /etc/sssd/sssd.conf [sssd] domains = lagunica.local config_file_version = 2 services = nss, pam [domain/lagunica.local] ad_domain = lagunica.local krb5_realm = LAGUNICA.LOCAL realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = simple simple_allow_users = paco simple_allow_groups = grupo6 |
- Como vemos, todo cambio con el realm, afecta al sssd.conf, y por ello deberemos reiniciar el servicio para aplicar cambios
Otras modificaciones interesantes en la directiva de sssd.conf
–> Cómo permitir grupos al sudoers
para ello tenemos que poner
Grupos %[email protected] Usuarios paco.laguna.local |
–> Cambiar el shell de los usuarios de AD
Para ello modificaremos el fichero “/etc/sssd/sss.conf” y cambiaremos la siguiente linea
default_shell = /bin/sh |
Recordad que después de cada cambio hay que reiniciar el servicio sssd
Y ya está, acabamos de ver cómo unir linux a active directory; por medio de realmd podremos realizar la unión de linux con un dominio Windows, trabajando también con el agente sssd y diversas opciones
AUTORÍA DEL ARTÍCULO
Este artículo ha sido creado y redactado por Daniel Grasa, un Operador Helpdesk con muchas ganas de aprender y mejorar en el sector de las Tecnologías de la Información y los Sistemas Informáticos.
Desde El Taller del Bit valoramos mucho su buen hacer, su esfuerzo, su ilusión y su constante estudio y práctica de todo lo que cae en sus manos (y en su teclado 😉 ) para mejorar sus capacidades como profesional especializado en Sistemas día a día.