Samba es un software libre que permite la interoperabilidad entre sistemas operativos Unix/Linux y Windows. Proporciona servicios de archivos e impresión para clientes SMB/CIFS (Server Message Block/Common Internet File System), que son los protocolos utilizados por Windows para compartir archivos e impresoras en una red.

Con Samba, puedes:

Samba es una herramienta esencial para entornos mixtos donde se utilizan tanto sistemas Windows como Linux, ya que facilita la colaboración y el intercambio de recursos entre estos sistemas.

La última versión estable de Samba es la 4.21.3, lanzada el 6 de enero de 2025. Esta versión incluye varias mejoras y correcciones de errores en comparación con las versiones anteriores. esta versión el nivel más alto de Controlador de Dominio y bosque de AD DC que puede emular es: Windows 2008 R2.

NOTA IMPORTANTE sobre Kerberos

En un AD, Kerberos se utiliza para autenticar usuarios, máquinas y servicios.

A partir de Samba 4.7, se proporciona soporte experimental para el KDC (Key Distribution Center) de Kerberos de MIT. En otros casos, Samba utiliza el KDC de Heimdal incluido en Samba.

En este manual se detallan los pasos necesarios para instalar y configurar Samba 4 como Controlador de Dominio (AD DC) en Debian GNU/Linux 12 y sus derivados.

Actualizar el servidor

Antes de comenzar con la instalación de Samba 4.7 como Controlador de Dominio (AD DC), es fundamental actualizar nuestro servidor Debian GNU/Linux con las últimas versiones de seguridad y del kernel. Para ello, ejecuta los siguientes comandos:

apt update 
apt upgrade 
apt dist-upgrade

hostname, nombre del servidor

Debemos configurar el nombre del servidor con un nombre descriptivo, Por ejemplo Servidor CONTROLCC editando el archivo /etc/hostname

IP fija en el servidor

Una vez instalado Debian GNU/Linux, el sistema está configurado para obtener automáticamente la configuración de red (IP, máscara de red, servidores DNS, puerta de enlace) a través del servicio DHCP. Sin embargo, dado que hemos instalado un servidor, es necesario asignarle una dirección IP estática.

Vamos a configurar la interfaz de red enp0s3 (denominación de la primera tarjeta de red en sistemas Linux) con la dirección IP estática 192.168.1.200. También es necesario especificar la dirección del dispositivo de acceso a Internet, la puerta de enlace o gateway (192.168.1.1).

Nota importante: El nombre de las interfaces de red varía según el tipo de adaptador instalado. En este manual nos referimos a la primera interfaz de red como enp0s3, pero el nombre debe reemplazarse por la designación real de su interfaz de red.

La configuración de las interfaces de red está almacenada en el archivo de texto /etc/network/interfaces.

Realizamos la siguiente modificación usando el editor nano:

======================================
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
# allow-hotplug enp0s3
# iface enp0s3 inet dhcp

# Static IP address
auto enp0s3
iface enp0s3 inet static
        address 192.168.1.200
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
======================================


Una vez que el servidor está configurado con una dirección IP fija, activamos la interfaz de red con el siguiente comando:

ifup enp0s3

Hosts: Resolución de DNS en el servidor

La herramienta resolvconf actualiza automáticamente el archivo de configuración de resolución de nombres (DNS), llamado /etc/resolv.conf. Tanto el servidor como los clientes del dominio deben usar un servidor DNS capaz de resolver las zonas DNS de AD.


Esta herramienta, por defecto, reescribe el archivo /etc/resolv.conf en cada arranque. Por lo tanto, vamos a usar la resolución de DNS en el archivo /etc/hosts.

Vamos a añadir las DNS en el archivo /etc/hosts para permitir las búsquedas por nombres DNS.

En mi caso particular, quedaría así:

127.0.0.1 localhost
127.0.1.1 Server
192.168.1.200 Server.controlcc.local controlcc.local Server controlcc

NTP: Sincronizar la hora

Kerberos requiere una hora sincronizada en todos los miembros del dominio. Para ello, procedemos a instalar el servidor de hora NTP. Usamos el siguiente comando:

apt install ntp

Instalar los paquetes necesarios para Samba4 AD DC

Para instalar el controlador de dominio de Active Directory, instalamos Samba y todos los paquetes necesarios.

Usamos el siguiente comando:

apt install samba smbclient attr winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user

Durante la instalación, el instalador nos hará una serie de preguntas para configurar  el controlador de dominio.

En la primera pantalla, debemos escribir un nombre para el valor predeterminado de Kerberos en mayúsculas. 
Escribimos el nombre que usaremos en el dominio, en mayúsculas y pulsamos Enter para continuar.

Ahora escribimos el nombre de host del servidor Kerberos para nuestro dominio. Usamos el mismo nombre que para el dominio, pero esta vez en minúsculas y pulsamos Enter para continuar.

Finalmente, escribimos el nombre de host para el servidor administrativo del reino Kerberos. Usamos el mismo nombre del dominio y pulsamos Enter para finalizar la instalación.

Instalar los paquetes necesarios para Samba4 AD DC

Para instalar el controlador de dominio de Active Directory, debemos instalar Samba y todos los paquetes necesarios.

Usando los siguientes comandos: 

systemctl stop samba-ad-dc smbd nmbd winbind
systemctl disable samba-ad-dc smbd nmbd winbind

Este es el resultado de parar/des-habilitar los servicios:

Muy Importante: Antes de empezar con el aprovisionamiento, debemos cambiar el nombre de smb.conf o eliminar la configuración original de Samba (smb.conf). Este paso es obligatorio antes de aprovisionar Samba AD, ya que durante la provisión, Samba crea un nuevo archivo de configuración desde cero y generará errores si encuentra el antiguo archivo smb.conf.

En este manual, he preferido cambiar el nombre de smb.conf a smb.conf.original.

mv /etc/samba/smb.conf /etc/samba/smb.conf.original

Ahora iniciamos el aprovisionamiento de dominios de forma interactiva, aceptando las opciones predeterminadas que nos ofrece.

samba-tool domain provision --use-rfc2307 --interactive

Además, nos aseguramos de introducir la dirección IP de nuestro servidor DNS o de un servidor externo (en este caso hemos usado el servidor de fimaz.local 192.168.100.253). También debemos escribir una contraseña segura para la cuenta de Administrador.

NOTA IMPORTANTE: Si elige una contraseña débil para la cuenta de administrador, la provisión del dominio fallará.

A continuación, se presentan las preguntas que nos hace el asistente. En azul están las opciones que debemos introducir y en fucsia se encuentran las opciones por defecto, que en la mayoría de los casos son válidas y solo es necesario pulsar la tecla Enter:

Ahora iniciamos y habilitamos los demonios de Samba Active Directory Domain Controller .

systemctl unmask samba-ad-dc
systemctl start samba-ad-dc
systemctl enable samba-ad-dc

Capturas de pantalla del comando: systemctl unmask samba-ad-dc

Capturas de pantalla del comando: systemctl start samba-ad-dc

Capturas de pantalla del comando: systemctl enable samba-ad-dc

Samba 4 AD DC ya esta funcionando

A partir de momento Samba 4 AC DC esta completamente operativo. El nivel más alto de dominio que Samba está emulando debería ser Windows AD DC 2008 R2 .

Lo vamos a verificar con la ayuda de la herramienta samba-tool .

samba-tool domain level show

Verificando el servidor de archivos

Nota importante: Las capetas compartidas de netlogon y las sysvol se crean automáticamente durante el aprovisionamiento ya que son obligatorias en el Controlador Dominios.

Para enumerar todas las acciones proporcionadas por el DC:

smbclient -L localhost -U%
Para verificar la autenticación, nos conéctamos al recurso netlogon compartido utilizando la cuenta de administrador de dominio:

smbclient //localhost/netlogon -UAdministrator -c 'ls'

Verificación de DNS

Para verificar que la configuración del DNS AD funciona correctamente, consultamos algunos registros DNS:

El _ldap registro SRV basado en TCP en el dominio:

host -t SRV _ldap._tcp.controlcc.local

El _kerberos registro de recursos SRV basado en udp en el dominio:

host -t SRV _kerberos._udp.controlcc.local

El registro A del controlador de dominio:

host -t A dc1.controlcc.local

Conclusión sobre el uso de Samba 4 como Controlador de Dominios AD DC en Debian 12

Ventajas:

  1. Costo: Samba 4 es una solución de código abierto, lo que significa que no hay costos de licencia asociados, a diferencia de las soluciones propietarias como Windows Server1.
  2. Compatibilidad: Samba 4 es compatible con los protocolos de Active Directory de Microsoft, lo que permite una integración fluida con entornos Windows existentes1.
  3. Flexibilidad: Permite la personalización y configuración detallada según las necesidades específicas de la organización2.
  4. Comunidad y Soporte: Al ser una herramienta de código abierto, cuenta con una amplia comunidad de usuarios y desarrolladores que pueden ofrecer soporte y compartir soluciones1.

Desventajas:

  1. Complejidad de Configuración: La configuración inicial y el aprovisionamiento de Samba 4 pueden ser complejos y requieren conocimientos técnicos avanzados2.
  2. Documentación y Soporte: Aunque hay una comunidad activa, la documentación puede ser menos accesible o detallada en comparación con las soluciones propietarias2.
  3. Actualizaciones y Seguridad: Las actualizaciones y parches de seguridad pueden depender de la comunidad, lo que podría resultar en tiempos de respuesta más lentos en comparación con las soluciones comerciales2.
  4. Integración Limitada: Algunas características avanzadas de Active Directory, como ciertas políticas de grupo y funcionalidades de administración, pueden no estar completamente soportadas o ser más difíciles de implementar1.

En resumen, Samba 4 en Debian 12 ofrece una solución robusta y económica para la gestión de dominios AD, pero puede requerir un mayor esfuerzo en términos de configuración y mantenimiento.