Configuración automatizada de SSH con Active Directory en Debian/Ubuntu (realmd + SSSD)

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Este script automatiza la unión de un sistema Debian/Ubuntu a un dominio de Active Directory y habilita el inicio de sesión por SSH con cuentas del dominio utilizando realmd y sssd. Realiza la instalación de paquetes necesarios (realmd, sssd, adcli, etc.), une el equipo al dominio, configura PAM para la creación automática de home directories y ajusta sshd para permitir el acceso de usuarios/grupos del dominio. Está pensado para entornos donde se requiere control centralizado de identidades y políticas, manteniendo la autenticación delegada en AD.

Requisitos previos

  • DNS del equipo resolviendo correctamente el dominio AD (SRV de Kerberos).
  • Hora sincronizada (NTP).
  • Usuario de AD con permisos para unir equipos al dominio.
  • Ejecución del script como root.
  • Variables a personalizar en el script: DOMINIO y USUARIO_AD.

Qué hace el script

  • Instala y verifica dependencias (realmd, sssd, libnss-sss, libpam-sss, adcli, samba-common, oddjob, oddjob-mkhomedir, packagekit, krb5-user).
  • Descubre y une el equipo al dominio (realm discover, realm join).
  • Configura PAM para crear directorios home automáticamente (pam_mkhomedir).
  • Ajusta sshd_config para usar PAM y permitir acceso a grupos del dominio.
  • Reinicia servicios (sssd y ssh) y valida la unión con realm list.

Uso básico

  1. Edita DOMINIO (p. ej., midominio.local) y USUARIO_AD (p. ej., Administrador).
  2. Ejecuta el script como root.
  3. Verifica con realm list e intenta id "DOMINIO\\usuario" y acceso SSH.
#!/bin/bash

set -e

DOMINIO="midominio.local"
USUARIO_AD="Administrador"
REALM="${DOMINIO^^}"  # convierte a mayúsculas
HOSTNAME_ACTUAL=$(hostname -f)

echo "[INFO] Instalando paquetes necesarios..."
apt update
apt install -y realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common oddjob oddjob-mkhomedir packagekit krb5-user

echo "[INFO] Comprobando resolución DNS para el dominio..."
if ! host -t SRV _kerberos._tcp.${DOMINIO} > /dev/null; then
    echo "[ERROR] No se pudo resolver el dominio Kerberos (${DOMINIO}). Revisa la configuración DNS."
    exit 1
fi

echo "[INFO] Uniendo el sistema al dominio AD (${DOMINIO})..."
realm discover "${DOMINIO}"
echo "[INFO] Se te pedirá la contraseña del usuario AD '${USUARIO_AD}'..."
realm join --user="${USUARIO_AD}" "${DOMINIO}"

echo "[INFO] Verificando unión al dominio..."
realm list

echo "[INFO] Configurando SSSD y PAM para inicio de sesión con usuarios del dominio..."
authselect select sssd --force || true  # en Ubuntu no existe, pero en RHEL sí

# Asegurar que se permite el inicio de sesión de usuarios del dominio
realm permit --all

echo "[INFO] Configurando creación automática de directorios home..."
pam_file="/etc/pam.d/common-session"
if ! grep -q "pam_mkhomedir.so" "$pam_file"; then
    echo "session required pam_mkhomedir.so skel=/etc/skel umask=0077" >> "$pam_file"
fi

echo "[INFO] Configurando SSH para permitir usuarios del dominio..."
sshd_config="/etc/ssh/sshd_config"

# Habilitar login por nombre completo (DOMINIO\\usuario)
if ! grep -q "^UsePAM yes" "$sshd_config"; then
    echo "UsePAM yes" >> "$sshd_config"
fi

# Asegurar que se permite el login de usuarios del dominio
if ! grep -q "^AllowGroups" "$sshd_config"; then
    echo "AllowGroups domain^users@${REALM}" >> "$sshd_config"
fi

echo "[INFO] Reiniciando servicios..."
systemctl restart sssd
systemctl restart ssh

echo "[INFO] Configuración completada. Prueba a conectarte vía SSH con un usuario del dominio:"
echo "  ssh 'DOMINIO\\usuario@${HOSTNAME_ACTUAL}'"

FUNCIONALIDAD

Este script:

  1. Instala los paquetes necesarios (sssd, realmd, adcli, samba-common, oddjob, etc.).
  2. Configura realmd para unir el sistema a un dominio AD.
  3. Configura sssd, PAM, y SSH para permitir el login de usuarios AD.
  4. Permite acceso SSH a usuarios del dominio.
  5. Crea home directories automáticos para usuarios AD.

REQUISITOS

  • El sistema debe tener resolución DNS funcional hacia el dominio AD.
  • El reloj debe estar sincronizado (usa NTP).
  • Debes ejecutar este script como root.
  • Debes conocer:
    • El nombre del dominio AD (por ejemplo: midominio.local)
    • Un usuario AD con permisos para unir el equipo al dominio.

PRUEBA POSTERIOR

Una vez ejecutado el script, prueba lo siguiente:

id "DOMINIO\\usuario"

Y para conectarte por SSH:

ssh 'DOMINIO\\usuario'@ip_del_servidor

Compartir:

Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.