Ldap (Lightweigth directory acces protocol) es el protocolo utilizado para poder conectar clientes a una base de datos distribuida de forma que se realicen todas las operaciones de forma centralizada. Para ello se suele utilizar soluciones privadas como ActiveDirectory, pero hay alternativas libres como OpenLdap en el mundo Linux. Lo malo que tiene este tipo de soluciones es su alta complejidad y su escasa integración directa con sistemas heterogéneos. Sin embargo los sistemas samba otorgan posibilidad de configuración sencilla incluso en entornos heterogéneos.

Inicialmente samba está creado para realizar comunicación entre sistemas de red NFS y SMB y garantizar la compartición de ficheros por usuarios. Pero tiene la posibilidad generar un Domain Controller al uso mediante configuraciones por defecto. Para ello se necesita lo siguiente:

  • samba: el cual permite la compartición y acceso a recursos a través de la red por usuario
  • ntp: el cual permite la sincronización horaria entre máquinas de la misma red
  • krb5-user : el cual me permite autenticar usuarios dentro de un servicio de red
  • krb5-config: el cual permite la configuración de Kerberos
  • winbind: el cual permite resolver información de usuarios y grupos de entornos NT Windos
  • libnss-winbind: el cual permite unir el sistema de resolución de nombres con la autenticación de usuarios en sistemas Windows
  • dns: al utilizar samba como controlador de dominio se utilizará un servidor interno, por lo que no se necesita la instalación – configuración de un servidor adicional como por ejemplo bind

El escenario en el que se montará el ejemplo es el siguiente

Ubuntu Server 18.04:

  • IP: 192.168.10.2 static
  • IP: dhcp (nat)
  • Nombre: UbuntuServer

Para poder preparar el entorno lo primero necesario es configurar la red para que se apunte al dns existente y se resuelva el nombre correcto. Para ello en la configuración de red de la tarjeta estática se añade la configuración correspondiente (/etc/network/interfaces)

auto eth0
iface eth0 inet dhcp
Dns-namespace	8.8.8.8.8

auto eth1 
iface eth1 inet static
address 192.168.10.2
netmask 255.255.255.0
Dns-search	develop.local
Dns-namespace	192.168.10.2

Lo siguiente es indicar en el fichero /etc/hosts las resoluciones de nombre completa, indicando el nombre FQDN complete

127.0.0.1	UbuntuServer.develop.local		develop.local	develop
192.168.10.2	UbuntuServer.develop.local		develop.local	develop

Lo siguiente es instalar el paquete ntp para poder sincronizar el horario de todas las máquinas que se conectan al servidor.

apt-get install ntp

Lo siguiente es instalar el servicio samba con sus dependencias. Una de las herramientas es samba-tool la cual permite crear una red con controlador de dominio. Para eso se introduce el siguiente comando

apt-get samba krb5-config krb5-user winbind libnss-winbind

La instalación de los paquetes de Kerberos pedirá la configuración del REALM con el que va a trabajar y el nombre de los servidores que actuaran como resolutoria de nombres DNS y de cuentas Kerberos

Antes de continuar es obligatorio comprobar la integridad del fichero de configuración de samba /etc/samba/smb.conf y realizar un renombrado del fichero mediante el comando mv /etc/samba/smb.conf /etc/samba/smb.conf.copia

mv /etc/samba/smb.conf /etc/samba/smb.conf.copia

El motivo de realizar esto es que cuando se ejecute el comando para promocionar el servidor toda la configuración del fichero cambiará

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

Este comando pedirá un nombre de dominio, introducido en MAYUSCULAS, un nombre de red, un tipo de servidor, un servidor dns y un servidor que realice las resoluciones del exterior. Por último pedirá la contraseña del usuario Administrador.

Es importante saber que la opción –use-rcf2307 se utiliza para crear atributos POSIX y crear la información de NIS para administrar usuarios Unix.

Una vez hecho esto se podrán crear, modificar usuarios, grupos gpos, etc… desde el comando samba-tool

Para que tanto Kerberos como todas las resoluciones sean correctas se debe:

  • copiar el fichero de kerberos generado en el paso anterior a /etc: este fichero permite que el servicio Kerberos funcione junto a samba
sudo cp /var/lib/samba/private/krb5.conf /etc/
  • modificar el fichero de resolución de nombres, ya que los nombre se resolverán mediante el dns interno de samba
# ya que es un enlace al fichero de resolución 
sudo mv /etc/resolv.conf /etc/resolv.conf.old
sudo nano /etc/resolv.conf
# con el siguiente contenido
nameserver 127.0.0.1
domain develop.local
  • desactivar y deshabitar los servicios por defecto de samba y resolución de nombres
sudo systemctl stop smbd nmbd winbind systemd-resolved
sudo systemctl disable smbd nmbd winbind systemd-resolved
  • habilitar y arrancar el servicio de samba-ad-dv para que el servidor actúese como controlador de dominio
sudo systemctl enable samba-ad-dc
sudo systemctl start samba-ad-dc