Saltar a contenido

Instalación y Configuración Samba DC

A continuación se muestra una guía de Instalación y configuración de Samba Domain Controller.

Guía Samba DC Ubuntu Server

Los objetivos de esta guía son:

  • Preparación del servidor.
  • Instalar el Controlador de Dominio en Samba.
  • Acceder y crear clientes.

Webgrafía

Recordatorio Controlador de Dominio (DC)

  • Es un servidor que se ocupa de permitir el acceso de determinados usuarios a recursos compartidos del dominio.
  • Un dominio es un grupo de recursos (equipos, ficheros, usuarios, impresoras, etc.) dentro de una red. El acceso a dicho dominio o las políticas de seguridad de todos esos recursos es administrada por el controlador de dominio.
  • Habitualmente se implementan en Windows Server, aunque también se pueden implementar en Linux bajo samba.
  • En una implementación adecuada, se despliega más de un controlador de dominio a la vez que actúan como uno (cluster) de esta forma se dota al servicio de redundancia y alta disponibilidad, es decir, que si se produce una avería en un control de dominio el servicio sigue activo pues hay otro/s controladores activos.
  • Los dominios usan rutas de nombres similares a los DNS, tienen una ruta absoluta FQDN (Full Qualified Domain Name) y una ruta relativa PQDN (Partially Qualified Domain Name).

NOTA:

Independientemente del sistema operativo usado necesitaremos de otros servicios para complementar, a continuación se enumeran:

  • LDAP: Será la base de datos que alberga la información de los usuarios.
  • Kerberos: Se encarga de la seguridad a nivel de autentificación segura de los usuarios.
  • DNS: Habitualmente el acceso al dominio se hace a través de un nombre de dominio. El servicio DNS permite la resolución de ese nombre de dominio al direccionamiento IP.
  • NTP: Es el servicio que se encarga de la sincronización del reloj de cada máquina.

Preparación

Antes de la instalación del Controlador de Dominio o Domain Controler DC mediante Samba, es necesaria, la preparación del servidor a nivel de red y dominio. Para ello se detallan los siguientes pasos:

  1. Restaura un snapshot "limpio" de tu máquina virtual de Ubuntu 22.04 y se realiza un update.
Comprobación versión Ubuntu.
  1. Configura la máquina virtual en formato “Nat Network”.
  1. A continuación se establece el nombre de host del servidor este caso profesor.aso.local y se añade el servidor al archivo de hosts.

CUIDADO

  • Se debe cambiar profesor por el nombre de la alumna o alumno.
  • Se debe cambiar aso por sor.

3.1. Cambio de nombre de hosts a profesor.

hostnamectl set-hostname profesor

3.2. El fichero /etc/hosts es como un servicio DNS local, es decir, tiene una serie de pares nombres/IP que resuelve localmente. 1. Realiza una copia de seguridad del fichero /etc/hosts. 2. Modifica el fichero original (/etc/hosts) para que resuelva el nombre de tu máquina y tu FQDN en este caso profesor.aso.local. 3. Comprueba con un ping a los nombres que funciona y te contesta con la IP.

Por ejemplo

Inicialmente En este caso el servidor se llama aso, por lo tanto si se realiza un ping a aso antes de modificar el /etc/hosts la máquina debe saber resolverlo a la IP 127.0.1.1 que por defecto en ubuntu se utiliza para determinar la dirección IP que corresponde al nombre de host.

  • En este caso el fichero modificado quedaría:
127.0.0.1 localhost
192.168.2.4 profesor.aso.local profesor

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Cuidado

La nueva IP es la recibida en el servidor del DHCP de la RedNAT configurada.

3.3. Ejecución y comprobación.

# verifica FQDN
hostname -f

# verifica FQDN si resuelve a la IP del servidor
ping -c3 profesor.aso.local
Modificación del /etc/hosts y comprobaciones de ping.
  1. Se configura la resolución de nombres en el archivo resolv.conf encargado de redireccionar las peticiones de DNS.

A tener en cuenta

  • Para realizar un dominio de búsqueda (Search Domain), el cual nos va a permitir que si el servidor recibe una búsqueda de petición de un recurso, por ejemplo “maquina01”, automáticamente el servidor va intentar buscar por el nombre de dominio completo: “maquina01.aso.com”. Es decir, intenta resolver una ruta relativa de dominio (PQDN) a una ruta absoluta de dominio (FQDN).
  • Recordatorio: se debe de aplicar los cambios con netplan apply.

a. Se desactiva el servicio de resolución de DNS.

# Para y desactiva el servicio de resolución de DNS
sudo systemctl disable --now systemd-resolved

# Elimina el link simbólico de /etc/resolv.conf
sudo unlink /etc/resolv.conf

b. Se crea un nuevo resolv

# Crea un nuevo archivo /etc/resolv.conf
nano /etc/resolv.conf

c. Se introduce las siguientes líneas en el archivo nuevo.

# Samba server IP address
nameserver 192.168.2.4

# fallback resolver Quad9
nameserver 9.9.9.9

# Dominio principal de Samba
search aso.local

Cuidado

La IP es la recibida en el servidor del DHCP de la RedNAT configurada

d. Se hace inmutable el archivo para evitar que cualquier instalación de otros servicios lo modifique automáticamente.

# add attribute immutable to the file /etc/resolv.conf
sudo chattr +i /etc/resolv.conf
Configuración de resolución de nombres.

Instalación Samba-DC

  1. Se instalan los siguientes paquetes:
sudo apt-get update -y
sudo apt-get install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user chrony net-tools

Donde se destacan los siguientes:

  1. Samba → En el paquete ya viene integrado un módulo de LDAP para almacenar los usuarios.
  2. krb5-config → Es la configuración de Kerberos que usaremos en samba. Habrá que instalarlo más adelante.
  3. winbind → Paquete necesario para que un cliente de Windows se pueda autentificar en nuestro sistema DC en Linux.
  4. smbclient → Se instala el cliente samba, simplemente para tener ciertos comandos de consulta, realmente no es necesario para montar el servidor.

Durante la instalación del Kerberos nos pedirá 3 cosas principalmente:

  1. El reino (realm): se indicará el mismo que el dominio configurado en el archivo de configuración de red.
  2. La IP del servidor Kerberos: FQDN.
  3. La IP para la administración del Kerberos: FQDN.

Nota

En este caso el servidor de kerberos va a estar en el propio controlador de dominio, pero en otra situación se podría tratar de una máquina independiente.

Instalación samba y paquetes necesarios.
  1. A continuación se necesita detener varios servicios instalados con anterioridad y que ahora serán gestionados a través de Samba. Se paran y se deshabilitan.
# stop and disable samba services - smbd, nmbd, and winbind
sudo systemctl disable --now smbd nmbd winbind
  1. Se activa el servicio samba-ad-dc mediante los siguientes comandos:
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
Instalación samba y paquetes necesarios.

Configuración Samba-DC

  1. Antes de pasar a configurar Samba, es conveniente guardar el fichero de configuración original, por si hubiera que retomar la instalación desde este punto:
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.copia
  1. El siguiente paso es configurar el controlador de dominio de Samba mediante el uso de samba-tool.
samba-tool domain provision --use-rfc2307 --interactive

Nota

  • Dentro de la configuración cogerá el reino/dominio del servidor, por lo tanto no se tiene que rellenar nada, excepto la parte de DNS forwarder que se usará Quad9, el cual es DNS recursivo público global que tiene como objetivo proteger a los usuarios del malware y el phishing. (9.9.9.9).
  • La razón de esta configuración es porque el servidor actuará como DNS, pero si no se puede resolver una página pasaremos la solicitud de resolución al servidor DNS forwarder (9.9.9.9).

Advertencia

Como contraseña de administrador necesita tener una mayúscula/minúscula/número/longitud de 8. El usuario por defecto es “administrator”, en este caso se usará AsoAula5

  • Si todo ha salido bien, se creará el fichero smb.conf acorde con la configuración:
Configuración Samba y comprobación.
  • [global]: Donde se puede observar todos los datos de configuración del dominio, además de los roles para los que se ha creado (DC-AD).
  • [netlogon]: Ya ha creado de forma automática la carpeta para los scripts de inicio de sesión de los clientes.
  • [sysvol]: El sysvol es reponsable de replicar las GPOs (Políticas de Grupos) aplicadas en el editor de directivas de grupo, todos los cambios y GPOs nuevos son replicados por allí.
  1. Ahora se instala Kerberos, antes solo se había asociado la configuración a Samba (reino, dns, password, etc). Para ello se realiza una copia de seguridad de la configuración actual y se sobrescribe la realizada por Samba.
# Renombra la configuración por defecto de Kerberos a krb5.conf.original
sudo mv /etc/krb5.conf /etc/krb5.conf.original

# Copia la configuración generada samba-tool
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
Configuración Kerberos.
  1. Se incializa el servicio de Samba
# start samba-ad-dc service
sudo systemctl start samba-ad-dc

# verify samba-ad-dc service
sudo systemctl status samba-ad-dc
Inicia Samba y comprueba.
  1. Se configura la sincronización del tiempo para que el servidor este en hora, con el objetivo de realizar de forma adecuada tareas de resolución de incidencias.

5.1. Se establecen los permisos para NTP (Network Time Protocol). En la instalación de Samba se utilizó el paquete chrony, el cual es una implementación del Network Time Protocol. Es una alternativa a ntpd, que es una implementación de referencia de NTP. A continuación se muestran los comando para dar los permisos adecuados a chrony.

# Permite al grupo _chrony leer en el directorio ntp_signd
sudo chown root:_chrony /var/lib/samba/ntp_signd/

# Cambia los permisos en el directorio ntp_signd.
sudo chmod 750 /var/lib/samba/ntp_signd/

5.2 Configuración de Chrony, dentro del archivo de configuración /etc/chrony/chrony.conf se añaden las siguientes líneas:

# bind el servicio de chrony a la dirección IP del Samba AD.
bindcmdaddress 192.168.2.4

# Permite a los clientes de la red conectar al Chrony NTP server en este caso:
allow 192.168.2.0/24

# Especifica el directorio del ntpsigndsocket para el Samba AD.
ntpsigndsocket /var/lib/samba/ntp_signd

5.3 Se reinicia el servicio y se comprueba su estado.

# Reinicia el servicio chronyd.
sudo systemctl restart chronyd

# Verifica el estado de chronyd
sudo systemctl status chronyd
Instalación y configuración de chronyd.

Comprobación del Samba Active Directory

  1. Verificaciones del dominio.
# Verifica el Dominio
host -t A aso.local

# Verifica el FQDN
host -t A profesor.aso.local
  1. Comprobación de Kerberos y ldap.
# Comprobación del registro SRV para _kerberos. 
host -t SRV _kerberos._udp.aso.local

# Comprobación del registro SRV para _ldap
host -t SRV _ldap._tcp.aso.local

NOTA

El registro SRV es un registro de recursos del sistema de nombres de dominio (DNS). Se usa para identificar equipos que hospedan servicios.

  1. Comprobar el login con el usuario administrator con el comando kinit.
# Autenticate a Kerberos con el usuario administrator.
kinit administrator@ASO.LOCAL

# Verifica la lista de accesos.
klist

Cuidado

A tener en cuenta las mayúsculas del dominio en el comando kinit.

Comprobaciones

Creación y acceso de usuarios

Existen diferentes formas de crear usuarios, se destacan dos:

  1. Mediante comandos de Samba.
  2. A través de la herramienta de gestión RSAT.

En esta sección se describe el primer método:

Crear usuario con samba-tool

  • En este caso se utiliza los comandos de samba-tool para crear el usuario:
# Crea un nuevo usuario en Samba.
sudo samba-tool user create javi

# Comprueba los usuarios de Samba.
sudo samba-tool user list

Nota

Como se ha explicado en secciones anteriores los usuarios creado en Samba deben estar creados también en el sistema.

Acceso al Samba-DC desde un Windows Client

Configuración de DNS y comprobación

  • Se accede al cliente, en este caso Windows 10 y se configuran los DNS del Samba-DC.
Configuración DNS de Samba-DC en WinClient.
  • Por otro lado se pueden comprobar los DNS mediante comandos de PowerShell.
# En Powershell
Get-DnsClientServerAddress

# ping al AD domain profesor.aso.local
ping profesor.aso.local

# ping al AD domain aso.local
ping aso.local
Comprobación DNS con PowerShell.

Añadir cliente al Active Directory con PowerShell

  • El siguiente paso es añadir el Cliente al Controlador de Dominio, y en este caso lo vamos a hacer por PowerShell con el siguiente comando:
# Añade Windows 10 al Active Directory usando POWERSHELL
Add-Computer -DomainName "aso.local" -Restart
Añadir cliente al dominio mediante PowerShell.

Nota

Al reiniciar debe aparecer el login para el Dominio.

  • Comprobación de usuarios en el DC desde el Windows Client.
Comprobación usuarios desde W10.

Acceso Samba-DC desde un fedora

Ubuntu Server

En el Ubuntu Server es necesario añadir repositorios.

  1. En Ubuntu Server, es necesario añadir los repositorios del "Universe".
sudo add-apt-repository universe
sudo add-apt-repository multiverse
sudo apt update

Cliente

En el cliente.

  1. Se Establece nombre de host.
sudo hostnamectl set-hostname fedora.aso.local
  1. En Fedora, se edita la configuración Resolved.
nano /etc/systemd/resolved.conf

# Añade las siguientes líneas
[Resolve]
DNS=192.168.2.4 9.9.9.9 8.8.8.8

# Guarda y reinicia el servicio.
sudo systemctl restart systemd-resolved

Ubuntu Server

De nuevo en el Ubuntu Server es necesario añadir unos paquetes.

  1. Se Instalan los paquetes necesarios (solo Ubuntu)
sudo apt -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

Cliente

Ya en el cliente.

  1. (Opcional) Descubrir dominio.
sudo realm discover aso.local
  1. Se añade al dominio.
sudo realm join -U Administrator aso.local

Nota

Al reiniciar el cliente se podrá iniciar sesión como usuario del dominio.