Hace un tiempo atrás les hablé sobre cómo podíamos unir Debian 8 a un dominio Samba/AD pues hoy, sin muchos preámbulos hoy pretendo mostrarles cómo unir una máquina con Centos a un dominio Samba/AD.

1. Instalar dependencias

Las dependencias por fortuna están todas en los repositorios. Para instalarlas ejecutamos:

yum install authconfig samba samba-winbind samba-winbind-clients pam_krb5 oddjob \
oddjob-mkhomedir ntpdate

Si durante la instalación de las dependencias nos pide un REALM ponemos cualquiera de todas formas el fichero de autenticación por kerberos lo editaremos más adelante.

2. Sincronizar la hora

Antes de unirnos al dominio es muy conveniente sincronizar la hora de nuestra pc. Esto lo logramos ejecutando:

# Sustituyan uci.cu por la dirección ip del servidor de hora que tengan
# a su disposición los que no radican en la UCI.
ntpdate -u uci.cu && hwclock --systohc

3. Habilitamos e iniciamos servicios vitales

Habilitamos e iniciamos los servicios que son necesarios para la unión al dominio. En este caso son oddjobd, samba y winbind. Oddjobd es un servicios que se encarga de crear nuestros homes automáticamente al momento de loguearnos en el sistemas. De hecho, es la vía recomendada por Red Hat para esto.

systemctl enable oddjobd; systemctl start oddjobd
systemctl enable smb; systemctl start smb
systemctl enable winbind; systemctl start winbind

4. Configurar pam

Ahora comenzamos a sustituir pam_mkhomedir.so por pam_oddjob_mkhomedir.so en cada uno de los ficheros dentro de /etc/pam.d. Esto lo conseguimos con el siguiente comando:

grep -rl pam_mkhomedir.so /etc/pam.d/ | xargs sed -i 's/pam_mkhomedir.so/pam_oddjob_mkhomedir.so/g'

5. Configuramos kerberos, samba, nsswitch y winbind

A diferencia de la cantidad de pasos que debíamos hacer con debian y derivados, en CentOS esto lo hacemos con un simple comando. Solo tienen que sustituir el valor de smbservers por sus servidores de autenticación.

authconfig --disablekrb5 --enablewinbind --enablewinbindauth --smbsecurity=ads \
--smbrealm=UCI.CU --smbworkgroup=UCI \
--smbservers="ucidc1.uci.cu,ucidc2.uci.cu,ucidc3.uci.cu,ucidc4.uci.cu" \
--winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash \
--enablemkhomedir --enablewinbindusedefaultdomain --update

6. Configurar winbind un poquito más

Editamos el fichero /etc/security/pam_winbind.conf, que es donde está la configuración del perfil de autenticación utilizando winbind. Acá podemos restringir quién o quiénes se pueden loguear en nuestro sistema. El fichero debe quedarnos como sigue:

[global]
cached_login = yes
require_membership_of = sec-uci-audit,yaiselhg
mkhomedir = yes

7. Unir al dominio

Al fin!!! :) Luego de tanto ir y venir llegamos al paso final de este “cómo se hace” PERO,  algo que quiero aclarar antes es que si queremos que el nombre de nuestra pc se inserte en el DNS (mipc.example.com) a la hora de unirnos al dominio. Debemos editar el fichero /etc/hosts y agregar una entrada más menos como esta:

# IP FQDC(nombre completo) NOMBRE
10.10.10.10 mipc.example.com mipc

Para unirnos al dominio basta con ejecutar:

sudo net ads join -U yaiselhg # Sustituyan el usuario por el de ustedes

Escriben su contraseña y si todo fue bien ya estamos en el dominio. Si les da algún problema es posible que haya alguna pc con el mismo nombre en el dominio. En ese caso deben cambiarle el nombre a la máquina y volver a intentar.

Finalmente para comprobar si nos unimos correctamente al dominio ejecutamos:

sudo net ads testjoin

Si responde diciendo “Join is OK” es porque todo esta OK, valga la redundancia. Y hasta aquí el tutorial, esto es todo por hoy. Espero que les sea de utilidad.

Nota 1: Pronto agregaré estos pasos al script que les compartí al final del artículo anterior.

join2domain-v0.2.3.tar.gz (569 descargas)

Nota 2: Lo prometido es deuda. Acá les dejé el script que automatiza el proceso descrito en este artículo. Se trata del mismo script que automatiza el proceso para Debian 8.x, Kali Linux 2.x, Ubuntu 14.x, 15.x y 16.x, Linux Mint 17.x y 18.x y, Nova 5.x con soporte incorporado para CentOS 7. Se aceptan reportes de bugs en CodeComunidades (solo UCI) o GitHub. Recomiendo que cada vez que lo vayan a usar entren al artículo y revisen si hay una versión más actualizada. Gracias a todos…