Samba 4: Controlador Active Directory parte 1 de 3

Sin duda, Active Directory es la característica más atractiva a la hora de decidirnos por Windows Server como servidor de nuestra red local. El conjunto de servicios y utilidades que ofrece para la gestión de usuarios y equipos permite una gestión tremendamente productiva, especialmente si trabajamos con clientes Windows.

Por otro lado Samba, la implementación para el mundo Linux del protocolo CFIS de Windows, permitía hasta la fecha implantar un servidor de dominio NT, que aunque permite la autenticación centralizada, quedaba muchos pasos atrás respecto las funcionalidades de cualquier Windows Server de 2003 hacia adelante. Pero, ahora la nueva versión de Samba, Samba 4, permite implementar un DC (Domain Controller) basado en Active Directory.

En este primer post, vamos a documentar la instalación de Samba 4, en este caso sobre un Ubuntu Server 12.04 y vamos a agregar un cliente al dominio. En los posts siguientes, seguiremos con la configuración de nuestro directorio activo y con el despliegue de directivas de grupo.

En primer lugar configuraremos la  red de nuestro futuro servidor, editando el archivo /etc/network/interfaces (trabajaremos a lo largo del post con privilegios elevados, por tanto, iniciaremos sesión como root o haremos sudo su):

sambadc01

Observamos como configuramos como primer servidor de nombres el propio equipo, como secundario elegimos alguno que nos permita acceder a Internet ( el de nuestro ISP o el público de Google en este caso).

A continuación instalaremos el servicio NTP (Network Time Protocol) para asegurar que nuestro equipo siempre tenga la hora correcta (el funcionamiento de Kerberos exige que los equipos estén sincronizados en cuanto la hora). Para instalar el servicio:

# apt-get install ntp

Una vez instalado, configuraremos el servicio para elegir el servidor horario de nuestra preferencia, en nuestro caso, elegimos los servidores ubicados en España. Así mismo, habilitamos el servicio para que nuestra red pueda consultar la hora al servidor (podemos consultar los servidores disponibles en la página de NTP project.

sambadc02

A continuación procederemos a instalar Samba 4. Aunque se puede descargar como paquete ya construido mediante apt-get, la página de Samba recomienda bajar las fuentes y compilarlas. De hecho, si se intenta bajar el paquete del repositorio da un error a media instalación ( en algunos blogs comentan cómo seguir la instalación a partir de ese punto).

En primer lugar, nos bajamos los archivos necesarios o prerequisitos:

# apt-get install build-essential libacl1-dev python-dev libldap2-dev pkg-config gdb libgnutls-dev libreadline-dev libattr1-dev python-dnspython libpopt-dev libbsd-dev attr docbook-xsl libcups2-dev git

Una vez finalizada la instalación, bajaremos la versión más reciente del repositorio GIT:

# git clone git://git.samba.org/samba.git /usr/src/samba4/

Una vez finalizada la descarga procederemos a compilar:

# sudo ./configure –enable-debug

# make (gracias a luigdima por el aviso)

# make install

y añadiremos el path de las carpeta bin y sbin de samba:

# export PATH=”/usr/local/samba/sbin:/usr/local/samba/bin:$PATH”

Ya tenemos el Samba instalado, ahora podemos proceder a la construcción del dominio, para ello utilizaremos el comando samba-tool domain provision y procederemos a rellenar los datos de nuestro dominio. En DNS forwarder, pondremos la dirección IP del DNS que queremos que resuelva las peticiones externas (reenviador).

sambadc03

En cuanto la password que nos solicita, deberá tener complejidad, caso contrario nos pedirá una nueva contraseña, para las pruebas realizadas hemos elegido P@ssw0rd (obviamente en producción debeis elegir una contraseña más original😉 )

A continuación editaremos el archivo smb.conf (cuidado, que en lugar de /etc/samba/, lo tenemos en /usr/local/samba/etc!!) y añadiremos la opción que los clientes puedan actualizar su registro dns.

sambadc04

A continuación reiniciamos la máquina y cuando iniciamos sesión iniciamos el servicio de samba: # /usr/local/samba/sbin/samba start

Ahora realizamos una prueba para comprobar que efectivamente funciona el servicio de DNS:

sambadc045

Ahora probaremos el servicio Kerberos, para ello instalaremos la utilidad de cliente:

# apt-get install krb5-user

Cuando nos pida el reino Kerberos, deberemos poner el que hemos elegido, pero muy importante en mayúsculas! Una vez instalado podemos testear por ejemplo la password de administrador:

sambadc06

Si todo funciona sin problemas, podemos seguir, pero si tenemos algún problema deberemos reiniciar el proceso, para ello borraremos el archivo smb.conf y procederemos a repetir el proceso de crear el dominio, pero muy importante añadiendo el argumento –use-ntvfs al final y configurando directamente con el comando los argumentos, por ejemplo:

# samba-tool domain provision –realm casa.local –domain CASA –adminpass P@ssword –server-role=dc –use-ntvfs

Posteriormente en el archivo smb.conf añadiremos el dns forwarder y la opción de update de los clientes.

Llegados a este punto, podemos probar a agregar un equipo al dominio, en nuestro caso un Windows 7 Enterprise. Para ello, en la configuración de red del cliente, pondremos como DNS la IP de nuestro servidor samba:

sambadc07

Ahora procederemos a agregar el equipo al dominio:

sambadc08

Comprobamos como el cliente se ha agregado correctamente al dominio:

sambadc09

En posts posteriores veremos como administrar el dominio que hemos creado.

Actualización

Afortunadamente, en la versión 14.04 el proceso de instalación se ha simplificado mucho. En este artículo (enlace) describimos el proceso a seguir.

66 comentarios en “Samba 4: Controlador Active Directory parte 1 de 3

  1. Hola!

    Al instalar los prerequisitos falla al resolver el paquete doc-book-xsl, el nombre correcto es docbook-xsl (almenos para mi distribución, Debian Wheezy)
    Y antes de ejecutar make hay que configurar el paquete con ./configure si no el make da error!

    Saludos😉

  2. Muy bueno el tutorial, pero se me presenta el problema de no reconocer el dominio:
    Host _ldap._.tcp.mst.net not found: 3(NXDOMAIN)
    Y quería saber si es necesario haber instalado previamente BIND9 y configurar las zonas.

    Gracias.

    • Extraño, no me ha dado ningún problema, pero en cualquier caso no es imprescindible para el funcionamiento del DC, simplemente permite que los cambios de IP de los clientes se actualizen en la zona.

  3. Hola tengo una gran duda siguiendo tu excelente manual solo llego hasta este punto “root@matrix:/etc/bind# host -t SRV _ldap._tcp.signalpe.local.” dandome como error “Host _ldap._tcp.signalpe.local. not found: 3(NXDOMAIN)” debo especificar algo en el named.conf?? y en el resolv.conf?? y mi otra consulta es antes de compilar el samba4 especificado en tu manual tenia y teng el samba 3.xx presentara algun conflicto que me sugeririas en ese caso agradezco desde ya tu rpta.

  4. Al hacer la prueba del DNS me da como error como error “Host _ldap._tcp.casa.local. not found: 3(NXDOMAIN)” y he repetido varias veces la instalacion y chequeado bien la escritura para la prueba. Me gustaria saber bajo tu experiencia que podria ser. Gracias.

    • En primer lugar comprueba que en el archivo interfaces tienes asignado a dns-nameservers la IP de tu equipo. En segundo lugar, si estás usando como domino casa.local, revisar el archivo smb.conf y chequear el domain y el realm. Una vez comprobado, reinicia el sistema y arranca el servicio samba.

  5. gracias por el tutorial…. al hacer la prueba del DNS me d error not found, he verificado archivo .conf e interface y toda parece bien pero el error sigue dando…. cuando hago ping en la red con el nombre de dominio me devuelve la direccion, asi que parece estar bien pero la comprobacion da el error……

    por otro lado cuando intento pegar al dominio me indica…
    Sólo se permite esta operación en el controlador de dominio principal.

    hice todo como lo indicas pero aun asi no puedo accesar al dominio

  6. NO usar comillas para modificar la variable PATH.
    Usando comillas para modificar la variable PATH el bash no lo interepreta bien
    # export PATH=”/usr/local/samba/sbin:/usr/local/samba/bin:$PATH”
    no funciona. La variable PATH NO ha de tener comillas, y con esta orden se le añaden comillas.

  7. Hola como estas??? primero quiero decir que el aporte que representa tu material es excelente, los errores q surgen se deben a nuestra inexperiencia en el ámbito Linux, ámbito q por cierto require dedicacion y paciencia. Queria hacerte una consulta, al intentar iniciar el servicio samba no puedo, ya trate de arrancarlo desde /usr/local/samba/sbin y desde /usr/local/samba/bin con samba start y smb start y me arroja “no se encontro la orden”; probé desde varios lugares y no hay caso, evidentemente estoy haciendo algo mal y no se que és. Por otro lado tengo un pedido adicional, cabrá la posibilidad de que armes un detalles de cada uno de los campos q requiere el proceso de aprovisionaimento del Servidor como DC, y lomismo para querberos ??? muchas gracoas por tu trabajo, saludos

  8. Hola tengo un problema al configurar samba ya despues de instalar realizo el /usr/local/samba/bin/samba-tool domain provision y me marca este error :
    Setting up sam.ldb users and groups
    ERROR(ldb): uncaught exception – 0000052D: Constraint violation – check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
    File “/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/__init__.py”, line 175, in _run
    return self.run(*args, **kwargs)
    File “/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/domain.py”, line 427, in run
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)
    File “/usr/local/samba/lib/python2.7/site-packages/samba/provision/__init__.py”, line 2159, in provision
    skip_sysvolacl=skip_sysvolacl)
    File “/usr/local/samba/lib/python2.7/site-packages/samba/provision/__init__.py”, line 1757, in provision_fill
    next_rid=next_rid, dc_rid=dc_rid)
    File “/usr/local/samba/lib/python2.7/site-packages/samba/provision/__init__.py”, line 1440, in fill_samdb
    “KRBTGTPASS_B64”: b64encode(krbtgtpass.encode(‘utf-16-le’))
    File “/usr/local/samba/lib/python2.7/site-packages/samba/provision/common.py”, line 55, in setup_add_ldif
    ldb.add_ldif(data, controls)
    File “/usr/local/samba/lib/python2.7/site-packages/samba/__init__.py”, line 224, in add_ldif
    self.add(msg, controls)

  9. si ya despues me di cuente jeje, gracias de todos modos, ahora tengo otro detalle no se si alguien tiene o sabe de algún patch o hack para poder meter al dominio versiones de windows 7 starter que tenga deshabilitado la opcion de “id de red”, a y en windows 8, que la primera opcion es cambiar el tipo de licencia pero pues no se primero ando checando otra opcion

  10. Hola que tal.

    He hecho ya la instalación paso a paso de tu tutorial, sobre Debian Wheezy 7 64 bits, el samba que uso es de sernet.

    Me pasa lo mismo que a otras personas, al poner “host -t SRV _ldap._tcp.casa.local.” me devuelve “Host _ldap._tcp.casa.local. not found: 3(NXDOMAIN)”

    ¿Qué puede estar pasando?

    Gracias y un saludo.

  11. Hola de nuevo, si hacía un “samba_dnsupdate –verbose –all-names” me salía este error:

    Traceback (most recent call last):
    File “sbin/samba_dnsupdate”, line 510, in
    get_credentials(lp)
    File “sbin/samba_dnsupdate”, line 123, in get_credentials
    raise e
    RuntimeError: kinit for SERVER$@EMPRESA.NET failed (Cannot contact any KDC for requested realm)

    Toqué el /etc/resolv.conf y puse:

    seach casa.local
    nameserver 127.0.0.1

    Y pareció ya contestar el :
    _ldap._tcp.casa.local has SRV record 0 100 389 debian.casa.local.

    ¿Está bien hecho esto?

    Lo único raro es el “netstat -tuanp | grep 53”, me salen un monton de líneas

  12. Hola buenas, he seguido todos los pasos que indicas que este manual, y al principio me daba el error, que como acabo de leer le daba a mucha gente Host _ldap._.tcp.mst.net not found: 3(NXDOMAIN) pero lo conseguí arreglar modificando unas cosillas en /etc/hosts, /etc/network/interfaces y en smb.conf. Pero el problema que tengo ahora es al intentar añadir un equipo w7 al dominio, pongo el nombre de dominio en el w7 y me pide usuario y contraseña introduzco los datos y me dice “Error al iniciar sesión : nombre de usuario desconocido o contraseña incorrecta”. Previamente creé el usuario admin con smbpasswd, reinicié samba y nada no hay forma de que funcione.
    De que puede ser? Es para un trabajo de clase y no sé cmo continuar
    Gracias

    • Buen aporte. De todas maneras, con Ubuntu 14.04 LTS ya se puede bajar samba4 directamente mediante el gestor de paquetes, lo cual sin duda, es una gran ventaja a la hora de instalarlo.

  13. Cordial saludo. Muy buen tutorial. Solo tengo una pregunta que considero importante, he podido instalar samba como AD y todo va bien, siempre y cuando las maquinas clientes de windows tengan asignado IP estaticas. Mi pregunta es: existe de algún modo poder asignar direccionamiento dinámico a los clientes windows a traves de samba y DHCP, o simplemente Samba no lo puede hacer hasta esta fecha. Pude configurar Nginx, PHP, MariaDB, DNS y DHCP sin problemas y funciona bien, pero cuando le agrego samba para utilizarlo como AD, solo funciona si asigno IP estaticas a los clientes windows, y cuando configuro IP dinamicas a los clientes el servicio de samba deja de funcionar como AD. Por favor solicito documentacion y/o ayuda para implementar un servidor DHCP junto con SAMBA para unir clientes windows que tenga direreccionamiento dinamico. Muchas gracias.

    • No entiendo muy bien el problema. Con DHCP los equipos cliente obtendrán una configuración de red. La única precaución con Samba 4 es permitir la actualizaciones de DNS por parte de los clientes.

      • Carlos cordial saludo. Instale satisfactoriamente SAMBA como AD, configure los clientes Windows con IP estatica y se pudo ingresar al dominio de Linux Ubuntu sin ningún problema, pero cuando le agregue DHCP al servidor de Linux para que entregara las IP en un rango predefinido a los clientes Windows y estos clientes windows los configure con direccionamiento dinamico, SAMBA como AD dejo de funcionar. Hara falta configurar algo? o los servicios de SAMBA y DCHP debe configurarse en servidores independientes? como se haría esto? Muchas gracias

      • En teoría son servicios independientes que no deberían interferir. No he instalado nunca los dos servicios en la misma máquina, pero no debería haber conflicto en ese aspecto. Insisto en que sí se debe asegurar que los clientes puedan actualizar el DNS de Samba para permitir la autenticación.

  14. Hola amigo, quisiera ver si me ayuda con 2 problemas que tengo con respecto a Samba 4. Es que quiero tener todo mi red en Linux y es lo ultimo que me falta afinar.
    1- Instalé samba como AD en ubuntu 14.04, sin embargo no puedo detener el servicio, es decir, no me funciona “/etc/init.d/samba stop” ni tampoco “service samba stop” Revisé la script hecha para samba y parece estar bien. Hago un “netstat -ant” despues de detener el servicio y aparece el servicio por el puerto 389 corriendo. La verdad es que la script “/etc/init.d/samba” no me funciona nada bien.
    2- Al configurar samba como Internal, me pide un “dns forwarder” lo configuro y pienso que los nombres que no son resolvidos por el DNS que configura Samba entonces pasan a ser resolvidos por este DNS forwarder, que en mi caso es un DNS que tengo en mi empresa funcionando.

    Saludos y agradecido de antemano por sus ideas y sugerencias

  15. Hola buen Día, se me presenta una duda tengo un par de equipos lo cuales son portátiles y no permanecen en las oficinas que debo hacer para que estos equipos puedan conectarse a Internet fuera de la misma, ya que para unirlos al dominio debo poner el DNS del servidor Samba, y si lo dejo de esta manera no obtiene un DNS externo por que esta fijo el de samba.

  16. Hola Carlos, muchas gracias por el manual, está muy bien y sencillamente explicado.
    Le comento que he seguido todos los pasos y todo estuvo correcto inclusive hasta la instalacion del cliente kerberos.
    Es ahi donde tengo este problema: al intentar usar el kinit me da esta error:
    “Cannot contact any KDC for realm ‘CASA.LOCAL’ while getting initial credentials”.
    He buscado bastante y creo que se debe a que la aplicación no puede encontrar el servicio kerberos.
    Toqué el hosts e hice:
    #127.0.0.1 localhost
    #127.0.1.1 ubuntu
    127.0.0.1 localhost.localdomain localhost
    192.168.30.134 ubun tu.casa.local ubuntu”
    Luego Toqué el archivo NTP.conf y agregué:

    # If you want to provide time to your local subnet, change the next line.
    # (Again, the address is an example only.)
    #broadcast 192.168.123.255
    broadcast 192.168.30.255″
    pero no me funciona nada.
    Agradecería me pudieras dar una idea de para donde seguir intentando.
    Te deseo el mejor de los éxitos.

      • Hola Carlos, gracias por responder, te comento que luego de mucha prueba y error finalmente ahorita logré unir un cliente Win7 al dominio Samba. Quisiera agregar que luego de instalar el kerberos, me daba el siguiente error al hacer kinit administrator :” kinit: Bad encryption type while getting initial credentials. “. Esto logré solucionarlo reseteando el password del administrator con “samba-tool user setpassword administrator”. Luego reinicié el cliente y funcionó finalmente. Seguiré usando tus manuales que son los más prácticos que he encontrado sobre el tema.
        PD. al final mi host quedó así:
        127.0.0.1 localhost.localdomain localhost
        127.0.1.1 ubuntu.casa.local ubuntu
        También quiero agregar que es importante chequear el archivo /etc/resolv.conf debe tener los nameservers y el search.
        Gracias!

  17. Hola Carlos, tengo funcionando bastante bien un Directorio Activo con Samba4, pero tengo un problemita las maquinas virtuales no se unen al dominio. Ah alguien le ha ocurrido?? Alguna sugerencia??
    Saludos.

    • Hola,
      Has comprobado que en las VM hora y fecha sean correctas ? si no, Kerberos no permitirá que se agreguen. Con la VM a menudo, como las pausamos, se pierde la sincronización horaria.

      • Era eso mismo Carlos y no me habia percatado, te estoy muy muy agradecido, me has resuelto un gran problema…Saludos

  18. Hola que tal, yo tengo un dominio básico con samba, en el cual ya tengo unos usuarios y equipos agregados, pero obviamente no puedo agregar equipos con windows7, una solución es cambiar los parametros de seguridad de red en windows y ya podre agregarlos, la otra es actualizar a samba4, Mi pregunta es, que sucede al actualizar samba 4? sobreescribe mi configuracion actual de samba? debo agregar nuevamente todos los equipos y usuarios?

    gracias por tu amable respuesta

    • Samba 4 implica un cambio importante en la forma de definir el dominio. Personalmente, creo que la actualización de Samba3 a Samba4 no es trivial y plantearía crear el dominio desde cero. En cualquier caso, te recomiendo consultes la página oficial del proyecto.

  19. Buenas una pregunta, sabríais decirme si se podría desplegar un xenserver de Citrix usando como base el samba4, todos los partners de citrix me dicen que es obligatorio tener directorio activo por debajo y que ni ldap ni samba4 como controladores de dominio servirían…

    Gracias por adelantado… Muy bueno el blog por cierto.

  20. Gracias de antemano muy buen tutorial soy administrador de una red y utilizo samba 4 para la gestión de usuarios pero en algún momento cambié la contraseña del administrator de samba para el dominio y la equivoque ; ¿cómo cambiar la misma si no tengo la que en estos momentos existe?; gracias.

    • Hola,
      Si comentas qué errores son, entre todos (tanto los que escribimos en el blog, como los que aportan comentarios) podemos mirar cómo solucionarlos y mejorar el contenido. Siguiendo las instrucciones, la instalación sobre Ubuntu 12.10 funcionaba (no tengo la costumbre de inventarme resultados) . En cualquier caso, te recomiendo te mires el post http://wp.me/p38OXM-am si estás instalando Samba4 sobre la última versión LTS de Ubuntu.

  21. Viejo que tal, mira ya tengo el Dominio arriba y puedo agregar computadoras al dominio, el detalle pequeño y a la vez enorme es el siguiente, en la herramienta de windows el adminpack lo instalo y reconoce el dominio y acepta el usuario creado el “Administrator”, sin embargo a la hora de empezar a crear usuario me manda error, sabrás porque? ya que cree usuario en linux inclusive primero adduser y luego smbpasswd y adelante, el problema es que no me permiten logear a los usuarios y no logro ver los usuarios creados en linux con la herramienta de linux. Tendras algun consejo.

  22. Hola carlos,
    Soy novata y necesito instalar samba como dominio pero lo he intentado varias veces desde cero y nada. nose si me podrias ayudar

    Utilizo vmware y mi problema es el mismo que el de varios el NXDOMAIN , no me aclaro mas bien con las ip’s la configuaciones es decir edito

    etc/network/interfaces con ip statica pero claro despues pierdo la red pero agrego otra para poder seguir descargando las librerias pero aun asi no me sale.

    Lo que no entiendo es si tengo una ip statica en /etc/hosts que he de poner porque me sale también 127.0.0.0 ??? y en la configura cion de samba en smb.conf en forwards que he de poner. porque he probado mil y una cosas y no me sal y nose si es por vmware.

    Agradeceria muxissimo tu ayuda !!

  23. Carlos:
    A que crees que se deba que en la version 4.2 la instalación me permita usar AD como base de autenticación y ahora configuré un nuevo servidor con la version 4.4.5 y ya no puedo usarla como base de autenticación. Los clientes se puede unir a dominio e iniciar sesión sin ningun problema, pero hay unos servicios como el el watchguard que lo usa para asignar políticas y tampoco la libreta de direcciones.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s