Integración de Linux con Active Directory: Samba vs. LDAP (SSSD)

Permita que los hosts Linux se autentiquen contra su dominio de Windows AD. Dos caminos probados:

Opción A: Samba Winbind (Clásico)

Ideal para servidores de archivos/impresión que también atienden a clientes Windows mediante SMB.

  1. Instalar: sudo apt install samba winbind krb5-user (Debian/Ubuntu) o dnf install samba-winbind krb5-workstation (RHEL).
  2. Kerberos (/etc/krb5.conf):
    [libdefaults] default_realm = CORP.EXAMPLE.COM dns_lookup_realm = true dns_lookup_kdc = true 
  3. SMB.conf (/etc/samba/smb.conf):
    [global] workgroup = CORP realm = CORP.EXAMPLE.COM security = ads dedicated keytab file = /etc/krb5.keytab kerberos method = secrets and keytab winbind use default domain = yes winbind enum users = yes winbind enum groups = yes idmap config * : backend = tdb idmap config * : range = 10000-20000 idmap config CORP : backend = rid idmap config CORP : range = 1000000-2000000 template shell = /bin/bash template homedir = /home/%U 
  4. Unirse al dominio:
    sudo net ads join -U administrator sudo systemctl enable --now winbind smbd nmbd 
  5. Probar: wbinfo -u; getent passwd administrator.

Opción B: SSSD + LDAP (Moderna, recomendada)

Más ligera, mejor caché, funciona con sudo, claves SSH y HBAC.

  1. Instalar: sudo apt install sssd-ad sssd-tools realmd adcli krb5-user.
  2. Descubrir y unirse:
    sudo realm discover corp.example.com sudo realm join -U administrator corp.example.com 
  3. SSSD se autoconfigura (/etc/sssd/sssd.conf) con:
    [domain/corp.example.com] ad_domain = corp.example.com krb5_realm = CORP.EXAMPLE.COM realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash fallback_homedir = /home/%u@%d use_fully_qualified_names = False 
  4. Habilitar: sudo systemctl enable --now sssd.
  5. Probar: id user@corp.example.com; ssh user@linux-host.

Endurecimiento común

  • Restringir SSH: AllowGroups "Domain Admins" "LinuxAdmins" en sshd_config.
  • Sudo: %Domain\ Admins ALL=(ALL) ALL en /etc/sudoers.d/ad-admins.
  • HBAC (SSSD): ad_access_filter = (memberOf=CN=LinuxAccess,OU=Groups,DC=corp,DC=example,DC=com).
  • Sincronización horaria: chronyd con controladores de dominio (crítico para Kerberos).

Elija Samba si necesita servir archivos SMB; elija SSSD para autenticación/identidad pura. Ambos coexisten.