Unir un cliente Ubuntu 18.04 a un dominio de Active Directory sobre Windows Server 2016 (parte I)

Publicado por P. Ruiz en

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 cubriremos en el artículo de hoy, resolverá los siguientes aspectos:

  • Configurar las características del equipo.

  • Instalar el software necesario.

  • Configurar Kerberos.

  • Comprobar el funcionamiento de Kerberos.

  • Unir el cliente al dominio.

Y la segunda, que resolveremos en un próximo artículo, se encargará de lo siguiente:

  • Configurar SSSD.

  • Ajustar el comportamiento de PAM para iniciar sesión con usuarios del dominio.

  • Convertir al administrador del dominio en administrador local.

  • Reiniciar el equipo y comprobar el inicio de sesión gráfico.

  • Iniciar sesión con cualquier cuenta del dominio.

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 será asegurarnos de que de que el cliente puede hacer ping al servidor utilizando su nombre. Como en nuestro caso no estamos utilizando Windows Server con una configuración DNS completa, podemos limitarnos a configurar el archivo hosts del equipo Ubuntu con el fin de conseguir el mismo objetivo.

Por lo tanto, comenzamos editando en archivo /etc/hosts con el editor de textos nano.

sudo nano /etc/hosts

Como es lógico, debemos utilizar privilegios administrativos

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-001

Lo siguiente será añadir una nueva línea que relacione la dirección IP del servidor con su nombre de equipo, incluyendo también el nombre completo dentro del dominio:

192.168.1.5     server-2016-a server-2016-a.somebooks.local

Cuando estemos listos, pulsamos la combinación de teclas Ctrl + X para cerrar el editor de textos.

Cuando el editor nos pregunte si queremos guardar los cambios, pulsamos la tecla S.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-002

… Y, a continuación, pulsamos la tecla Intro para conservar el mismo nombre de archivo.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-003

Finalmente, para comprobar que los cambios han tenido éxito, probamos a ejecutar la orden ping con el nombre del servidor:

ping server-2016-a

… Y comprobamos que funciona correctamente.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-004

Instalar el software necesario

Una vez que estamos seguros de que la comunicación entre el cliente y el servidor funciona correctamente, el siguiente paso consistirá en instalar el software necesario para realizar la tarea.

Para lograrlo, comenzaremos por actualizar el sistema operativo con las últimas versiones de los paquetes disponibles en los repositorios. Algo tan sencillo como utilizar la siguiente orden:

sudo apt update && sudo apt upgrade

La escribimos y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-005

Al hacerlo, recibiremos un detalle con todos los paquetes que van a actualizarse y un resumen final con el numero de paquetes que se actualizarán, los paquetes nuevos que se instalarán y los que se eliminarán de la instalación. También se incluye la cantidad de información que se descargará de los repositorios y la capacidad final que se utilizará en nuestro disco duro.

Si estamos de acuerdo con todo, pulsaremos la tecla S para continuar.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-006

Cuando acabe la actualización, estaremos listos para instalar los paquetes que necesitamos. En particular, añadiremos los siguientes paquete:

  • 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.

  • heimdal-clients: Se trata de una implementación libre de Kerberos 5 creada con la intención de ser compatible con el protocolo Kerberos implementado por el MIT.

  • msktutil: La utilidad que obtiene y administra los keytabs de Kerberos en un entorno de Microsoft Active Directory.

    Un keytab es un archivo que contiene parejas de entidades de seguridad y claves cifradas de Kerberos. Se utilizar para autenticarse en un sistema remoto que use el protocolo Kerberos.

Para instalar todos los paquetes en una sola operación, sólo tenemos que utilizar la siguiente orden:

sudo apt install sssd heimdal-clients msktutil

Como antes, escribimos la orden y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-007

También ahora nos aparece un listado con todos los paquetes que van a actualizarse y un resumen final con el numero de paquetes que se actualizarán, los paquetes nuevos que se instalarán y los que se eliminarán de la instalación. Y de nuevo se incluye la cantidad de información que se descargará de los repositorios y la capacidad final que se utilizará en nuestro disco duro.

De nuevo, si estamos de acuerdo con todo, pulsaremos la tecla S para continuar.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-008

Cuando llegue el momento de instalar Kerberos, nos preguntará por el reino (realm en inglés). En realidad, se refiere al nombre del dominio al que vamos a unirnos. Para nuestro ejemplo, debemos escribir el nombre del dominio que hemos venido usando para 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-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-009

Después, el instalador nos solicita el nombre de los servidores de Kerberos para nuestro reino. En este caso, se refiere al controlador de dominio, que en nuestro ejemplo se llama server-2016-a, por lo que procedemos a escribir su nombre.

Como antes, una vez relleno el valor correcto, nos desplazamos hasta Aceptar y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-010

Por último, nos solicita el nombre del equipo que actúa como servidor administrativo para la autenticación en el dominio. Como en nuestro caso es el mismo, volvemos a escribir el nombre del servidor.

… Y de nuevo nos desplazamos hasta Aceptar y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-011

Después de esto, la instalación continuará un poco más, pero sin necesitar que aportemos más información.

Solo tenemos que esperar hasta que se complete.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-012

Configurar Kerberos

Con la información que hemos aportado durante la instalación (el nombre del dominio, o reino en la terminología Kerberos y el nombre del equipo que actúa como controlador de dominio), debería ser suficiente. Sin embargo, debemos añadir  más información a la configuración de Kerberos para que se comporte de forma adecuada en el dominio.

Sin embargo, comenzaremos por cambiar el nombre del archivo de configuración, para poder volver a los parámetros originales si fuese preciso. Y lo conseguiremos con una orden como esta:

sudo mv /etc/krb5.conf /etc/krb5.conf.default

La escribimos y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-013

A continuación, volveremos a utilizar el editor nano para crear un nuevo archivo de configuración:

sudo nano /etc/krb5.conf

Como antes, solo tenemos que escribir la orden y pulsar la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-014

Al hacerlo, conseguiremos un documento vacío, donde escribiremos lo siguiente:

[libdefaults]
default_realm = SOMEBOOKS.LOCAL
rdns = no
dns_lookup_kdc = true
dns_lookup_realm = true

[realms]
SOMEBOOKS.LOCAL = {
kdc = server-2016-a.somebooks.local
admin_server = server-2016-a.somebooks.local
}

Cuando estemos listos, pulsamos la combinación de teclas Ctrl + X para cerrar el editor de textos.

Cuando el editor nos pregunte si queremos guardar los cambios, pulsamos la tecla S.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-015

… Y, a continuación, pulsamos la tecla Intro para conservar el mismo nombre de archivo.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-016

Comprobar el funcionamiento de Kerberos

Para comprobar que la autenticación en el dominio, utilizando Kerberos, se produce de forma satisfactoria, utilizaremos el comando kinit y la cuenta Administrador del propio dominio:

kinit administrador

Si todo va bien, Kerberos nos pedirá la contraseña de la cuenta. Observa que nos muestra el nombre dns de la cuenta (Administrador@SOMEBOOKS.LOCAL), lo que nos permite confirmar que se trata de la cuenta correcta.

Escribimos la contraseña y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-017

Si la salida no nos ofrece ningún tipo de error, es porque el proceso de autenticación ha funcionado correctamente. No obstante, utilizaremos el comando klist para estar completamente seguros.

klist muestra la información sobre el ticket de autenticación, incluida la fecha y hora de concesión, de caducidad, la cuenta y el dominio que estamos empleando.

klist

Ejecución del comando Ejecución del comando klist..

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-018

Unir el cliente al dominio

Una vez que nos hemos asegurado del funcionamiento de kerberos, la comprobación definitiva será unir el equipo al dominio de Windows Server 2016. Para lograrlo, usaremos el comando msktutil con la siguiente sintaxis:

 msktutil -N -c -b 'CN=COMPUTERS' -s SOMEBOOKS-DESK/somebooks-desk.somebooks.local -k my-keytab.keytab --computer-name SOMEBOOKS-DESK --upn SOMEBOOKS-DESK$ --server server-2016-a.somebooks.local --user-creds-only

Como el comando es un poco largo, haremos un resumen con la función de los argumentos empleados, para que entiendas lo que estamos haciendo:

  • -N le dice al comando que no realiza búsquedas DNS inversas para canonizar el nombre del dominio (recuerda que no hemos configurado la red para utilizar el DNS del servidor).
  • -c indica que debe crearse un keytab predeterminado.
  • -b establece el contenedor donde debe crearse la cuenta para el equipo dentro del dominio. En nuestro caso será dentro de COMPUTERS.
  • -s incluye el equipo responsable de servicio para añadir a la cuenta. tiene la forma <servicio>/<nombre de host>.En nuestro caso, será SOMEBOOKS-DESK/somebooks-desk.somebooks.local.
  • -k contiene el nombre del archivo que se usará para almacenar el keytab. Para nuestro ejemplo, será my-keytab.keytab.
  • –computer-name indica el nombre con el que se creará la cuenta del equipo en el directorio.
  • –upn establece el nombre de usuario principal del equipo. En su lugar usaremos el nombre del equipo, lo que se especifica incluyéndolo seguido de un carácter $ como hemos incluido en nuestro ejemplo (SOMEBOOKS-DESK$).
  • –server identifica al controlador de dominio. En nuestro caso, server-2016-a.somebooks.local.
  • –user-creds-only fuerza a que se utilicen las credenciales de usuario. En este caso, las de kinit.

Una vez escrito el comando, pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-019

Como en el argumento -s hemos incluido el nombre DNS del equipo (para nuestro ejemplo, somebooks-desk.somebooks.local), a continuación, repetiremos la misma orden usando en nombre NetBIOS (en nuestro caso, somebooks-desk):

 msktutil -N -c -b 'CN=COMPUTERS' -s SOMEBOOKS-DESK/somebooks-desk -k my-keytab.keytab --computer-name SOMEBOOKS-DESK --upn SOMEBOOKS-DESK$ --server server-2016-a.somebooks.local --user-creds-only

Volvemos a escribir el comando y pulsamos de nuevo la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-020

Para completar la tarea, eliminaremos los tickets de autorización de kerberos que activamos al ejecutar kinit. Para lograrlo, basta con utilizar el comando kdestroy.

 kdestroy

Escribimos el comando y pulsamos la tecla Intro.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-021

Por último, podemos comprobar que el equipo se ha unido correctamente al dominio usando la herramienta Usuarios y equipos de Active Directory en el controlador de dominio de Windows Server.

En el contenedor Computers debe aparecer el equipo Ubuntu que acabamos de incorporar.

Unir-un-cliente-Ubuntu-1804-a-un-dominio-de-Active-Directory-sobre-Windows-Server-2016-022

Con esto, damos por concluida la primera parte de este artículo, pero no olvides que la tarea no estará completa hasta que no apliques el resto de los cambios, que te explicaremos dentro de unos días. Solo te pedimos un poco de paciencia…