Saltar a contenido

6.2. Integración de Linux en Active Directory

En este apartado integramos Linux en Active Directory para obtener autenticación y autorización centralizada usando el método recomendado en 2025: realmd + sssd. Se cubren Ubuntu 22.04 y 24.04, con pasos, verificación, uso de grupos de AD (sudo y control de acceso) y consejos de resolución de problemas.


## 6.2.1. Conceptos y requisitos

  • DNS: el servidor Linux debe resolver el dominio AD (ej.: empresa.local) y al DC.
  • Hora: sincronización NTP con el DC. Kerberos falla si hay desfases de >5 min.
  • Red: conectividad con LDAP/Kerberos/SMB (puertos 88, 389/636, 445, 464, etc.).
  • Cuenta: usuario con permisos para unir equipos al dominio (p. ej. Administrador).

## 6.2.2. Método moderno recomendado: realmd + sssd

realmd automatiza la detección del dominio y la unión vía Kerberos/LDAP. sssd gestiona cachés de identidad, NSS/PAM y el acceso. Es la vía más sencilla y limpia para Ubuntu 22.04/24.04.


## 6.2.3. Instalación de paquetes (Ubuntu 22.04/24.04)

bash sudo apt update sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

Verifica que el DNS apunta al DC y que resuelves el dominio:

bash resolvectl status | grep -E "DNS|Current DNS Server" || cat /etc/resolv.conf host dc1.empresa.local host empresa.local

Sincroniza hora (si procede):

bash timedatectl set-ntp true timedatectl


## 6.2.4. Descubrir el dominio y unir el equipo

Descubrir dominio:

bash realm discover empresa.local

Unir al dominio (te pedirá contraseña del usuario con permisos):

bash sudo realm join empresa.local -U Administrador

Comprobar unión:

bash realm list klist

Nota: si tu dominio usa mayúsculas en el REALM (ej. EMPRESA.LOCAL), realmd lo detecta automáticamente.


## 6.2.5. Configurar sssd y creación automática de home

Tras un join correcto, sssd queda habilitado. Para crear el directorio home en el primer login:

bash echo 'session required pam_mkhomedir.so skel=/etc/skel/ umask=0077' | sudo tee /etc/pam.d/common-session-local sudo systemctl restart sssd

Opcional: ajustes habituales en /etc/sssd/sssd.conf (si necesitas personalizar). Ejemplo mínimo:

```ini [sssd] services = nss, pam config_file_version = 2 domains = empresa.local

[domain/empresa.local] use_fully_qualified_names = False cache_credentials = True fallback_homedir = /home/%u ```

Aplica permisos y reinicia:

bash sudo chmod 600 /etc/sssd/sssd.conf sudo systemctl enable --now sssd


## 6.2.6. Inicio de sesión con usuarios del dominio

Pruebas rápidas de identidad:

bash id alumno1@empresa.local getent passwd alumno1 getent group "Domain Users"

Si use_fully_qualified_names = False, podrás referirte a usuarios como alumno1 en vez de alumno1@empresa.local.

Prueba de login (SSH o consola):

bash ssh alumno1@linux.empresa.local # o login local con TTY

Verifica que se crea /home/alumno1 y que el grupo primario coincide con AD.


## 6.2.7. Uso de grupos de AD en Linux

  • Sudo para un grupo de AD (administradores de Linux):

bash echo '%LinuxAdmins ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/ad-linux-admins sudo visudo -cf /etc/sudoers.d/ad-linux-admins

  • Restringir acceso a la máquina solo a un grupo AD (ej. LinuxUsers) con sssd:

Añade a /etc/sssd/sssd.conf en la sección del dominio:

ini access_provider = simple simple_allow_groups = LinuxUsers

Reinicia:

bash sudo systemctl restart sssd

  • Permisos en carpetas vía grupos AD (ejemplo):

bash sudo mkdir -p /srv/proyecto sudo chgrp "LinuxUsers" /srv/proyecto sudo chmod 2770 /srv/proyecto # setgid para heredar el grupo en nuevos ficheros

  • Mapear grupos AD a servicios (ej. acceso a SSH). En /etc/ssh/sshd_config puedes:

bash AllowGroups LinuxUsers LinuxAdmins

y recargar SSH:

bash sudo systemctl reload ssh


## 6.2.8. Verificación y diagnóstico básico

  • Estado de sssd y logs:

bash systemctl status sssd sudo journalctl -u sssd -b

  • Comprobación Kerberos/DNS:

bash klist host _ldap._tcp.empresa.local host dc1.empresa.local

  • Problemas comunes:
  • Hora desincronizada → configurar NTP y repetir realm join si falló.
  • DNS no apunta al DC → ajustar resolv.conf/NetworkManager.
  • Usuario sin permisos de unión → usar cuenta con privilegios delegados o Administrador.
  • Cambios en sssd.conf no aplican → confirmar permisos 600 y reiniciar sssd.

## 6.2.9. Resumen

  • Método recomendado: realmd + sssd por simplicidad y soporte.
  • Ubuntu 22.04/24.04: instalar paquetes, realm discover y realm join.
  • Acceso con usuarios/grupos de AD: sudo, control de acceso (simple_allow_groups) y permisos en carpetas.
  • Verifica con id, getent, klist y logs de sssd.