22

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 😉

ragasys

Técnico Superior STI

22 Comments

    • 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

  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 😀

Deja un comentario

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