Samba 4 como Controlador de Dominios AD DC en Debian 9

Samba es un software gratuito de código abierto que proporciona una interoperabilidad estándar entre los sistemas operativos Windows, Linux y Unix.

Samba funciona como un servidor de archivos e impresión independiente para clientes de Windows y Linux a través del conjunto de protocolos SMB / CIFS o puede actuar como un controlador de dominio de Active Directory.

En el momento de escribir este manual, estoy usando la versión de Samba 4.5.16-Debian, 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 Samba 4.7 o superior, este proporciona soporte experimental para el KDC de Kerberos de MIT. En otros casos, Samba usa el KDC de Heimdal incluido en Samba.

En este manual se exponen los pasos que debe seguir para instalar y configurar Samba 4 como Controlador de Dominio  AD DC en Debian GNU/Linux 9 y derivados.

Actualizar el servidor

Antes de empezar con la instalación de Samba 4  como Controlador de Dominios (AD DC), tenemos que actualizar nuestro servidor Debian GNU/Linux con las últimas versiones de seguridad y del kernel, usando los siguientes comandos:

apt-get update 
apt-get upgrade 
apt-get dist-upgrade

hostname, nombre del servidor

Configure el nombre del servidor con un nombre descriptivo, Por ejemplo Servidor Debian editando el archivo /etc/hostname

IP fija en el servidor

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

Vamos a configurar la interfaz de red enp0s3 (denominación de la primera tarjeta de red en los sistemas de tipo linux) con la dirección IP estática 192.168.1.200. También es necesario indicar 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 en función del tipo de adaptador que tengamos instalado. En este manual nos referimos a la primera interfaz de red como enp0s3 . Sin embargo, el nombre se debe reemplazar 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/etc/network/interfaces:

======================================
# 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
        dns-nameservers 192.168.1.200 8.8.8.8
        dns-search usuariodebian.local
======================================


Una vez configurado el servidor con una dirección IP fija, activamos la interfaz de red usando 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. El servidor y los clientes del dominio deben usar un servidor DNS que sea capaz de resolver las zonas DNS de AD.


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

Vamos 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.usuariodebian.local usuariodebian.local Server usuariodebian

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.

Aprovisionamiento de Samba AD DC para el dominio

Antes de comenzar a configurar Samba para el dominio, tenemos que detener y deshabilitar todos los demonios de samba. 
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 tenemos que, o bien cambiar del nombre de smb.conf o eliminar la configuración original de samba (smb.conf). Este paso es obligatorio antes de aprovisionar Samba AD porque en el momento de la provisión, Samba crea un nuevo archivo de configuración desde cero y generará algunos errores en caso de que encuentre el antiguo archivo smb.conf.

En este manual he preferido cambiarle 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 usando el servidor de vodafone: 62.81.16.148. 
También tenemos que escribir una contraseña segura para la cuenta de Administrador. 

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

A continuación las preguntas que nos hace el asistente, en color azul esta las opciones que tenemos que introducir, y en fucsia se encuentran las opciones por defecto que en la mayoría de los casos es valida y solo es necesario pulsar la tecla Enter

– Realm: introducimos el nombre del dominio, en este manual es: usuariodebian.local y pulsamos Enter para continuar

– Domain [usuariodebian]: ya lo pone por defecto con respecto al dominio introducido en Realm. por tanto lo dejamos como esta y pulsamos Enter para continuar

– Server Role (dc, member, standalone) [dc]: por defecto esta seleccionado Controlador de Dominios [dc] por tanto lo dejamos como esta y pulsamos Enter para continuar

– DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIN9_DLZ, NONE) [SAMBA_INTERNAL]: por defecto esta seleccionado DNS interno de SAMBA [SAMBA_INTERNAL] por tanto lo dejamos como esta y pulsamos Enter para continuar

– DNS forwarder IP address (write ‘none’ to disable forwarding) [62.81.16.148]: por defecto esta seleccionado los DNS de mi ISP [62.81.16.148], en otros casos tenemos que introducir la IP del nuestro servidor DNS, por tanto lo dejamos como esta y pulsamos Enter para continuar

– Administrator password: Introducimos la contraseña de administrador, se recomienda usar una contraseña con la siguiente estructura: no inferior a 8 caracteres y tiene que contener al menos un carácter en mayúscula, uno en minúsculas y un numero

– Retype password: volvemos a introducir la misma contraseña anterior, esto se hace para asegurarnos que la hemos escrito correctamente ambas contraseñas.

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.usuariodebian.local

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

$ host -t SRV _kerberos._udp.usuariodebian.local

El registro A del controlador de dominio:

$ host -t A dc1.usuariodebian.local