Unir un cliente Ubuntu 16.04 al dominio Windows Server 2016 (Parte I)
Una de las ventajas de GNU/Linux es su capacidad para adaptarse a multitud de contextos. Un ejemplo de ello es el artículo de hoy, donde aprenderemos a unirlo, como cliente, a un dominio de Windows Server 2016.
En particular, lo uniremos al dominio que hemos venido creando y configurando a lo largo de diferentes artículos desde hace un tiempo.
Antes de poner en práctica el contenido de este artículo deberás tener instalado Active Directory en un equipo con Windows Server 2016. Si aún no lo tienes, puede resultarte de ayuda el contenido de los siguientes artículos:
- Instalar un dominio desde la interfaz grafica de Windows Server 2016 (parte 1)
- Instalar un dominio desde la interfaz grafica de Windows Server 2016 (parte 2)
- Crear una cuenta de usuario del dominio en la interfaz gráfica de Windows Server 2016
- Operaciones frecuentes sobre cuentas de usuario en un dominio Windows Server 2016 (Parte I)
- Operaciones frecuentes sobre cuentas de usuario en un dominio Windows Server 2016 (Parte II)
La tarea no es muy complicada, pero sí un poco larga. Por ese motivo, la dividiremos en dos partes. La primera, que cubriremos en el artículo de hoy, resolverá los siguientes aspectos:
- Configurar las características del equipo.
- Ajustar la resolución de nombres.
- Instalar el software necesario.
- Configurar Kerberos.
- Configurar Samba.
- Configurar SSSD.
Y la segunda, que resolveremos en un próximo artículo, se encargará de lo siguiente:
- Añadir el nombre dns del equipo al archivo host.
- Unir el equipo al dominio.
- Configurar Ubuntu para iniciar sesión con un usuario del dominio.
- Ajustar el comportamiento de la interfaz gráfica
- Autenticarnos en el dominio desde la interfaz gráfica.
De cualquier modo, el proceso debe entenderse como un todo y los pasos deberán completarse en su totalidad, y en el orden indicado, para obtener los resultados esperados. Así que, si estás listo, comencemos…
Configurar las características del equipo
Lo primero que haremos será asegurarnos de que el equipo se identifica en la red con un nombre adecuado al uso que vamos a hacer de él.
Ya dedicamos un artículo, hace un tiempo, a esta tarea. Me refiero a Proporcionar un nuevo nombre para el equipo en Ubuntu 14.04 LTS que, si bien no se refiere exactamente a la versión de Ubuntu que utilizaremos en este caso (la 16.04 LTS), se resuelve exactamente de la misma forma.
Para nuestro ejemplo, nombraremos al equipo como cliente-lnx-01.
Una vez completada la tarea, podemos utilizar el siguiente comando para asegurarnos de que el cambio ha sido correcto:
hostname
En realidad, gracias a la configuración predeterminada de Ubuntu, ya podemos comprobarlo en la barra de título de la ventana de Terminal y en el prompt que nos muestra ésta.
En cuanto a la configuración de la red, como mi red local aún no trabaja con direcciones IPv6, comenzaré por deshabilitarlas para ahorrar algunos recursos del sistema.
Para lograrlo, hacemos clic sobre la solapa Ajustes de IPv6 y, en la entrada Método, elegimos Ignorar.
En lo referente a los Ajustes de IPv4, en la lista Método, mantendremos el valor Automático (DHCP), que será probablemente el que aparezca como predeterminado. Si no fuese así, desplegaríamos la lista y lo elegiríamos.
Después, en el apartado Servidores DNS adicionales, incluiremos la dirección IP del equipo de la red que actúa como controlador de dominio (para mi ejemplo, 192.168.1.5).
Más abajo, en el cuadro Dominios de búsqueda adicionales, escribimos el nombre del dominio al que queremos unir el equipo. Para nuestro ejemplo, somebooks.local.
Si necesitas ayuda con la configuración de la red, puedes recurrir a nuestro artículo Configurar la red en la interfaz gráfica de Ubuntu 16.04 LTS.
Ajustar la resolución de nombres
Cuando se trata de localizar a otro equipo en la red, la configuración predeterminada de Ubuntu con respecto a la resolución de nombres establece que primero se consulte el archivo /etc/hosts, después, si la dirección a buscar acaba en .local, se aplique Multicast DNS 4 (mDNS4), un método con una semántica similar a DNS pero que no requiere de un servidor DNS en la red. Por último, si las respuestas anteriores fuesen negativas, se recurriría a la búsqueda de un servidor DNS.
Dado que nuestro dominio termina en .local (somebooks.local), este comportamiento predeterminado hará que el equipo cliente no pueda encontrar al servidor.
Para resolverlo, basta con editar el archivo que contiene la configuración de resolución de nombres, que se encuentra en /etc/nsswitch.conf y cambiemos la línea correspondiente. Y para lograrlo, recurriremos al editor gEdit:
sudo gedit /etc/nsswitch.conf
Cuando se abra el editor, localizamos una línea que comienza con la palabra hosts:.
La solución a nuestro problema es tan sencilla como poner dicha palabra antes que mdns4_minimal, tal y como muestra la siguiente imagen.
Por último, para comprobar que todo es correcto, bastará con hacer ping al servidor, pero utilizando su nombre DNS en lugar de su dirección IP:
ping somebooks.local
Si hay comunicación entre el cliente y el servidor, comenzarán a aparecer líneas indicando el tiempo que tardan los paquetes ICMP en ir y volver del servidor.
Instalar el software necesario
Para poder unir un equipo con Ubuntu 16.04 a un dominio Windows Server 2016, necesitamos que estén instalados los siguiente paquetes:
Es muy importante para el correcto funcionamiento de la autenticación con Kerberos que el reloj de los equipos esté debidamente ajustado.
- krb5-user: Es el paquete que permite incorporar en Ubuntu el protocolo estándar Kerberos versión 5. Este protocolo permite la autenticación de ordenadores a través de la red y es el que utilizan de forma predeterminada los equipos servidores de Microsoft.
- samba: Es la implementación, mediante software libre, del protocolo CIFS. Este es el protocolo que utiliza Microsoft para el intercambio de archivos a través de la red.
- sssd (System Security Services Daemon): Administra los mecanismos de autenticación y el acceso a directorios remotos. Sustituye al clásico Winbind aportando más velocidad y estabilidad
- ntp (Network Time Protocol): es el responsable de sincronizar el funcionamiento del reloj interno del sistema de acuerdo con algún servidor horario disponible en Internet.
Puede que alguno de estos paquetes ya se encuentre presente en el equipo (al menos ntp), pero no perdemos nada instalándolos todos. Si alguno de ellos ya está presente, sencillamente no se instalará.
Para realizar la instalación, sólo tenemos que utilizar la siguiente orden:
sudo apt install krb5-user samba sssd ntp
Al hacerlo, el programa nos muestra una serie de dependencias que deberemos satisfacer para completar la instalación, la cantidad de información que se descargará y cuanto espacio ocuparemos en el disco.
Cuando llegue el momento de instalar Kerberos, nos preguntará por el reino (realm en inglés). En realidad, se refiere al nombre del dominio, que debe ser escrito en mayúsculas. Para nuestro ejemplo, debemos escribir el nombre del dominio que hemos venido instalando y configurando en los artículos mencionados al principio: SOMEBOOKS.LOCAL.
Después, pulsamos la tecla de tabulación (Tab) para seleccionar Aceptar y a continuación la tecla Intro.
Cuando lo hagamos, el proceso de desempaquetado e instalación de paquetes durará un momento más.
Configurar Kerberos
Con la información que hemos aportado durante la instalación (el nombre del dominio, o reino en la terminología Kerberos), debería ser suficiente. Sin embargo, es recomendable añadir un par de datos a la configuración de Kerberos para que se comporte de forma adecuada en el dominio:
- ticket_lifetime: indica el tiempo durante el que será válida la autenticación obtenida mediante el servidor Kerberos. En nuestro caso, deberemos establecer su valor a 24 horas.
- renew_lifetime: indica el tiempo durante el que podremos pedir la renovación de una autenticación anterior. Si el tiempo indicado aquí es mayor que el expresado en ticket_lifetime, quien tenga una autenticación válida, podrá renovarla, antes de que este periodo caduque, sin tener que volver a ingresar un nombre de usuario y una contraseña. El valor que estableceremos, en este caso, será de 7 días.
Los valores anteriores deben incluirse en el archivo krb5.conf, dentro del apartado [libdefaults]. Por lo tanto, comenzamos por editar el archivo de configuración, por ejemplo, con el editor gEdit:
sudo gedit /etc/krb5.conf
A continuación, localizamos el apartado [libdefaults].
Y añadimos los dos valores anteriores:
ticket_lifetime = 24h # renew_lifetime = 7d
Configurar Samba
Otro de los componentes de este pequeño puzzle de software que nos permitirá unirnos al dominio de Windows Server es Samba. Y también en este caso, debemos ajustar su comportamiento para que se adapte a los requerimientos del dominio.
La configuración de Samba se guarda en el archivo smb.conf y, para editarlo, volveremos a utilizar el editor gEdit:
sudo gedit /etc/samba/smb.conf
Poco después, tendremos el contenido del archivo en pantalla.
A partir de aquí, comenzamos a realizar los ajustes:
Lo primero será localizar la siguiente variable:
workgroup = WORKGROUP
… Y cambiar su valor por el nombre NetBIOS del dominio al que pretendemos unirnos:
workgroup = SOMEBOOKS
Debajo, incluiremos una serie de valores que serán imprescindibles para la autenticación:
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = SOMEBOOKS.LOCAL
security = ads
Por supuesto, deberás cambiar el nombre NetBIOS y el nombre DNS del dominio por los que estés utilizando en tu caso.
El resultado final debe ser similar al que se muestra en la siguiente imagen.
Configurar SSSD
La principal diferencia entre configurar SSSD y los dos casos anteriores es que ahora no tenemos un archivo de configuración predeterminado. Pero no te preocupes sólo tenemos que crearlo. Y la forma de conseguirlo será idéntica: utilizar el editor de textos gEdit:
sudo gedit /etc/sssd/sssd.conf
La diferencia será que, ahora, el área de trabajo del editor estará en blanco. Pero no te preocupes, sólo tienes que copiar las siguientes líneas:
[sssd]
services = nss, pam
config_file_version = 2
domains = SOMEBOOKS.LOCAL
[domain/SOMEBOOKS.LOCAL]
id_provider = ad
access_provider = ad
override_homedir = /home/%d/%u
Aunque no voy a entrar en detalles sobre la estructura del archivo, sí te diré que la última variable (override_homedir) especifica la ruta local donde se guardarán los archivos del perfil de usuario, para los usuarios del dominio con los que iniciemos sesión. La variable %d identifica al nombre del dominio y, la variable %u el nombre la cuenta de usuario. Así, si iniciáramos sesión con en usuario walt del dominio SOMEBOOKS.LOCAL, la ruta de su directorio de perfil sería /home/SOMEBOOKS.LOCAL/walt. La idea es que los perfiles de usuario del dominio se mantengan separados del resto.
Como es lógico, si quisieras cambiar el lugar donde se guardan estos perfiles, sólo tendrías que modificar el contenido de esta línea.
Cuando hayamos completado el archivo, debemos asegurarnos de guardar los cambios antes de cerrar la ventana.
Antes de abandonar el archivo sssd.conf, deberemos asegurarnos de que su propietario y sus permisos son los adecuados. Piensa que acabamos de crearlo con la cuenta de usuario con la que estamos trabajando. Por lo tanto, éste usuario será su propietario. Sin embargo, el archivo sssd.conf debe ser propiedad del usuario root y del grupo root. Por lo tanto, lo primero que haremos será cambiarlo:
sudo chown root:root /etc/sssd/sssd.conf
Además, el propietario debe tener permisos de lectura y escritura sobre el archivo, y para lograrlo, sólo tenemos que escribir lo siguiente:
sudo chmod 600 /etc/sssd/sssd.conf
Por último, durante la instalación de SSS, ha debido modificarse el archivo nsswitch.conf que, como recordarás del principio, es el archivo que contiene la configuración para la resolución de nombres.
En este momento, sencillamente vamos a asegurarnos que ésto ha sido así, por lo que vamos a editar de nuevo el archivo:
sudo gedit /etc/nsswitch.conf
Cuando lo tengamos en pantalla, debemos asegurarnos de que se se hace referencia a sss, al menos, en las líneas que hacen referencia a passwd, group, netgroup y sudoers. Su aspecto será así:
passwd: compat sss
group: compat sss
...
netgroup: nis sss
sudoers: files sss
… Y si es correcto, ya podemos cerrar la ventana del editor.
Con esto, damos por concluida la primera parte de este artículo, pero no olvides que la tarea no estará completa hasta que no completes el resto del proceso, que te explicaremos dentro de unos días. sólo te pedimos un poco de paciencia…