Unir Ubuntu 16 a un dominio de Windows Server con Active Directory

En esta entrada vamos a aprender a unir un sistema GNU/Linux a un dominio creado mediante Windows Server. En este caso vamos a usar máquinas virtuales configuradas en red interna. Por una parte tenemos un Ubuntu 16.04 y por otra un Windows Server 2008 R2.

 
Para ello vamos a necesitar cumplir los siguientes requisitos:

  1. Dominio de Active Directory
    2. DNS apuntando al servidor ( en este caso la 192.168.0.200)
    3. Hora del sistema sincronizada con el controlador del dominio (muy importante para Kerberos).
    4. Instalar los siguientes paquetes: Cliente Kerberos, Samba, SSSD y NTP.

 

Antes de empezar con instalaciones y configuraciones vamos a aclarar lo que vamos a utilizar.

  • Kerberos: Es un protocolo de autentificación segura entre dos ordenadores que están en una red no segura. Proporciona autentificación entre los dos equipos.
  • Samba: Protocolo utilizado para compartir archivos entre Windows y sistemas GNU/Linux.
  • SSSD (System Security Services Daemon): Paquete de software que nos proveé de una serie de demonios para el uso de directorios remotos y además de mecanismos de autentificación.
  • NTP: Protocolo para sincronizar relojes entre sistemas.

 

Para instalar los paquetes nombrados basta con ejecutar este comando:

$ sudo apt install krb5-user samba sssd ntp

Una vez instalado vamos a configurar cada uno de los paquetes instalados paso a paso.

 

Kerberos

Editamos el fichero de configuración de Kerberos (/etc/krb5.conf ) para indicar el dominio y editamos las siguientes líneas.

NTP

Para la sincronización de los relojes simplemente editamos el fichero /etc/ntp.conf y añadimos el nombre del controlador de dominio.

SAMBA

Vamos al fichero de configuración de samba /etc/samba/smb.conf y dejamos [global] de la siguiente manera. En workgroup pondremos el nombre NETBIOS del dominio, en este caso EMPRESA.

SSSD

Modificamos el fichero de configuración /etc/sssd/sssd.conf para que quede de la siguiente manera.

Y le damos los permisos necesarios para que funcione.

 sudo chown root:root /etc/sssd/sssd.conf
 sudo chmod 600 /etc/sssd/sssd.conf

FQDN

En el fichero /etc/hosts añadimos el nombre completo de la máquina que vamos a unir al dominio.

Llegados a este punto tendremos que reiniciar los servicios de Samba y NTP para que se apliquen los cambios.

$ sudo systemctl restart ntp
$ sudo systemctl restart smbd nmbd

 

Unirse al dominio de Active Directory

Una vez se han reiniciado los servicios anteriormente mencionados tendremos que pedir un ticket de autentificación a Kerberos.

$ sudo kinit administrador

Finalmente nos unimos al dominio empresa.com con el comando:

$ sudo net ads join -k

A pesar del error de DNS no nos debemos preocupar ya que todo ha salido bien. Comprobamos en Windows Server que se ha unido correctamente.

Podemos observar el equipo windows y usuario-vb que pertenece a Ubuntu 16. Ahora reiniciamos el servicio de sssd para que pueda validar ususarios.

$ sudo systemctl restart sssd

 

Vemos como podemos validarnos como el usuario administrador del dominio:

Además, para que quede más claro que el usuario administrador no pertenece a una cuenta local de Ubuntu y que pertenece al dominio veremos el fichero /etc/passwd.

Cabe destacar que con el usuario administrador en la máquina Ubuntu no podremos ejecutar sudo ya que no es una cuenta que tenga privilegios en el sistema.

Crear $HOME para cada usuarios

Para ello tenemos que activar un módulo PAM que se encargará de generar el $HOME cada vez que el usuario inicie sesión. Vamos al fichero de configuración /etc/pam.d/common-session y añadimos esta línea después de pam_unix.so.

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

Habilitar log in

Es probable que al acceder de la manera gráfica nos encontremos con el siguiente problema:

Como vemos no tenemos opción a registrarnos con otros usuarios que no sean cuentas locales o la sesión de invitado. Para solucionar esto basta con editar el fichero /etc/lightdm/lightdm.conf, añadir la siguiente línea para poder acceder de manera manual y luego reiniciamos el equipo.

greeter-show-manual-login=true

Ya podemos iniciar sesión con el usuario que nos parezca, con este caso administrador porque de momento es el único que existe en el dominio. Además podemos ver como ha creado un $HOME para este usuario con el cual nos acabamos de identificar.

 

Esto es todo, espero que os sirva de ayuda. Saludos!

54 comments

  • Garbiñe

    Muy buen trabajo. Muchas gracias por el aporte, Está muy bien explicado.

  • Jose ramon Prado

    nose si esto seguira activo pero ala hora de intentar unirma al dominio me sale este error “Failed to join domain: Invalid configuration (“workgroup” set to “WORKGROUP”, should be “FROFI”) and configuration modification was not requested
    Si me pudieras contestar lo antes se lo agradeceria muchisimo
    Gracias de antemano
    Un saludo

  • Guille

    Yo estoy cansado de probar y siempre me da el mismo erro, he comprobado de varias maneras y queva, sigue sin entrarme con sudo net ads join -k
    Siempre sale Failed to join domain: failed to lookup DC info for domain “midominio.local” over rpc: Undetermined error.
    Abria alguna manera de contactar con usted via gmail?

  • Zubin

    Prueba con C-I-D (Closed In Directory).
    Para aquellos que no lo conocen, cid es una aplicación en shell script que automatiza el proceso de configuración de estaciones de trabajo Linux (en las distribuciones Ubuntu y derivadas), como parte de un dominio de AD, y tiene algunos mecanismos que nos ayudan en la gestión de estas estaciones en este escenario, lo que permite, por ejemplo, la ejecución de secuencias de comandos de inicio de sesión y gestionar los recursos compartidos de red, mapeo automático (archivos e impresoras), en estas estaciones.

    ¿Quién esté interesado, la aplicación está alojado en la dirección https://sourceforge.net/projects/c-i-d/ , y la documentación completa en https://sourceforge.net/projects/c-i-d/files/Documentacao/UserManual.pdf… .

    Su creador es Eduardo Moraes.
    Merece la pena echar un ojo.

    Se instala de la siguiente manera:

    sudo add-apt-repository ppa:emoraes25/cid && sudo apt-get update
    sudo apt-get install cid-base cid cid-gtk

    Saludos!

  • Arturo

    Excelente tuto! Muy bien expicado siguiendo paso a paso. Me funcionó a la perfección! Sigue así!

  • Javier Jimenez

    Hola, he usado la configuracion que has expuesto, pero a la otra de pedir el ticket de Kerveros nos salta el error:

    kinit: Cannot find KDC for realm “JAVIER.ES” while getting initial cerdentials.

    No se exactamente que esta mal, si la conf, el server o kerveros, si puedes ayudarme me harias un gran favor

    • Sergi Viana

      Hola Javier,

      gracias por tu comentario, parece ser que el origen del error estaría en el fichero de configuración de kerberos.
      Una captura de pantalla de tu configuración nos ayudaría a saber porque está fallando.

      Por otra parte, comprueba que hay comunicación entre el controlador de dominio y el equipo cliente.

      Saludos

  • Jose Holguin

    Buenas,
    Por lo que veo no soy el único con problemas, espero que alguien me pueda ayudar.
    Problema: kinit: Cannot find KDC for realm “JAVIER.ES” while getting initial cerdentials.
    Estoy en mitad de un proyecto de clase. Gracias de antemano.

    Mi dominio es INVIMA.local
    https://gyazo.com/558784e5e5827643f5f7799ca64fc103

    • Gracias Jose por comentar, el compañero Sergi que lleva este artículo está de viaje, en cuanto vuelva y tenga un rato os contestará.
      Me comenta que debe haber sido algún cambio de versión en algún componente.
      Saludos

    • Sergi Viana

      Hola, desafortunadamente ya no dispongo del laboratorio de pruebas para este escenario y no puedo probar nada. Por lo que he leído el problema viene de Kerberos. Podrías probar a añadir esta línea en la configuración de Kerberos?

      dns_lookup_kdc = true

      Y luego reinicia el servicio sssd.

      Prueba esto y nos cuentas. Esperamos tu respuesta.
      También he leído que si el dominio no está escrito en mayúsculas puede dar este tipo de errores.

      Saludos

      • Y cómo ya dije en este u otro post, acostumbraos a examinar el fichero o los ficheros de configuración hasta abajo, no sea cosa que haya otro establecimiento de algún parámetro que sobrescriba el vuestro.
        Deberíais o bien sustituir, o bien añadir al final del fichero, recordad que se procesará secuencialmente.
        Doble check, y lo que dice Sergi. Revisad todos los ficheros de nuevo.
        Salu10 binarios

  • jast

    Buena tarde, disculpa eh utilizado este metodo para subir a un dominio de windows 2016 un cliente con debian 9 y debian 8 las cuales logro integrar al dominio. El problema es que despues de unos dias ya no logro iniciar sesion con el usuario de dominio, No me reconoce el password, eh cambiado las contraseñas peros sigo sin poder loggearme, He bajado los equipos del dominio y los eh vuelto a integrar y puedo ver los nombres de las maquinas virtuales debian respectivamente, pero al iniciar sesion no me permite. No se si el problema sea en la configuracion del krb5.conf

    Agradecería el apoyo de este foro, ya que no encuentro la solucion, soy nuevo en linux y estoy atorado en este problema

    • Gracias Jast por comentar, el compañero que lleva este artículo está de viaje, en cuanto vuelva y tenga un rato os contestará.
      Me comenta que debe haber sido algún cambio de versión en algún componente.
      Saludos

      • Jast

        Gracias por la atención, quedo a la espera del su ayuda, eh leído que el ticket generado en el archivo krb5.conf se vence después de los 7 días establecidos, pero también eh leído que debería únicamente pedir las credenciales para renovar el ticket, lo cual ya no sucede y aunque haga el proceso nuevamente ya no me deja loggearme al dominio. Gracias y saludos desde México

  • Matias

    Hola buenos dias , antes que nada muy bien explicado todo.
    Les comento el problema que tengo , pude ingresarla al dominio y loguarme con los usuarios de windows.
    pero cuando reinicio la pc no me deja loguearme . use el comando klist y no encuentra los credenciales cuando la reinicio “klist: Credentials cache file ‘/tmp/krb5cc_1000’ not found “.
    La configuracion de krb5.conf es:

    [libdefaults]
    default_realm = mi dominio
    ticket_lifetime = 24h
    renew_lifetime = 7d

    Agradeceria su ayuda.
    Saludos

  • Paul

    Muy bueno tu aporte, me interesaria conocer acerca de como migrar las politicas del dominio windows hacia los workstation en ubuntu. Como por ejemplo, Desahabilitar a los puertos USB.

  • Benjamin Galicia

    muy buen aporte. solo hay un par de detalles a tu articulo:

    es importante que en las imagenes donde aparece los datos de configuracion en MAYUSCULAS se deben escribir en mayusculas en los archivos de configuracion

    se debe editar el archivo /etc/hostname con un nombre valido para netbios (max 11 caracteres?)

    editar el archivo /etc/hosts con la sintaxis oficial:

    127.0.1.1 equipo.dominio.net equipo

  • Daliana Noa

    WORK LIKE CHARM!!! Muy buen tutorial , muchas gracias por compartir, he seguido tus pasos y logré unir mi UBUNTU 18.04 al AD de mi empresa, llevo días queriendo hacer esto y buscando biblio en internet, donde hay muchos pero muchos pasos, comandos por gusto, el tuyo genial, sencillo y directo. Dime como me suscribo a esta web! Mil puntos para ti.
    Saludos, desde CUBA!!

  • Johanna

    Muy buen tuto. Tengo un problema, no puedo editar la configuracion de Kerberos. Cuando ejecuto krb5.conf me dice que no tengo los permisos para hacerlo y no se como acceder a ellos, se supone que tengo permisos de admin.

  • Diana Nuez

    Hola, Excelente tutorial, he seguido los pasos y pude unir mi ubuntu 18.04 al dominio, pero no logro de ninguna forma loguearme por el dominio, cuando inicio sesion intento DOMINIO\user y pass y me dice que No puedo acceder, solo me deja loguearme con la cuenta local por favor algun ayuda con esto, me imagino es con el sssd. conf, pero es que todo esta igual que el tutorial, Saludos.

  • PaulPerez

    Hola a todos, Tutorial muy bueno y todo me salio de maravillas. Tengo una pregunta que quizás me puedan responder. Luego que entro con mi usuario del dominio y trabajo en la session correspondiente que puedo hacer para que no salga más mi usuario registrado en la pantalla de inicio de session pues si la PC es usada por varios usuarios se veria bastante feo tantos registros de usuarios que se han loggeado anteriormente.

  • Florencio

    buen día.

    He estado buscando información sobre como poner máquinas de usuario con linux en un dominio de una empresa que tiene windows server y el principal escollo que veo es el tema de bajar las políticas de seguridad, gpo que la empresa tiene para windows
    – limitar el menú (que al usuario le salgan sólo las aplicaciones que están permitidas)
    – Proxy (que se le configure el proxy automáticamente
    – puertos usb (que se bloqueen según el usuario)
    – Certificados (bajar certificados para los navegadores)
    – Fondo de pantalla / Screen server (hoy lo que hay chequea versión y si hay una nueva copia y actualiza)
    – Instala programas.

    En fin, sabés si existe algo así, cualquier dato que me puedas tirar te lo agradeceré.

    Saludos.
    Florencio

  • luchobarrios

    Hola a todos.
    Si quisiera hacer login grafico con KDE, que tengo que modificar?
    Gracias.

  • Ignacio

    Hola a todos.
    Alguien realizo pruebas con Ubuntu 18.04?
    Que me recomiendan mas, utilizar estar configuracion manual o los gestores de instalacion como CID?

    Muchas Gracias.

  • federico

    excelente!

  • kiara

    me a funcionado perfecto.
    El unico detalle es que no toma a los administradores del dominio como usuarios elevados.
    Y no veo que agarre ninguna de las politicas.
    hay algo mas por hacer para que esto funcione dentro de una empresa?

    Saludos y graciasl

  • khrixthian

    hola
    lo primero darte las gracias por tu tutorial. pero me surge un problema, se une al dominio pero a la hora de acceder al dominio me da este error
    net ads join -k
    lbd: unable to stat module /usr/lib/x86_64-linux-gnu/samba/ldb : No such file or directory
    el resto como tu pones.

    se me une al dominio pero luego no me deja entrar al dominio desde la consola.
    me puedes ayudar???
    muchas gracias

  • Manuel

    Me da el siguiente error al ejecutar dicho comando.

    $ sudo net ads join -k

    Unknown parameter encountered: “real”
    Ignoring unknown parameter “real”
    Unknown parameter encountered: “real”
    Ignoring unknown parameter “real”
    realm must be set in in /etc/samba/smb.conf for ADS join to succeed.
    Invalid configuration. Exiting….
    Failed to join domain: Invalid parameter

    Me podríais decir donde he cometido el error?

    Gracias.

  • Manuel

    Este es el contenido del fichero de configuración en Samba. (sorry)

    [global]
    workgroup = SISTEMASMECANIC
    client signing = yes
    client use spnego = yes
    kerberos method = secrets and keytab
    real = SISTEMASMECANICOS.COM
    security = ads

  • The Grinch

    Hola, muy interesante el post, pero quisiera hacer lo mismo en un cliente debian 9 podrían por favor explicar como hacerlo, Saludos

  • Juan Carlos

    Buenos días.
    Es necesario instalar y configurar bind9 para señalar las DNS al servidor Windows 2016?
    Gracias

  • Pablo

    Gracias por el paso a paso!
    Pude unir mi equipo debían al dominio.

    Ahora bien, solo puedo conectarme por ssh con el usuario de dominio que ejecute kinit.

    ¿Cómo puedo hacer para que otros usuarios del dominio se conecten mediante ssh?

  • FDX

    hola pude unir unir las maquinas al dominio correctamente aplica todos los permisos de grupos y navegacion pero me interesaria saber si hay alguna forma de que se apliquen las gpo de impresoras por ejemplo para que se mapeen automaticamente en linux.
    gracias

  • Javi

    Hola buenas, muy buena documentación.

    Fácil de realizar y configurarlo…. El problema viene a la hora de loguearse con un usuario de dominio.
    Si intento acceder sin estar conectado a la red me dice contraseña incorrecta. (que creo que es lo que pe pasa a la mayoría de la gente); Sin embargo al conectar el Pc a la red me deja autenticarme y acceder al sistema perfectamente.

    Mi pregunta es ¿ Cómo podría autenticarse al sistema sin estar conectado a la red y que sea Linux el que guarde la contraseña del usuario una vez conectado por red por primera vez?

  • Aitor Rubio

    Hola! Gracias por la guía. Aquí he encontrado otra guía de como hacerlo con CentOS: https://www.sysadmit.com/2019/11/linux-anadir-equipo-al-dominio-windows.html Hay un comando muy interesante que es el id, para hacer la verificación.

  • Harecrisna

    No sabes lo que me has ayudado. Llevaba 3 días atascado.
    Gracias de todo corazón.

Leave a Reply to Sergi Viana Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.