302.1 Samba como Controlador de Dominio
Objetivos del subtema
Este es el subtema con mayor peso de toda la especialidad 300. Cubre la configuración de Samba 4 como controlador de dominio Active Directory, incluyendo aprovisionamiento, roles FSMO, replicación, confianzas de dominio y gestión con samba-tool.
Aprovisionamiento del dominio AD
Requisitos previos
- Samba 4 compilado con soporte AD DC
- Nombre de host configurado correctamente (FQDN)
- DNS funcional o disposición para usar el DNS interno de Samba
- NTP sincronizado (Kerberos requiere diferencia menor a 5 minutos)
- No deben ejecutarse smbd/nmbd/winbindd independientes
Comando de aprovisionamiento
# Aprovisionamiento interactivo
samba-tool domain provision
# Aprovisionamiento no interactivo completo
samba-tool domain provision \
--realm=EMPRESA.COM \
--domain=EMPRESA \
--server-role=dc \
--dns-backend=SAMBA_INTERNAL \
--adminpass='P@ssw0rd123'
# Con BIND9 como backend DNS
samba-tool domain provision \
--realm=EMPRESA.COM \
--domain=EMPRESA \
--server-role=dc \
--dns-backend=BIND9_DLZ \
--adminpass='P@ssw0rd123'Parámetros del aprovisionamiento
| Parámetro | Descripción |
|---|---|
--realm | Nombre Kerberos del dominio (MAYÚSCULAS, ej: EMPRESA.COM) |
--domain | Nombre NetBIOS del dominio (máx 15 caracteres) |
--server-role=dc | Rol de controlador de dominio |
--dns-backend | Backend DNS: SAMBA_INTERNAL, BIND9_DLZ o NONE |
--adminpass | Contraseña del administrador del dominio |
--use-rfc2307 | Habilitar extensiones RFC2307 para atributos POSIX en AD |
--site | Nombre del sitio AD (predeterminado: Default-First-Site-Name) |
--function-level | Nivel funcional del dominio (2008_R2, etc.) |
Para el examen: El aprovisionamiento crea el archivo smb.conf, la base de datos LDAP, el KDC Kerberos y opcionalmente configura DNS. La opción
--use-rfc2307es importante para mapeo de UIDs/GIDs.
Resultado del aprovisionamiento
El proceso genera:
/etc/samba/smb.confconfigurado para AD DC- Base de datos LDAP de Active Directory en
/var/lib/samba/private/sam.ldb - Archivo Kerberos
/var/lib/samba/private/krb5.conf - Zonas DNS si se usa DNS interno
- Certificado TLS autofirmado
- Cuenta Administrator con la contraseña especificada
# Verificar el archivo krb5.conf generado
cat /var/lib/samba/private/krb5.conf
# Copiar o enlazar para uso del sistema
cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
# Iniciar el servicio AD DC
systemctl start samba-ad-dc
systemctl enable samba-ad-dcBackends DNS
DNS interno de Samba (SAMBA_INTERNAL)
- Servidor DNS integrado en el proceso samba
- Más simple de configurar
- Soporta actualizaciones dinámicas de DNS
- Limitado en funcionalidad comparado con BIND9
- Adecuado para entornos pequeños/medianos
BIND9 con DLZ (BIND9_DLZ)
- BIND9 carga las zonas AD desde la base de datos de Samba vía DLZ
- Más funcional y maduro que el DNS interno
- Permite zonas DNS adicionales no relacionadas con AD
- Requiere configurar BIND9 con el módulo DLZ de Samba
# Configuración de BIND9 para DLZ
# En /etc/bind/named.conf agregar:
dlz "AD DNS Zone" {
database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_12.so";
};Verificación de DNS
# Verificar resolución del DC
host -t A dc.empresa.com localhost
# Verificar registros SRV críticos
host -t SRV _ldap._tcp.empresa.com localhost
host -t SRV _kerberos._tcp.empresa.com localhost
host -t SRV _ldap._tcp.dc._msdcs.empresa.com localhost
# Verificar con samba-tool
samba-tool dns query localhost empresa.com @ ALL -U administratorRoles FSMO (Flexible Single Master Operations)
En Active Directory, ciertos roles solo pueden ser realizados por un DC a la vez:
| Rol FSMO | Alcance | Función |
|---|---|---|
| Schema Master | Bosque | Modifica el esquema AD |
| Domain Naming Master | Bosque | Agrega/elimina dominios del bosque |
| PDC Emulator | Dominio | Sincronización de hora, cambios de contraseña urgentes |
| RID Master | Dominio | Asigna bloques de RIDs a los DCs |
| Infrastructure Master | Dominio | Actualiza referencias entre dominios |
Gestión de roles FSMO
# Mostrar quién tiene cada rol FSMO
samba-tool fsmo show
# Transferir un rol FSMO a otro DC (ordenado)
samba-tool fsmo transfer --role=rid
samba-tool fsmo transfer --role=pdc
samba-tool fsmo transfer --role=naming
samba-tool fsmo transfer --role=schema
samba-tool fsmo transfer --role=infrastructure
# Tomar un rol forzosamente (seize) - solo si el DC original no está disponible
samba-tool fsmo seize --role=rid --force
samba-tool fsmo seize --role=all --forcePara el examen: Conocer los 5 roles FSMO, su alcance (bosque vs dominio) y la diferencia entre
transfer(ordenado) yseize(forzado). Schema Master y Domain Naming Master son a nivel de bosque.
Unir controladores de dominio adicionales
# Unir un segundo DC al dominio existente
samba-tool domain join empresa.com DC \
-U administrator \
--dns-backend=SAMBA_INTERNAL
# Verificar la unión
samba-tool domain info 10.0.0.1
# Verificar replicación
samba-tool drs showreplRequisitos para un DC adicional
- Resolución DNS apuntando al primer DC
- Kerberos configurado con el realm correcto
- Conectividad a los puertos necesarios (LDAP, Kerberos, DNS, SMB)
- Cuenta con privilegios de administrador del dominio
Replicación DRS (Directory Replication Service)
Monitorización de replicación
# Mostrar estado de replicación
samba-tool drs showrepl
# Forzar replicación
samba-tool drs replicate dc2.empresa.com dc1.empresa.com dc=empresa,dc=com
# Verificar KCC (Knowledge Consistency Checker)
samba-tool drs kcc
# Verificar particiones de replicación
samba-tool drs optionsReplicación de SYSVOL
SYSVOL contiene scripts de inicio de sesión y GPOs. Samba soporta varias opciones:
- rsync + cron: Solución más común y estable
- osync: Sincronización bidireccional
- DFS-R: No soportado nativamente por Samba (protocolo propietario de Microsoft)
# Replicación de SYSVOL con rsync (en el DC secundario)
rsync -XAavz --delete \
dc1.empresa.com:/var/lib/samba/sysvol/ \
/var/lib/samba/sysvol/
# Configurar en crontab para sincronización periódica
*/5 * * * * rsync -XAavz --delete dc1:/var/lib/samba/sysvol/ /var/lib/samba/sysvol/Para el examen: La replicación de SYSVOL en Samba requiere herramientas externas como rsync. DFS-R de Microsoft no está implementado en Samba.
Confianzas de dominio (Domain Trusts)
Tipos de confianza
| Tipo | Dirección | Descripción |
|---|---|---|
| Dentro del bosque | Bidireccional transitiva | Automática entre dominios del mismo bosque |
| External (externa) | Unidireccional o bidireccional | Entre dominios de bosques diferentes |
| Forest (bosque) | Bidireccional transitiva | Entre dos bosques completos |
Gestión de confianzas
# Crear confianza con otro dominio
samba-tool domain trust create otro.com \
--type=external \
--direction=both \
-U administrator
# Listar confianzas
samba-tool domain trust list
# Verificar una confianza
samba-tool domain trust validate otro.com
# Eliminar una confianza
samba-tool domain trust delete otro.comIntegración con Kerberos
Configuración de Kerberos
# /etc/krb5.conf (generado por el aprovisionamiento)
[libdefaults]
default_realm = EMPRESA.COM
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
EMPRESA.COM = {
kdc = dc.empresa.com
admin_server = dc.empresa.com
default_domain = empresa.com
}
[domain_realm]
.empresa.com = EMPRESA.COM
empresa.com = EMPRESA.COMVerificación de Kerberos
# Obtener ticket Kerberos
kinit administrator@EMPRESA.COM
# Verificar tickets
klist
# Destruir tickets
kdestroy
# Verificar que el KDC responde
samba-tool domain exportkeytab /tmp/test.keytab --principal=administratorGestión con samba-tool
Comandos principales de samba-tool
# Gestión de usuarios
samba-tool user list
samba-tool user create usuario contraseña
samba-tool user delete usuario
samba-tool user disable usuario
samba-tool user enable usuario
samba-tool user setpassword usuario --newpassword='nueva'
# Gestión de grupos
samba-tool group list
samba-tool group add grupo
samba-tool group delete grupo
samba-tool group addmembers grupo usuario1,usuario2
samba-tool group removemembers grupo usuario1
# Gestión de DNS
samba-tool dns add localhost empresa.com host A 10.0.0.50 -U administrator
samba-tool dns delete localhost empresa.com host A 10.0.0.50 -U administrator
samba-tool dns query localhost empresa.com @ ALL -U administrator
samba-tool dns zonelist localhost -U administrator
# Gestión de GPOs
samba-tool gpo listall
samba-tool gpo show {GPO-GUID}
samba-tool gpo create "Nombre GPO" -U administrator
# Verificación de la base de datos
samba-tool dbcheck
samba-tool dbcheck --fix
# Nivel funcional del dominio
samba-tool domain level show
samba-tool domain level raise --domain-level=2008_R2 --forest-level=2008_R2Para el examen:
samba-tooles la herramienta central para administrar Samba AD DC. Conocer los subcomandos de domain, user, group, dns, fsmo y drs es fundamental.
smb.conf para AD DC
# Configuración típica generada por el aprovisionamiento
[global]
workgroup = EMPRESA
realm = EMPRESA.COM
netbios name = DC1
server role = active directory domain controller
dns forwarder = 8.8.8.8
idmap_ldb:use rfc2307 = yes
[netlogon]
path = /var/lib/samba/sysvol/empresa.com/scripts
read only = No
[sysvol]
path = /var/lib/samba/sysvol
read only = NoResumen de conceptos clave
samba-tool domain provisioncrea el dominio AD con LDAP, Kerberos y DNS integrados- Dos opciones de DNS: SAMBA_INTERNAL (simple) o BIND9_DLZ (más funcional)
- 5 roles FSMO: Schema Master, Domain Naming (bosque), PDC Emulator, RID Master, Infrastructure (dominio)
samba-tool fsmo transfertransfiere roles ordenadamente;seizelos toma forzosamente- La replicación DRS sincroniza la base de datos AD entre DCs
- SYSVOL requiere replicación externa (rsync) ya que DFS-R no está implementado
samba-tooles la herramienta principal: domain, user, group, dns, fsmo, drs- El realm Kerberos debe estar en MAYÚSCULAS y coincidir con el dominio DNS
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
samba-tool domain provisionvsnet ads join—provisioncrea un dominio AD NUEVO desde cero (configura DNS, Kerberos, LDAP de una sola vez).net ads joinune un servidor a un dominio EXISTENTE como miembro. Confundir ambos es una de las trampas mas clasicas.- Realm Kerberos SIEMPRE en MAYUSCULAS —
--realm=EMPRESA.COMcorrecto,--realm=empresa.comincorrecto. El realm Kerberos debe coincidir con el dominio DNS pero en mayusculas. Preguntas frecuentes presentan el realm en minusculas como opcion incorrecta. - SAMBA_INTERNAL vs BIND9_DLZ — SAMBA_INTERNAL es el DNS integrado (simple, para entornos pequeños). BIND9_DLZ usa BIND9 con modulo DLZ que carga zonas desde Samba (mas funcional, permite zonas adicionales). No confundir con un BIND9 independiente que no lee la BD de Samba.
- 5 roles FSMO: 2 de bosque + 3 de dominio — Schema Master y Domain Naming Master son a nivel de BOSQUE (uno por bosque). PDC Emulator, RID Master e Infrastructure Master son a nivel de DOMINIO (uno por dominio). Confundir el alcance es trampa frecuente.
fsmo transfervsfsmo seize—transferes la transferencia ordenada (el DC original esta disponible).seizees la toma forzosa (el DC original esta caido permanentemente). Usar seize cuando el DC esta vivo puede causar conflictos graves.- Replicacion SYSVOL requiere rsync (DFS-R NO implementado) — Samba NO soporta DFS-R (protocolo propietario de Microsoft). La replicacion de SYSVOL se hace con rsync + cron. Las preguntas suelen presentar DFS-R como opcion incorrecta.
- NTP es requisito obligatorio — Kerberos requiere diferencia de tiempo menor a 5 minutos entre DC y clientes. Sin NTP sincronizado, la autenticacion Kerberos falla. Las preguntas presentan fallos de autenticacion cuya causa real es la desincronizacion de tiempo.
--use-rfc2307durante provision — Esta opcion habilita atributos POSIX (uidNumber, gidNumber) en AD. Si no se usa durante el aprovisionamiento, no se pueden asignar UIDs/GIDs especificos a usuarios AD. Es irreversible: hay que re-aprovisionar si se omite.- smb.conf generado por provision NO se debe editar manualmente para cambiar server role — El aprovisionamiento genera un smb.conf especifico para AD DC. Cambiar
server rolemanualmente puede romper la configuracion. Usarsamba-toolpara cambios.