49

Controlador de dominio Active Directory sobre Linux Ubuntu

Hola a tod@s.

En este post vamos a ver como montar un controlador de dominio Active Directory sobre un Linux Ubuntu, a través del cuál vamos a poder validar los usuarios de nuestra infraestructura.

Antes de nada tenemos que tener en cuenta algunas consideraciones:

  • Los servicios de Samba no generan una estructura de árbol y bosque como en Windows, simplemente actúan como controladores de dominio permitiendo centralizar la gestión de los usuarios que acceden desde cualquier equipo cliente a los recursos o servicios compartidos que ofrece el propio servidor controlador de dominio.
  • Samba combina LDAP con funciones de autentificación permitiendo sustituir a los controladores de dominio de Windows.
  • Los servicios de Samba se administran mediante el demonio smdb que gestiona el acceso remoto y el recurso de compartir archivos e impresoras, el demonio nmbd que soluciona la resolución de nombres NetBIOS de Windows, para que Linux se integre como un ordenador más en el sistema Windows y el demonio winbind que da servicio para resolver información de usuarios y grupos de servidores Windows NT.
  • Dentro de un controlador de dominio Linux existirán dos tipos de usuario: los del servidor independiente, (pueden acceder localmente y remotamente por ssh), y los usuarios de Samba o controlador de dominio, (pueden acceder desde un equipo cliente o terminal integrado en el controlador de dominio).

Los datos necesarios para la instalación y configuración son los siguientes:

  • Reino Kerberos: AVANZA.LOCAL
  • Servidor: DC1.AVANZA.LOCAL
  • Administrativo: DC1.AVANZA.LOCAL
  • Configurar IP estática, Gateway, DNS, etc.,
  • Lo primero que haremos será comprobar los repositorios para ver que tenemos que actualizar:

cdadl1

  • Luego actualizamos los paquetes que ya tenemos instalados:

cdadl2

  • Ahora vamos a instalar los paquetes necesarios para montar nuestro controlador de dominio Active Directory:

cdadl3

  • Durante la instalación de los paquetes, kerberos 5 nos hará una serie de preguntas, donde introducimos los siguientes datos de configuración:

cdadl4

cdadl5

cdadl6

  • Una vez que tenemos instalados todos los paquetes, vamos a comprobar que IP y puerta de enlace tenemos, para ello introducimos los siguientes comandos:

cdadl7

cdadl8

  • Ahora vamos a establecer los valores TCP/IP de forma estática, para ello editamos el fichero /etc/network/interfaces, introduciendo los siguientes parámetros:

cdadl9

cdadl10

  • Modificamos el fichero /etc/resolv.conf para el DNS, introduciendo los siguientes parámetros:

cdadl11

cdadl12

  • Ahora vamos a cambiar el nombre al equipo y reiniciamos el sistema:

cdadl13

cdadl14

cdadl15

  • Una vez que hemos reiniciado y el nombre de la máquina se ha hecho efectivo, añadimos el equipo al archivo de resolución de DNS local:

cdadl16

cdadl17

  • Comprobamos que el DNS funciona correctamente:

cdadl18

  • Establecemos el servidor NTP de hora:

cdadl19

  • Instalamos el servidor y el cliente Samba:

cdadl48

  • Realizamos una copia del fichero de configuración de Samba:

cdadl21

  • Ahora vamos a introducir el siguiente comando que nos va a generar un fichero smb.conf adaptado a nuestras necesidades, es decir, con los parámetros que hemos configurado anteriormente en Kerberos:

cdadl22

cdadl23

  • Como podemos ver las opciones del dominio se han instalado y configurado correctamente:

cdadl24

  • Comprobamos que el archivo smb.conf se ha generado correctamente:

cdadl25

  • Eliminamos el DNS 8.8.8.8 porque hemos configurado Samba para que resuelva las DNS externas y reiniciamos el equipo:

cdadl26

cdadl27

  • Nos quedaría así:

cdadl28

cdadl29

cdadl30

  • Nos quedaría así:

cdadl31

  • Reiniciamos el equipo:

cdadl32

  • Tras el reinicio, comprobamos el estado del servicio Samba:

cdadl33

  • Comprobamos que el DNS generado por Samba está funcionando:

cdadl34

  • El comando Samba genero un fichero adecuado para kerberos, hacemos una copia de seguridad del actual, luego haremos un enlace simbólico al nuevo fichero y comprobaremos los datos:

cdadl35

  • Comprobamos con el comando smbclient que Samba está funcionando correctamente:

cdadl36

cdadl37

  • Añadimos a Samba el usuario “ramos” dado de alta en el sistema y con el cuál hacemos logon en el equipo:

cdadl38

  • Si queremos crear usuarios específicos en Samba para Active Directory, usaremos el siguiente comando:
  1. Para crear usuarios: samba-tool user add USUARIO
  2. Para eliminar usuarios: samba-tool user delete USUARIO
  • Ahora vamos a incorporar un cliente Windows 7 al dominio y comprobaremos que el usuario del dominio «ramos» puede aunteticarse y abrir sesión en cualquier equipo que pertenezca al dominio.
  • Lo primero que haremos será unir nuestro equipo con Windows 7 al dominio avanza.local instalado y configurado sobre Linux Ubuntu 14.04 LTS, para ello seguimos estos pasos:

cdadl39

cdadl40

cdadl41

cdadl42

  • Ahora nos va a pedir las credenciales del Administrador del dominio:

cdadl43

  • Como podemos ver el equipo se ha unido correctamente al dominio:

cdadl44

  • Reiniciamos el equipo para aplicar los cambios:

cdadl45

  • Una vez que hemos reiniciado, vamos a hacer logon en Windows 7 con el usuario de Samba “ramos” dado de alta en la base de datos del Active Directory de nuestro Linux Ubuntu, verificando así que todo está configurado correctamente:

cdadl46

  • Como podemos ver el usuario ha iniciado sesión correctamente:

cdadl47

 

Saludos y espero que os resulte de ayuda 😉

Jose Ramon Ramos Gata

Técnico Superior STI

49 comentarios

    • Hola Héctor.
      En este post que muestro, el servidor Linux que actúa de domain controller no implementa nada con respecto a las GPOs como lo haría un domain controller en Windows, simplemente nos valida a los usuarios en el dominio, si quieres montar un controlador de dominio completo con sus GPOs como en Windows hay una distribución de Linux llamada Zentyal basada en Ubuntu server que te permite montar controladores de dominio con políticas de grupo, DNS, etc… tal y como se implementan en Windows y todo ello en modo gráfico.
      Saludos.

  1. Hola buen dia, ando haciendo la configuracion para unir a dominio de windows un equipo con ubuntu 16.04, quisiera saber si es compatible?

    saludos

    • Hola Gilberto, si la puedes unir sin problemas, si sigues el post «Agregar máquina Linux Ubuntu 14.04 LTS a Controlador de Dominio Windows» te indica los pasos a seguir.
      Saludos y muchas gracias por leer el blog.

  2. hola me he quedado casi esta el final con el comando de smbclient -L … pero no encuentra el comando :/ se debera a que estoy usando ubuntu 16 lts?

    • Hola Jennifer.
      Seguramente tienes que instalar el cliente samba.
      Utiliza el comando apt-get install smbclient
      Saludos

  3. Hola amigo… comentarte que estuve realizando la practica siguiendo tu post y luego de las comprobaciones de tcp y udp tuve un problema en el inicio de sesión con el usuario administrator….
    root@dc:/home/miguel# smbclient -L dc.sistec.local -U%
    session setup failed: NT_STATUS_OBJECT_NAME_NOT_FOUND
    smbclient //localhost/netlogon -U ‘administrat
    session setup failed: NT_STATUS_OBJECT_NAME_NOT_FOUND

    Agradeceria tu ayuda para solucionar mi problema…. muy buen post, muchas gracias!!!.

    • Hola Miguel Ángel, cuando realizastes el aprovisionamiento del dominio con el comando samba-tool domain provision ….
      ¿No te dio ningún error?
      Parece que el dominio no está bien definido.

      • Gracias por la respuesta, le comento que no me dio ningún problema… Pero revisare de nuevo el samba-tool, Muchas gracias por el aporte!!!!.

        • A mi me dio el mismo problema que encontró el compañero miguel om
          Dio con alguna solución?
          Muchas gracias

          • Hola , instalando el paquete winbind se soluciona
            #apt-get install winbind

  4. ragasys que buen tuto, una duda, si deseo compartir carpetas, la seguridad va a funcionar con los usuarios del directorio activo, o se debe hacer algo adicional para que estas dos funcionalidades queden integradas?

    • Hola Alirio, tienes que dar de alta a los usuarios de manera local y después esos mismos usuarios habilitarlos para Samba, luego asigna los permisos correspondientes a las carpetas.
      Saludos y me alegro que te haya gustado el post.

  5. Buen tutorial amigo, pero llegue a la parte del comando de smbclient -L dc1.avanza.dc1 -U% y me arroja el siguiente error:
    Connection to dc1.avanza.local failed (Error NT_STATUS_CONNECTION_REFUSED).
    Cual podria ser el problema? Muchas gracias por tu ayuda. Estoy usando la version server de ubuntu 16.04.1. Un saludo

  6. Hola, primero que todo felicitarte por el esfuerzo, este post es muy instructivo.
    Necesito instalar el servicio de terminal server en un windows server 2012 y a partir del 2012, el servidor que es Servidor de Licencias de Terminal Server tiene que estar dentro de un dominio obligatoriamente. Habia pensado montar un dominio en un linux virtualizado, siguiendo los pasos de tu post.
    Mi pregunta es, en este dominio que explicas, ademas de poder añadir equipos en windows 7 como en tu ejemplo, se puede meter tambien un servidor?
    Otra pregunta: En que momento configuras el usuario «Administrador de dominio»?
    Muchas gracias de antemano. Un saludo.

  7. Hola,
    llevo como mas de una semana dandome de bruces con este error no consigo pasar de aqui:
    ERROR(): Provision failed – ProvisioningError: server role (DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:) should be one of «active directory domain controller», «member server», «standalone server»
    File «/usr/lib/python2.7/dist-packages/samba/netcmd/domain.py», line 442, in run
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
    File «/usr/lib/python2.7/dist-packages/samba/provision/__init__.py», line 1951, in provision
    raise ProvisioningError(‘server role (%s) should be one of «active directory domain controller», «member server», «standalone server»‘ % serverrole)
    ————————————————–

    Alguien puede ayudarme?

    Gracias

    Un saludo

    • por favor deja los parámetros de tu configuración para verificar si hay alguna inconsistencia, adicional comentar que el dominio no puede tener el mismo nombre del equipo.

  8. Buena noche primero que todo buen post tengo un error el ejecutar el comando service smbd restar me lanza un error que dice «failed because the control process exited…». Cuanto ejecutó systemctl status smbd.service en active me aparece failed. Mas abajo ser ver role = active directory domain controller not compatible with runn

    • hola me gustaria saber si soluciono este problema, porque me esta ocurriendo lo mismo

  9. (Error NT_STATUS_CONNECTION_REFUSED).
    apt-get dist-upgrade
    apt-get install winbind
    para el error digita estos comandos cualquiera de los dos te servirá

  10. Estimado RAGASYS, el directorio activo que implementas con esta guia , que nivel tiene : 2008, 2008R2, 2012 ??

  11. Buenas Tardes
    poir favor su ayuda con la consulta: el direcotorio que implementa que nivel tiene:
    2008 o 2012 ??

  12. Buenas noches, tengo un problema. En el resolv.conf nunca se me guarda mi nameserver, se sobreescribe cada vez que reinicio la máquina.
    Aparte, me da error el host y el service smbd restart

    Necesito ayuda, gracias desde ya 😀

    • Hola primero felicitarte por tu trabajo.
      Me ocurre igual que a Diego, y de aqui no paso.
      Alguna idea.
      gracias

    • Buenas Diego, puede ser que la aplicación que administra la tarjeta de red gráficamente esta reescribiendo los cambios que haces a los archivos de configuración manualmente. Creo que debes utilizar la versión server de Ubuntu que es solo texto y así evitarías que alguna aplicación gráfica (networkManager), te reescriba la configuración cada vez que inicies sesión.
      puedes darme tu correo para hablar de esto.

      • Como solucionar un error_assertion_failure[Code 0x0000029c] para poner al dominio Ubuntu 14 ad

  13. Hola, tengo una pregunta, es posible montar un servidor de Archivos y un active Directory en mismo servidor samba o causa algún conflicto, alguien podri comentarme algo al respecto??

  14. gracias si funcionó gracias pero en mi opinión debiste primero poner primero lo que se va instalar y lueeego después pasarlo a ip estática si quiero ponerlo en otra red ya no me daría para la instalación de samba que viene a la mitad del tuto, otro error que tube fue que cuando lo tenia todo listo para comprobar sambaclient me daba error después de buscar un rato tan solo lo reinicie e intenté otravez uniar a win2 7 al domino de ubuntu y si funciono a la primera. gracias desde Lima Perú

      • Disculpa, pero difiero en que no hay GPO, puedes usar RSAT desde un equipo en windows para manejar las GPOs, incluso puedes hacer algunas cosas con samba-tool. Por favor corrígeme si obvié algo en tu articulo que lo impida. Saludos!

  15. Fantástico tutorial, enhorabuena, quería hacerte una consulta, he tenido asi funcionando mi dominio Ubuntu+samba4, tengo dos dc en mi oficina y ahora he desplegado dos delegaciones mas, iba todo bien y de repente desde hace unos 5 días ha empezado a pararse el servicio, dice: «no se puede poner en contacto con el siguiente controlador de dominio:xx.domain.loc. El servidor no es funcional»
    el caso es que si reinicio los servicios samba-ad-dc empieza a funcionar de nuevo, otros 20 min que vuelve a hacer lo mismo, a ver si me das una pista

    Gracias
    Oscar

  16. Necesito promocionar DC de windows en un dominio deLinux para poder luego tgransferir los roles FSMO al windows y dejarlo como PDC y rdetirar el zentyal. Me ayuda porfavor . Gracias.

      • muchas gracias por su respuesta, pero ya se ha probado esta solucion y el problema que se presenta es que al promocionar el windows server a PDC una vez se ha unido al dominio como primer paso, saca un error como de permisos hacia el zentyal siendo que la promocion la estamos haciendo con una cuenta de administrador del dominio.

  17. Hola si alguien me puede ayudar yo me quede en la parte de introducir este comando

    samba -tool domain provision –use-rfc 2307 — interactive

    simplemente queda pensando y no da respuesta nunca

  18. hola buenas tardes tengo un AD montado en ubunto 16 funcional, que posibilidad tienen de publicar un manual de usos desde la consola para la administracion de usuarios creacion de grupos bloqueos de politicas y específicamente como bloqueo los fondos de pantalla, es decir, colocar el de la empresa

  19. hola buenas tardes tengo un AD montado en ubunto 16 funcional, que posibilidad tienen de publicar un manual de usos desde la consola para la administracion de usuarios creacion de grupos bloqueos de politicas y específicamente como bloqueo los fondos de pantalla, es decir, colocar el de la empresa

  20. Buenos días,
    He tomado como referencia este tutorial para realizar la instalación en un Ubuntu 18.04. Todo bien hasta el final donde después de aplicar los comandos
    host -t SRV _ladpap… el resultado es: Host _ldap.tcp.avanza.local not found: 2 (SERVFAIL)
    Veo que configuras una puerta de enlace al principio y una tabla de rutas que no se corresponden con la mía. Estoy utilizando una red interna de virtualbox y una NAT para descargar los paquetes que propones.
    También he intentado la instalación en UBUNTU SERVER ,quedándome en el mismo paso. No puedo comprobar que samba resuelve correctamente las DNS.
    Agradezco de antemano tu ayuda pues estamos en clase dando este tema.
    Saludos.

  21. Saludos, me gusto mucho este tutorial, me interesaria hacer lo mismo pero al contrario que los logeos de usuarios sean en ubuntu server, se podra..

  22. Hola José Ramón,

    ¿ Qué pasos o cambios habría que considerar para implementar esos mismos pasos para un Servidor Ubuntu en La Nube ?

    El comentario se basa en que dichos Servidores en La Nube están administrados aun «hipervisor» que solo te ofrece una «IP interna fija/dinámica» y una «IP externa fija estática» suministradas por el servicio ofrecido.

    ¿ Qué IP tendría que cambiar para aplicar el mismo concepto desde una «máquina o PC» que se quiere incorporar a dicho DC en La Nube?

    Ayudaría mucho tu respuesta, ya que la mayoría de los videos no lo hacen en un ambiente real, sino, «emulaciones con hipervisores locales».

    Gracias de por tu aporte.

  23. Tengo un problema de inicio de sesión con un cliente Ubuntu 20.04, en un servidor Windows 2012. En ocasiones los usuarios pueden acceder a su cuenta sin problema pero a veces les deniega el acceso a sus cuentas, a pesar que los datos de inicio y contraseña sean correctos. Encontré una solución que es reiniciar el equipo y ya funciona, pero saben como solucionarlo de raíz?

  24. Como solucionar un error_assertion_failure[Code 0x0000029c] para poner al dominio Ubuntu 14 ad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.