Configurar Directorio Activo (Active Directory) en GNU/Linux CentOS 6.3 con Samba 4.0.1

Existió un tiempo en el que poner un servidor de dominio en Windows era algo muy sencillo, emular un Windows NT4 era la cosa más simple del mundo y firmar computadoras con Windows 95 , Windows 98 y Windows ME era simple rápido y fácil. Si no querías pagar las licencias impuestas siempre podías instalar un GNU/Linux con Samba y evitar usar tecnologías de SERVER Microsoft.

Ocurrió que por el 2000 Microsoft cambio las reglas del juego, con el Windows XP y Windows 2000 Server se hizo una integración llamada Directorio Activo, donde ya no solo era un servidor controlador de dominio, sino un sistema formado por el PDC, Listas en directorios (Protocolo Ligero de Acceso a Directorios) Aka LDAP y para rematar un DNS Server. Son más cosas pero esas 3 básicas forman en si el Directorio Activo y en los primeros días era horrible homologar un GNU/Linux a un Servidor Windows 2000, 2003 y 2008 para entrar al mundo del Active Directory. No porque no se pueda, si no por que intentarlo es abrumador llevar a cabo todas las configuraciones necesarias.

Afortunadamente la versión 4.0.0 de Samba hace que esto sea un poco mas sencillo y ahora si me da un artículo para dar los pasos necesarios para convertir tu equipo GNU/Linux en un servidor de dominio con rol de PDC/AD aka (Controlador Primario de Dominio con Directorio Activo)

Los siguientes pasos los hice con un CentOS 6.3 a 64 bits y SAMBA 4.0.1 descargado de su sitio oficial en código fuente para su compilación en el equipo.

1.0 Instalar GNU/Linux 6.3 a 64bits

2.0 Preparar el sistema.

2.1 Deshabilitar SELinux, desactivar los firewall y quitar toda regla iptables filter

2.2 Instalar los paquetes y herramientas necesarias con yum, con darle copiar y pegar a la siguiente línea bastara.

yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils

2.3 Descargar Samba 4.0.X o superior, al momento de redactor este articulo estaba la versión 4.0.1 y la obtuve del siguiente URL

http://www.samba.org/samba/ftp/stable/samba-4.0.1.tar.gz

2.3.1 Preparar el Makefile para compilarlo usando configure y la bandera –enable-selftest.

./configure –enable-selftest

Nota que no doy prefix, dejo que se instale en su ruta por default.

2.4 Crear el smb.conf usando el comando samba-tool, se encuentra /usr/local/samba/bin/ que es el lugar donde estarán los binarios de SAMBA después de la compilación e instalación. En este articulo usare lastdragon como dominio de red y lastdragon.net dominio de directorio activo.
La línea a usar es:

/usr/local/samba/bin/samba-tool domain provision –realm=lastdragon.net –domain=lastdragon –adminpass ‘C@ntraseña1#’ –server-role=dc –dns-backend=BIND9_DLZ

Nota que el parámetro de adminpass es seguido por la contraseña de administrador entre apostrofes, esta contraseña se le asignara al usuario Administrator, usuario que usaras para unir las maquinas con Windows al dominio, la contraseña debe tener obligatoriamente una mayúscula, un numero, un símbolo y al menos 6 caracteres de largo. El nombre de dominio debe ser diferente al HOSTNAME (Nombre) de tu maquina GNU/Linux. Cuando este comando termine de ejecutarse creara el archivo smb.conf en la ruta /usr/local/samba/etc/.

El smb.conf se crea solo y se auto configura, salvo quieras editarlo para compartir alguna carpeta en red. Si no vas a compartir nada puedes dejarlo como te lo entrega el samba-tool y será funcional para el propósito de Active Directory

El contenido del archivo será muy similar a:

[global]
workgroup = lastdragon
realm = lastdragon.net
netbios name = HOSTNAME
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate

[netlogon]
path = /usr/local/samba/var/locks/sysvol/adevya.com/scripts
read only = No

[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No

3.0 Configurando el servicio de DNS Server

3.1 generar la llave

rndc-confgen -a -r /dev/urandom

3.2 editar named.conf en /etc,
El contenido de /etc/named.conf debe ser:

options {
listen-on port 53 { any; };
forwarders {192.168.1.1; };
allow-query { any; };
tkey-gssapi-keytab “/usr/local/samba/private/dns.keytab”;
};
include “/usr/local/samba/private/named.conf”;

nota la ip en forwarders escribo la ip de mi GNU/Linux en este caso es 192.168.1.1

3.2.1 Edita el archivo named.conf en /usr/local/samba/private/

El contenido del archivo /usr/local/samba/private/named.conf debe ser:

# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include “/usr/local/samba/private/named.conf”;

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz “AD DNS Zone” {
# For BIND 9.8.0
database “dlopen /usr/local/samba/lib/bind9/dlz_bind9.so”;

# For BIND 9.9.0
# database “dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so”;
};

3.3 edita resolv.con en /etc

El contenido de /etc/resolv.conf debe ser:

nameserver 127.0.0.1
domain lastdragon.net

Nota la línea de domain, ahí va el dominio de directorio activo que usaras en tu red, yo uso lastdragon.net como lo especifique en el paso 2.4

4.0 Configurando Kerberos

4.1 Editando el archivo krb5.conf en /etc
El contenido del archivo /etc/krb5.conf debe ser:
/etc/krb5.conf

[libdefaults]
default_realm = LASTDRAGON.NET
dns_lookup_realm = false
dns_lookup_kdc = true

Nota la línea de default_realm es LASTDRAGON.NET como lo especifique en el paso 2.4 y le hice de nuevo mención en el paso 3.3

5.0 Instalar NTP
Si abres tu archivo smb.conf que se genero con samba-tool en la línea de servicios encontraras una referencia de ntp_signd, esta característica no la tiene el ntp que incluye la instalación de CentOS por lo que como en samba; habrá que descargar ntp y compilarlo asegurándonos que tenga signd

Yo descargue la versión ntp-4.2.6p5 con el siguiente URL

http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.6p5.tar.gz

5.1 Compilando ntp
al igual que con SAMBA para preparar el Makefile usamos ./configure pero con la bandera que nos interesa, la de signd usando la línea.

./configure –enable-ntp-signd

Nota que no uso prefix, permito que se instale en sus directorios por default.

5.2 Configurando NTP el archivo ntp.conf en /etc

El contenido de /etc/ntp.conf debe ser

server 127.127.1.0
fudge 127.127.1.0 stratum 10
server 0.pool.ntp.org iburst prefer
server 1.pool.ntp.org iburst prefer
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntp
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
restrict default kod nomodify notrap nopeer mssntp
restrict 127.0.0.1
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap nopeer noquery

6.0 Aplicando los permisos finales a los archives de configuración con las líneas.

chown named:named /usr/local/samba/private/dns
chown named:named /usr/local/samba/private/dns.keytab
chmod 775 /usr/local/samba/private/dns

Felicidades hasta aquí ya tienes un servidor de directorio activo, pero recuerda que el samba y el ntp fueron compilados y al no venir en los paquetes RPM de la distribución no están aun reconocidos como servicios del sistema y no arrancaran por si solos, tampoco tendrán un apagado correcto cuando quieras reiniciar o apagar tu servidor. A continuación pondré como integrar samba y ntp como servicios en el sistema operativo.

6.1 Crear el archivo samba en /etc/init.d/

El contenido de /etc/init.d/samba debe ser.

#! /bin/bash
#
# samba4 Bring up/down samba4 service
#
# chkconfig: – 90 10
# description: Activates/Deactivates all samba4 interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down samba4
# Description: Bring up/down samba4
### END INIT INFO
# Source function library.
. /etc/init.d/functions

if [ -f /etc/sysconfig/samba4 ]; then
. /etc/sysconfig/samba4
fi

CWD=$(pwd)
prog=”samba4″

start() {
# Attach irda device
echo -n $”Starting $prog: ”
/usr/local/samba/sbin/samba
sleep 2
if ps ax | grep -v “grep” | grep -q /samba/sbin/samba ; then success $”samba4 startup”; else failure $”samba4 startup”; fi
echo
}
stop() {
# Stop service.
echo -n $”Shutting down $prog: ”
killall samba
sleep 2
if ps ax | grep -v “grep” | grep -q /samba/sbin/samba ; then failure $”samba4 shutdown”; else success $”samba4 shutdown”; fi
echo
}
status() {
/usr/local/samba/sbin/samba –show-build
}

# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status irattach
;;
restart|reload)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart|status}”
exit 1
esac

exit 0

6.2 Crear el archivo ntp en /etc/init.d/

El contenido de /etc/init.d/ntp debe ser

#! /bin/bash
#
# ntp Bring up/down ntp service
#
#chkconfig: – 99 30
#description: Bring up/down ntp
#
### BEGIN INIT INFO
# Provides:
# Should-Start:
# Short-Description: Bring up/down ntp
# Description: Bring up/down ntp
### END INIT INFO
# Source function library.
. /etc/init.d/functions

CWD=$(pwd)
NTPD=/usr/local/bin/ntpd
prog=”ntp”
start() {
# Attach irda device
echo -n $”Starting $prog: ”
$NTPD -p /var/run/ntpd.pid
sleep 2
if ps ax | grep -v “grep” | grep -q $NTPD ; then success $”ntp startup”; else failure $”ntp startup”; fi
echo
}
stop() {
# Stop service.
echo -n $”Shutting down $prog: ”
kill -9 `cat /var/run/ntpd.pid` > /dev/null 2>&1
sleep 2
if ps ax | grep -v “grep” | grep -q $NTPD ; then failure $”ntp shutdown”; else success $”ntp shutdown”; fi
echo
}
# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit 0

6.3 Darles permiso de ejecución

chmod +x /etc/init.d/ntp
chmod +x /etc/init.d/samba

6.4 Con la siguiente secuencia de arranque puedes activar el servicio

/etc/init.d/named start
/etc/init.d/ntp start
/etc/init.d/samba start

Pero si quieres que inicien sin intervención cuando inicie tu servidor ejecuta las siguientes líneas.

chkconfig –levels 35 samba on
chkconfig –levels 35 ntp on
chkconfig –levels 35 named on

7.0 Administrando usuarios en el directorio activo.

Puedes usar el comando smbpass, yo uso pdbedit

Con pdbedit –L puedes listar todos los usuarios registrados en el directorio, tanto usuarios de computadoras, como usuarios humanos. Consulta la ayuda de pdbedit para ver cómo crear, editar o borrar usuarios.

Yo probé uniendo a mi dominio una maquina con Windows 7, no tenia mas equipos a la mano, pero si se une una Windows 7, igual se une un Windows Vista y anteriores. Me falta probar si se une Windows 8 aunque seguramente si se unirá a dominio. El usuario para unir las maquinas a dominio es Administrator, la contraseña es la que se puso en la línea de comando del paso 2.4

Aunque parecen muchos pasos, el 90% de la configuración se resuelve dándole copiar y pegar, solo hay que cambiar donde escribo lastdragon.net, lastdragon y la clave del Administrator

24 Comments

Add a Comment

Comment spam protected by SpamBam