martes, 16 de abril de 2019

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ín:

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




Mas información en la web oficial de SAMBA

Samba configurando Active Directory Domain Controller
Wiki de Samba





Videotutoriales





Ubuntu Server como Controlador de Dominios de Active Directory

Los videotutoriales son totalmente ajenos a esto blog, son enlaces de youtube, vimeo, etc...






Unir un cliente Windows 7 a nuestro dominio usuariodebian.local

Vamos agregar un equipo a nuestro dominio, en este caso es Windows 7


Configuración de la red local

En la configuración de red del cliente, tenemos que pertenecer al mismo rango, dicha ip que vamos a usar en este manual es: 192.168.1.15, como servidor DNS usaremos la IP de nuestro servidor samba: 192.168.1.200




Agregar el equipo al dominio

Para ello vamos a Propiedades del sistema > Nombre de equipo. Pulsamos en Cambiar... En la ventana que nos aparece, seleccionamos Dominio, y colocamos el nombre de nuestro dominio, en este manual es: usuariodebian.local y pulsamos en Aceptar



Al conectar al Dominio usuariodebian.local nos pide el nombre de usuario (administrator) y la contraseña que dimos de alta en el servidor samba.



Una vez autenticado el usuario y la contraseña, nos informa que el equipo se unió correctamente al dominio: usuariodebian.local. Pulsamos en Aceptar



Nos informa que tenemos que reiniciar el equipo para que se apliquen los cambios. Pulsamos en Aceptar



Y pulsamos en Reiniciar ahora.



Ahora al iniciar sesión tenemos que seleccionar el Dominio: usuariodebian. 
Y usuario que vamos a usar en esta primera conexión es: administrator
y como contraseña, usaremos la que dimos de alta en el Servidor Samba.




Instalar RSAT (Remote Server Administration Tool - Herramientas de administración remota del servidor )

Descargarnos de la página de Microsoft la versión RSAT adecuada a nuestro equipo cliente. 
En nuestro caso un Windows 7, y procedemos a su instalación.

Una vez instalado las herramientas de administración remota del servidor, procederemos a habilitar aquellas que necesitamos. Para ello deberemos ir a Panel de Control, Programas y características, Activar características de Windows.





Aquí activaremos las herramientas de administración que necesitemos, en nuestro caso seleccionamos:

- Herramientas de administración remota del servidor
-- Herramientas de administración de características
--- Herramientas de administración de directivas de grupo.

- Herramientas de administración de funciones
-- Herramientas de AD DS y AD LDS
--- Herramientas de AD DS
---- Centro de administración de Active Directory
---- Herramientas de linea de comandos y complementos de AD DS

la administración básica del AD y la administración de políticas de grupo. Si posteriormente se necesitan herramientas adicionales, siempre se pueden activar. 




Para administrar el Servidor usamos:
Usuarios y equipos de Active Directory




En las siguientes capturas observamos como el Servidor Samba, funciona perfectamente. Vemos el Dominio que hemos dado de alta: usuariodebian.local
y Vemos como el servidor que esta en funcionamiento no es Windows, en Debian GNU/Linux con el servidor Samba versión 4.5.16-Debian





















2 comentarios:

Roger dijo...

hola
muy buena guia todo funciono bien, solo tengo una pregunta.
Tengo aplicaciones web las cuales el usuario y contraseña las valido con la funcion de php "ldap_bind" sin embargo en samba 4 (como controlador de dominio) no he podido hacerlas funcionar. La pregunta seria si ¿me falta alguna configuracion en samba para que funcione o si hay alguna otra manera de realizar este proceso?

Alfredo dijo...

buen tutorial, lo voy a probar y despues comento.
Le pregunto a roger, si pudo solucionar su inconveniente?, estoy interesado en hacer lo mismo. saludos!