Unir un cliente Ubuntu 18.04 a un dominio de Active Directory sobre 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.
-
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
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.
Finalmente, para comprobar que los cambios han tenido éxito, probamos a ejecutar la orden ping con el nombre del servidor:
ping server-2016-a
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
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.
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
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.
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.
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.
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.
Después de esto, la instalación continuará un poco más, pero sin necesitar que aportemos más información.
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
A continuación, volveremos a utilizar el editor nano para crear un nuevo archivo de configuración:
sudo nano /etc/krb5.conf
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.
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.
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
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.
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
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
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.
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…