Cómo unir Linux a Active Directory (Dominios de Windows)

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;
unir cliente linux a dominio active directory
 
En este artículo (Autor: Daniel Grasa):
 

 

 

 

 

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

nmtui modificar conexion
 

 

En la siguiente pantalla nos aparecerá una lista con todas las interfaces que podemos modificar, en este caso solo tenemos una:

nmtui modificar interfaz

 

 

Nos moveremos con el tabulador hasta seleccionar la opción “Editar” :

nmtui editar conexion

 

 

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 :

nmtui modificar dns

 

 

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:

realm nuevos hosts en dominio
 

 

  • 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.

daniel grasa-operador helpdesk