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:
- 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!
Muy buen trabajo. Muchas gracias por el aporte, Está muy bien explicado.
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
Se me a olvidado añadir que el nombre de mi dominio es FROFI.org
Fíjate en el error, en smb.conf tienes el parámetro workgroup como “WORKGROUP” y debería ser “FROFI”, como tu dominio.
Saludos
Gracias por responder pero me sigue saliendo el mismo error y lo e modificado, e reiniciado y nada
Esta tal que asi
[global]
workgroup = FROFI
client signing = yes
client use spnego = yes
kerberos metod = secrets and keytab
realm = FROFI.ORG
security = ads
Un saludo
Gracias por contestar
Lo e modificado y me sigue saliendo el mismo error, e reiniciado y nada, te adjunto la imagen del archivo smb.conf
https://gyazo.com/db41b7f17927b1c1bb3f266d9d4ae138
Un saludo
Mil gracias de verdad, no me habia fijado en eso, muchs gracias llevo un dia entero con el mismo problema buscando en internet y no encontraba nada. Mil gracias
Un saludo
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?
No entiendo la pregunta. Puedes formularla mejor, con escritura correcta y alguna captura de pantalla?
Gracias!
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!
Excelente tuto! Muy bien expicado siguiendo paso a paso. Me funcionó a la perfección! Sigue así!
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
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
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
https://gyazo.com/1a1362c24eaa3f296bba8e2b4c2797a2
krb5.conf
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
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
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
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
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
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.
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
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!!
¿Has probado el PBIS-OPEN?
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.
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.
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.
Esto lo lleva Sergi, pero ¿Te refieres a cliente Windows?
Saludos
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
Hola a todos.
Si quisiera hacer login grafico con KDE, que tengo que modificar?
Gracias.
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.
Los gestores como PBIS open o CID. Este último más fácil.
excelente!
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
Poner al grupo administradores dentro de los usuarios “SUDOERS”
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
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.
Te lo dice el error, el parámetro no es “real” si no “realm”:
real = SISTEMASMECANICOS.COM
realm = SISTEMASMECANICOS.COM
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
Funcionó Manuel?
Saludos!
Hola.
Cuando quieroo modificar el /etc/ssd/ssd.conf me sale en blanco
¿Que hay que hacer ahi o no se instalo correctamente el SAMBA?
El fichero es /etc/sssd/sssd.conf
Comprueba la sintaxis de tu comando
Si está vacío copia el que tenemos en el post, personalizando tu dominio.
Saludos
Hola, muy interesante el post, pero quisiera hacer lo mismo en un cliente debian 9 podrían por favor explicar como hacerlo, Saludos
Hola The Grinch!
Te funcionará casi todo, ten en cuenta que Ubuntu deriva de Debian, lo que no funcione te sugiero:
https://lmgtfy.es/?q=Unir+Debian+a+un+dominio+de+Windows+Server+con+Active+Directory
Saludos
Buenos días.
Es necesario instalar y configurar bind9 para señalar las DNS al servidor Windows 2016?
Gracias
No, imagino que WServer tendrá rol de DNS
Saludos
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?
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
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?
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.
No sabes lo que me has ayudado. Llevaba 3 días atascado.
Gracias de todo corazón.