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.

La tarea no es muy complicada, pero sí un poco larga. Por ese motivo, la dividiremos en dos partes. La primera, que la 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 la 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.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-001

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.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-002

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.

Cuando hayamos terminado, hacemos clic sobre el botón Guardar.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-003

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

Como se trata de una tarea administrativa, deberemos escribir la contraseña de usuario.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-004

Cuando se abra el editor, localizamos una línea que comienza con la palabra hosts:

Si te fijas, la palabra dns se encuentra al final de la lista.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-005

La solución a nuestro problema es tan sencilla como poner dicha palabra antes que mdns4_minimal, tal y como muestra la siguiente imagen.

Cuando hayamos terminado, guardaremos los cambios y cerraremos la ventana.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-006

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.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-007

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

Escribimos, o copiamos, la orden anterior y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-008

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.

Si estamos de acuerdo con que se continúe con la instalación, sólo tenemos que pulsar la tecla S.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-009

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.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-010

Cuando lo hagamos, el proceso de desempaquetado e instalación de paquetes durará un momento más.

Sólo tenemos que seguir esperando.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-011

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

Escribimos, o copiamos, la orden anterior y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-012

A continuación, localizamos el apartado [libdefaults].

… Aunque suele estar al principio del archivo

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-013

Y añadimos los dos valores anteriores:

ticket_lifetime = 24h # 
renew_lifetime = 7d

Cuando hayamos guardado los cambios, podemos cerrar la ventana.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-014

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

Como antes, escribimos, o copiamos, la orden anterior y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-015

Poco después, tendremos el contenido del archivo en pantalla.

Ahora, deberemos situarnos en el apartado [global].

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-016

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.

Cuando hayamos guardado los cambios, estaremos listos para cerrar la ventana.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-017

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 

De nuevo, escribimos, o copiamos, la orden anterior y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-018

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.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-019

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 

Ejecutamos ambos comandos, exactamente como los hemos incluido arriba.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-020

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

Escribimos, o copiamos, la orden anterior y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-021

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

Comprobamos el contenido del archivo.

Unir-un-cliente-Ubuntu-16.04-al-dominio-Windows-Server-2016-022

… 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…