[TUTORIAL] Samba4: Controlador de dominio + Active directory

Este es una especie de tutorial que me curré para la configuración de samba 4 en un equipo con Ubuntu, de forma que pueda actuar como servidor DNS + controlador de dominio, siendo una buena alternativa libre a Windows Server.

También es buena opción para a nivel "casero" tener un servidor donde centralizar todos los datos y aplicar reglas como la de redirección de carpetas en los equipos clientes...el único problema que he encontrado ha sido en el tema de permisos...por ejemplo desde un usuario en el equipo cliente no podía restringir el acceso a los datos de otro usuario. A ver si alguien se anima a probarlo y encuentra soluciones.

Me gustaría compartirlo con vosotr@s por si os gustaría probarlo y proponer mejoras, espero que os sirva de ayuda.

Introducción:
En este proyecto vamos a explicar la forma de instalar y configurar un servidor que actúe como
controlador de dominio e implemente Active Directory, de forma que lo podamos tener en cuenta
como una alternativa libre a Windows Server.

Para ello contaremos con una distribución GNU/Linux como Ubuntu Server 10.10, samba4 y bind9.
Para nuestro propósito vamos a utilizar la siguiente configuración:


Configuración inicial:
Nombre dominio: prueba.local
Administrador dominio: Administrator/P@ssword

Ordenador servidor:
Nombre de equipo: Servidor
Dirección IP: 192.168.1.100
Sistema operativo: Ubuntu 10.10
Administrador: root/P@ssword

Ordenador cliente:
Nombre de equipo: Cliente
Dirección IP: 192.168.1.120
Sistema operativo: Windows XP Profesional
Administrador: Administrador/P@ssword


Instalación:
Introducimos en nuestro ordenador servidor el disco de Ubuntu 10.10, nos aseguramos que en la
bios esté configurada la opción para arrancar desde el lector de CD y observamos cómo se inicia la
instalación de Linux.

Primero elegimos nuestro idioma preferido y le damos a la opción Instalar Ubuntu Server.
El asistente de instalación se inicia y tenemos que elegir nuestro territorio y origen y distribución de
teclado.

Si el ordenador no está conectado a la red, o no existe un servidor DHCP el instalador nos avisará
de ello y le tendremos que dar a configurar la red manualmente.

Nuestro servidor usará la IP 192.168.1.100, la máscara de red 255.255.255.0 y nuestra puerta de
enlace para salir a Internet será 192.168.1.1 (dirección IP del router).

El servidor DNS seremos nosotros mismos, así que en direcciones de servidores de nombres
ponemos la dirección de loopback y como DNS secundario utilizaremos el de google, quedando de
la siguiente forma: 127.0.0.1, 8.8.8.8.

Después elegimos el nombre que le vamos a dar a la máquina, en nuestro caso vamos a llamarla
Servidor y afirmamos nuestra disposición horaria.

A continuación debemos de realizar el particionado del disco. En nuestro caso disponemos de un
disco duro de 80 GB y una memoria RAM de 1 GB por lo que seleccionamos el tipo de
particionado manual y configuramos 3 particiones:

- La primera partición de tipo primaria en la que montaremos el directorio raiz / con un
sistema de archivos ext4 de tamaño 10 GB que será utilizada para guardar el Sistema
Operativo y los programas.
- La segunda partición de tipo lógica será de intercambio (SWAP) y será del mismo
tamaño que nuestra memoria RAM, 1GB.
- La tercera partición de tipo lógica montará el directorio /home con un sistema de
archivos ext3 en el que se guardarán todos los archivos de los usuarios clientes de la red
y será del tamaño libre restante, 69 GB.

Confirmamos las particiones y elegimos el nombre del nuevo usuario (Usuario), su alias (usuario) y
su contraseña* (usuario) y repetimos la contraseña (usuario). Decimos que sí queremos usar
contraseña débil y que no queremos cifrar la carpeta personal.

La información de proxy la dejamos en blanco ya que no vamos a utilizarlo y posteriormente
elegimos la opción sin actualizaciones automáticas, ya que actualizaremos el sistema manualmente.
Cuando nos pregunte los programas que deseamos instalar (servidor DNS, servidor de impresión,
servidor de archivos, etc…) no seleccionamos ninguno ya que todo el software que necesitemos lo
instalaremos manualmente.

Finalmente aceptamos instalar el cargador de arranque GRUB y cuando nos aparezca el aviso de
instalación completada, retiramos el CD y le damos a continuar.


Configuración:
Una vez reiniciado el equipo, nos logueamos con la cuenta usuario creada anteriormente.

Para poder trabajar como superusuario, tenemos que poner contraseña* a root: sudo passwd root.
Confirmamos la contraseña de usuario y escribimos la nueva contraseña de root que será P@ssword
y la volvemos a escribir.

Ahora salimos con el comando exit y accedemos al sistema como root.

Primero instalaremos el software necesario:
apt-get update
apt-get install samba4 samba4-clients bind9 vim

Hacemos una copia de la configuración de samba:
mv /etc/samba/smb.conf{,.old}

Creamos la configuración de samba 4 (recordando que el nombre completo de nuestro dominio es
prueba.local, el nombre netbios es prueba y la contraseña* del administrador del dominio es
P@ssword):
LD_PRELOAD=/usr/lib/libdcerpc.so.0.0.1 /usr/share/samba/setup/provision --realm=prueba.local
--domain=PRUEBA --adminpass=P@ssword --server-role='domain controller'

Ahora vamos a modificar el script de inicio de samba ya que este no verifica la existencia del
directorio de samba en /var/run (tenemos que añadir lo que está en cursiva):
vim /etc/init.d/samba4
# /etc/init.d/samba4
...
log_daemon_msg "Starting Samba 4 daemon" "samba"
if [ ! -d $(dirname $SAMBAPID) ]; then
mkdir -p $(dirname $SAMBAPID)
fi
if !...

Vamos a crear una versión local de los programas de samba que cargarán la librería que falta:
cat > /usr/local/sbin/samba
#!/bin/sh
LD_PRELOAD=/usr/lib/libdcerpc.so.0.0.1 /usr/sbin/$(basename $0)
Creamos dos enlaces simbólicos:
ln -s /usr/local/sbin/samba{,_dnsupdate}
ln -s /usr/local/sbin/samba{,_spnupdate}

Arrancamos samba:
/etc/init.d/samba4 start

Y realizamos una prueba para ver si funciona:
smbclient -UAdministrator –Llocalhost
Password for [SAMDOM\Administrator]: P@ssword
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.0.0alpha12-GIT-UNKNOWN)
ADMIN$ Disk DISK Service (Samba 4.0.0alpha12-GIT-UNKNOWN)
REWRITE: list servers not implemented

Si obtenemos esta respuesta significa que samba está bien configurado.

En este punto vamos a configurar bind para que nuestro servidor DNS funcione correctamente:
cat >> /etc/bind/named.conf.local
include "/var/lib/samba/private/named.conf";

Permitimos que bind pueda leer sobre los ficheros de configuración de samba añadiendo estas dos
líneas al final del siguiente fichero:
vim /etc/apparmor.d/usr.sbin.named
# /etc/apparmor.d/usr.sbin.named
...
/var/lib/samba/private/* rw,
/var/lib/samba/private/dns/* rw,
}

Reiniciamos apparmor y bind:
/etc/init.d/apparmor reload
/etc/init.d/bind9 restart

Vamos a hacer unas pruebas para verificar la correcta configuración:
host -t SRV _ldap._tcp.prueba.local.
_ldap._tcp.prueba.local has SRV record 0 100 389 Servidor.prueba.local.
host -t SRV _kerberos._udp.prueba.local.
_kerberos._udp.prueba.local has SRV record 0 100 88 Servidor.prueba.local.
host -t A Servidor.prueba.local.
Servidor.prueba.local has address 192.168.1.100

Si obtenemos estas respuestas a estos tres comandos, la configuración ha ido bien y ya solo nos
queda mover la configuración de Kerberos a su sitio:
cp /var/lib/samba/private/krb5.conf /etc/

De esta forma ya deberíamos tener nuestro servidor listo para funcionar.
Pues deberías modificar el nombre del hilo o puede que la mayoría de gente que pudiese tener interés pasen de el.
Muy buen aporte!

Saludos
2 respuestas