302.4 Membresía de Dominio
Objetivos del subtema
Este subtema cubre la configuración de un servidor Linux como miembro de un dominio Active Directory, incluyendo los métodos de unión (net ads, realm), integración con SSSD y winbind, configuración de Kerberos, PAM, NSS y los backends idmap.
Unión al dominio con net ads join
Requisitos previos
- DNS configurado apuntando al controlador de dominio AD
- Kerberos configurado correctamente (
/etc/krb5.conf) - Paquetes Samba instalados (samba, winbind, libpam-winbind, libnss-winbind)
- Sincronización de tiempo con el DC (NTP)
Configuración de /etc/krb5.conf
[libdefaults]
default_realm = EMPRESA.COM
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
[realms]
EMPRESA.COM = {
kdc = dc.empresa.com
admin_server = dc.empresa.com
}
[domain_realm]
.empresa.com = EMPRESA.COM
empresa.com = EMPRESA.COMConfiguración de smb.conf para servidor miembro
[global]
workgroup = EMPRESA
realm = EMPRESA.COM
security = ads
server role = member server
# Kerberos
kerberos method = secrets and keytab
dedicated keytab file = /etc/krb5.keytab
# Winbind
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
winbind offline logon = yes
# Mapeo de IDs
idmap config * : backend = tdb
idmap config * : range = 10000-19999
idmap config EMPRESA : backend = rid
idmap config EMPRESA : range = 20000-99999
# Opciones de mapeo de nombres
template shell = /bin/bash
template homedir = /home/%UProceso de unión al dominio
# 1. Obtener ticket Kerberos del administrador
kinit administrator@EMPRESA.COM
# 2. Unirse al dominio
net ads join -U administrator
# 3. Verificar la unión
net ads testjoin
# 4. Iniciar servicios
systemctl restart smbd nmbd winbindd
# 5. Verificar que funciona
wbinfo -t
wbinfo -u
wbinfo -g
getent passwd
getent groupPara el examen:
net ads joines el comando principal para unir un servidor Linux a un dominio AD. Requiere credenciales de administrador del dominio y Kerberos funcional.
Unión al dominio con realm join
realm (de SSSD/realmd) es una alternativa moderna a net ads join:
# Descubrir el dominio
realm discover empresa.com
# Unirse al dominio
realm join empresa.com -U administrator
# Verificar estado
realm list
# Permitir acceso a ciertos usuarios
realm permit usuario1@empresa.com usuario2@empresa.com
# Permitir acceso a todos
realm permit --all
# Denegar acceso a todos
realm deny --all
# Abandonar el dominio
realm leave empresa.comVentajas de realm
- Configura automáticamente SSSD, Kerberos, PAM y NSS
- Interfaz más simple e integrada
- Descubrimiento automático del dominio vía DNS
- Gestión de permisos de acceso por usuario/grupo
SSSD para integración con AD
SSSD (System Security Services Daemon) es una alternativa a winbind para integración con AD:
Configuración de /etc/sssd/sssd.conf
[sssd]
domains = empresa.com
config_file_version = 2
services = nss, pam
[domain/empresa.com]
ad_domain = empresa.com
krb5_realm = EMPRESA.COM
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
access_provider = ad
auth_provider = ad
chpass_provider = ad
ldap_id_mapping = True
# Mapeo de atributos POSIX
# ldap_id_mapping = False # Si se usan atributos RFC2307
# Directorio home
fallback_homedir = /home/%u@%d
override_homedir = /home/%u
# Shell predeterminado
default_shell = /bin/bash
# Filtro de acceso (opcional)
ad_access_filter = memberOf=CN=LinuxUsers,OU=Groups,DC=empresa,DC=com
# Opciones de caché
entry_cache_timeout = 5400SSSD vs Winbind
| Característica | SSSD | Winbind |
|---|---|---|
| Integración AD | Nativa (id_provider=ad) | Vía Samba |
| Caché offline | Sí (robusto) | Sí (winbind offline logon) |
| Compartir archivos SMB | No (requiere Samba separado) | Integrado con Samba |
| Mapeo de IDs | ldap_id_mapping o RFC2307 | Múltiples backends idmap |
| GPO para acceso | Sí (ad_gpo_access_control) | No |
| Configuración | sssd.conf | smb.conf |
| Dependencias | sssd, realmd | samba-winbind |
Para el examen: SSSD es preferido para autenticación de usuarios en estaciones de trabajo Linux. Winbind es necesario cuando el servidor también comparte archivos vía Samba (SMB).
Winbind para integración con AD
Configuración de NSS
# /etc/nsswitch.conf
passwd: files winbind
group: files winbind
shadow: files winbindConfiguración de PAM
# Configurar PAM para winbind (en Debian/Ubuntu)
pam-auth-update --enable winbind
# O manualmente en /etc/pam.d/common-auth:
auth sufficient pam_winbind.so
auth required pam_unix.so try_first_pass
# /etc/pam.d/common-account:
account sufficient pam_winbind.so
account required pam_unix.so
# /etc/pam.d/common-session:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session sufficient pam_winbind.so
session required pam_unix.soOpciones importantes de PAM winbind
# /etc/security/pam_winbind.conf
[global]
krb5_auth = yes
krb5_ccache_type = FILE
cached_login = yes
require_membership_of = S-1-5-21-xxx-xxx-xxx-1001Verificación de winbind
# Verificar que winbindd responde
wbinfo -p
# Verificar confianza del dominio
wbinfo -t
# Listar usuarios del dominio
wbinfo -u
# Listar grupos del dominio
wbinfo -g
# Probar autenticación
wbinfo -a "EMPRESA\\pedro%contraseña"
# Verificar mapeo de usuario
wbinfo --name-to-sid "EMPRESA\\pedro"
wbinfo --sid-to-uid S-1-5-21-...
# Verificar integración NSS
getent passwd pedro
getent group "Domain Users"
id pedroGestión de tickets Kerberos
Operaciones con tickets
# Obtener un TGT (Ticket Granting Ticket)
kinit pedro@EMPRESA.COM
# Obtener TGT con contraseña interactiva
kinit pedro
# Listar tickets activos
klist
# Listar tickets con detalles
klist -e
# Destruir todos los tickets
kdestroy
# Renovar un ticket
kinit -R
# Obtener ticket para un servicio específico
kvno cifs/servidor.empresa.comEjemplo de salida de klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: pedro@EMPRESA.COM
Valid starting Expires Service principal
05/26/26 10:00:00 05/26/26 20:00:00 krbtgt/EMPRESA.COM@EMPRESA.COM
renew until 06/02/26 10:00:00
05/26/26 10:01:00 05/26/26 20:00:00 cifs/dc.empresa.com@EMPRESA.COM
Para el examen: Conocer
kinit(obtener ticket),klist(listar tickets) ykdestroy(destruir tickets). El ticket TGT tiene una validez predeterminada de 10 horas.
Backends idmap en detalle
idmap_rid
[global]
idmap config EMPRESA : backend = rid
idmap config EMPRESA : range = 20000-99999- Calcula UID/GID = base_range + RID
- Determinista: mismo resultado en todos los servidores con misma configuración
- No requiere datos adicionales en AD
- Problema: diferentes dominios pueden tener RIDs que colisionen
idmap_ad
[global]
idmap config EMPRESA : backend = ad
idmap config EMPRESA : range = 20000-99999
idmap config EMPRESA : schema_mode = rfc2307- Lee uidNumber/gidNumber de los atributos RFC2307 en AD
- Permite control preciso de los IDs asignados
- Requiere que los atributos estén configurados en cada objeto
- Consistente entre servidores porque los datos están centralizados en AD
idmap_autorid
[global]
idmap config * : backend = autorid
idmap config * : range = 10000-999999
idmap config * : rangesize = 100000- Asigna automáticamente rangos de IDs a cada dominio
- Simplifica la configuración en entornos multidominio
- No requiere configuración por dominio
- Los IDs pueden variar entre servidores si el orden de descubrimiento cambia
idmap_tdb
[global]
idmap config * : backend = tdb
idmap config * : range = 10000-19999- Backend general para dominios no configurados específicamente
- Almacena mapeos en base de datos TDB local
- Los IDs pueden ser diferentes entre servidores
- Útil como backend comodín (
*)
Configuración de /etc/nsswitch.conf
# Para winbind
passwd: files winbind
group: files winbind
shadow: files
# Para SSSD
passwd: files sss
group: files sss
shadow: files sss
sudoers: files sss
# Verificar que funciona
getent passwd usuario_dominio
getent group "Domain Users"Creación automática de directorios home
# Con PAM mkhomedir
# En /etc/pam.d/common-session:
session required pam_mkhomedir.so skel=/etc/skel umask=0077
# Con SSSD (en sssd.conf):
[domain/empresa.com]
override_homedir = /home/%u
# Con Samba (en smb.conf):
template homedir = /home/%U
# Crear el directorio manualmente si es necesario
mkhomedir_helper usuarioFlujo completo de unión al dominio
# Paso 1: Instalar paquetes
apt install samba winbind libpam-winbind libnss-winbind krb5-user
# Paso 2: Configurar /etc/krb5.conf
# Paso 3: Configurar /etc/samba/smb.conf
# Paso 4: Configurar /etc/nsswitch.conf
# Paso 5: Probar Kerberos
kinit administrator@EMPRESA.COM
klist
# Paso 6: Unirse al dominio
net ads join -U administrator
# Paso 7: Iniciar servicios
systemctl restart smbd nmbd winbindd
systemctl enable smbd nmbd winbindd
# Paso 8: Verificar
net ads testjoin
wbinfo -t
wbinfo -u
getent passwd usuario_dominio
id usuario_dominioResumen de conceptos clave
net ads joinyrealm joinson los dos métodos principales de unión a AD/etc/krb5.confdebe configurarse con el realm correcto (MAYÚSCULAS)- SSSD es preferido para autenticación de estaciones; winbind cuando se comparte archivos SMB
/etc/nsswitch.confdebe incluirwinbindossspara resolver usuarios/grupos de AD- PAM se configura con
pam_winbind.soopam_sss.sopara autenticación AD kinit/klist/kdestroygestionan tickets Kerberos- Backends idmap:
rid(algorítmico),ad(RFC2307),autorid(automático),tdb(local) - El backend
*es el comodín para dominios no configurados explícitamente
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
net ads joinvsrealm join— Ambos unen al dominio AD, perorealm join(de realmd/SSSD) configura automaticamente SSSD, Kerberos, PAM y NSS.net ads joinrequiere configuracion manual adicional de winbind. Las preguntas suelen pedir identificar que configura cada uno.- SSSD vs Winbind: cuando usar cada uno — SSSD es preferido para autenticacion de estaciones de trabajo Linux (no comparten archivos SMB). Winbind es necesario cuando el servidor tambien comparte archivos via Samba. Usar ambos simultaneamente para el mismo servicio causa conflictos.
winbindysssNO deben coexistir en nsswitch.conf — En/etc/nsswitch.conf, usarpasswd: files winbindOpasswd: files sss, nunca ambos juntos. Las preguntas presentan configuraciones incorrectas con ambos.- Rangos idmap NO deben solaparse —
idmap config * : range = 10000-19999yidmap config EMPRESA : range = 20000-99999deben ser rangos disjuntos. Si se solapan, los mapeos de IDs son impredecibles. Ademas, no deben incluir UIDs locales del sistema (normalmente < 1000). kinitANTES denet ads join— Es necesario obtener un ticket Kerberos del administrador antes de unirse al dominio. Sin ticket valido, la union falla. Las preguntas presentan fallos de union cuya causa es la falta dekinit.security = adsvsserver role = member server— Para un servidor miembro AD, ambos son necesarios:security = adsindica el metodo de autenticacion yserver role = member serverdefine el rol. Omitir cualquiera causa problemas.winbind use default domain = yes— Con esta opcion, los usuarios pueden hacer login comousuarioen lugar deDOMINIO\usuario. Sin ella, el prefijo de dominio es obligatorio. Las preguntas presentan escenarios de login fallido cuya causa es esta opcion.pam_mkhomedir.sovsoddjob-mkhomedir— Ambos crean directorios home automaticamente.oddjobes preferido en Red Hat/CentOS con SELinux porque ejecuta como servicio privilegiado. Las preguntas suelen pedir la solucion correcta segun la distribucion.idmap_rides deterministico pero puede colisionar — El backend rid calcula UID = base + RID. Es predecible y consistente entre servidores con la misma configuracion, pero RIDs de diferentes dominios pueden colisionar si los rangos no estan bien separados.