Montando un servidor Active Directory con Debian y Samba. Primera parte

Hola a tod@s. En esta serie de cursos os voy a enseñar como montar un servidor Active Directory para redes con equipos Windows bajo Debian (si vamos a montar un servidor, vamos a hacerlo como es debido, leñes). En esta primera entrega explicare la instalación y configuración del servidor y en la segunda enseñare a usar las herramientas de administración remota de Windows 7 y como unir los equipos al dominio (el Windows 7 propiamente dicho y un Windows XP). Mas adelante haré una tercera entrega aparte de como unir equipos con GNU/Linux ya que es algo que tengo pendiente de probar.

Esta idea me surgió mientras estoy (o estaba, depende de cuando leas esta entrada ) cursando un curso del paro de Técnico de reparación de equipos microinformáticos en el cual montábamos un servidor de red con Windows 2008 (no RC2) y me puse a buscar si podía implementar lo mismo bajo GNU/Linux y el resultado la verdad es bueno, hasta mi profesor se quedo sorprendido de la rapidez del servidor.

Antes de seguir, y seguramente muchos os preguntéis ¿Qué es Active Directory? Pues es el termino que usa Microsoft para referirse a su conjunto de herramientas para la administración de redes como el servidor DNS, la administración de los usuarios de la red, etc.

Necesitaremos lo siguiente:

  • Debian en su rama estable (en mi caso Wheezy 7.5 con XFCE como entorno de escritorio)
  • Samba 4
  • Un cliente con Windows 7/8/8.1 con el paquete para instalar las funciones de control del servidor remoto (necesario para administrar el servidor, como por ejemplo compartir una carpeta con los usuarios). Esto se explicara en el siguiente tutorial.

Configurando el servidor

Antes de seguir debemos de editar algunos archivos para que todo funcione, sobre todo para que los equipos de la red encuentren el servidor del dominio.

Lo primero es dar a nuestro servidor una dirección IP fija. En el caso de mi Debian de pruebas en Virtualbox uso networking, que es lo que viene de base, pero en el servidor real lo configure desde Network Manager, por lo que explicare como se hace en ambos.

Networking

El primer archivo que editaremos es /etc/network/interfaces.
# This file describes the network interfaces available on your system

and how to activate them. For more information, see interfaces(5).

The loopback network interface

auto lo
iface lo inet loopback

The primary network interface

auto eth0
iface eth0 inet static
address 192.168.0.67
netmask 255.255.255.0
gateway 172.26.0.1
dns-nameservers 192.168.0.67
dns-search clase.org
dns-domain clase.org

Siendo:

  • address: la IP de nuestro equipo.
  • netmask: la mascara de red. En una red pequeña o de una casa suele ser esta.
  • gateway: la puerta de enlace. Normalmente es la IP del router que nos da la salida a Internet.
  • dns-nameservers: La ip del servidor DNS. En este caso el del servidor, pero se puede añadir un segundo, por ejemplo las publicas de Google.
  • Las 2 ultimas indican el nombre de búsqueda del dominio y el nombre del dominio en si.

Ahora debemos añadir las siguientes lineas a /etc/hosts:
127.0.0.1 Matrix.clase.org Matrix
192.168.0.67 Matrix.clase.org Matrix

Con esto se resolverá el nombre del dominio para que pueda ser encontrado en la red. Matrix es el nombre que le di al servidor.

Por ultimo editamos /etc/resolv.conf:

nameserver 192.168.0.13

En algunos tutoriales que encontré añadían otra linea nameserver y un par de variables mas, pero en mi caso me ha bastado solo una linea.
Ahora reiniciamos el servicio de red y listo:

/etc/init.d/networking restart

Network Manager

Pulsamos con el botón derecho del ratón sobre el icono de redes y seleccionamos Editar las conexiones. Nos saldrán las redes que tengamos configuradas, pero solo nos interesa la llamada Red cableada 1 o como lo hayas nombrado. Hacemos doble click sobre ella y nos saldrá una nueva ventana y nos iremos a Ajustes de IPv4. En método seleccionamos Manual. Ahora pulsamos en Añadir y rellenamos todos los campos:
AC DC Debian - Network Manager


Ahora nos vamos a la pestaña General y nos aseguramos que esta marcado Todos los usuarios deben conectarse a esta red. Pulsamos en Guardar y salimos.

Instalando Samba 4

En nuestro caso vamos a descargar y compilar Samba 4 desde su pagina debido a que en Debian solo esta disponible a través del repositorio Backports y me dio problemas de dependencias.

Nos dirigimos a http://samba.org para descargarnos la ultima versión estable y descomprimimos el paquete en alguna carpeta.

La ultima versión estable a la hora de escribir este articulo es la 4.1.8 por lo que sera con la que trabajemos.

Para compilarlo necesitaremos instalar los siguientes paquetes:

apt-get install build-essential libacl1-dev libattr1-dev \
libblkid-dev libgnutls-dev libreadline-dev python-dev libpam0g-dev \
python-dnspython gdb pkg-config libpopt-dev libldap2-dev \
dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl

Una vez descargado y descomprimido abrimos una terminal y nos movemos hasta la carpeta y ejecutamos los siguientes comandos:
./configure --enable-debug
make
make install

La instalación por defecto es en  /usr/local/samba. Si bien admite el parámetro –prefix=/usr NO lo instala dentro de las directorios correspondientes (por ejemplo los binarios no los mete en /usr/bin)

Ahora añadimos las nuevas rutas en el PATH. En mi caso en /etc/bash.bashrc para que se aplique a todos los usuarios, root incluido.

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

Y también creamos un enlace dentro de /etc para que Samba encuentre el archivo de configuración:

ln -s /usr/local/samba/etc/ /etc/samba

Vamos ya a configurar el servidor Samba. Para ello ejecutamos:

samba-tool domain provision --realm=clase.org --domain=CLASE --adminpass=Contraseña --use-rfc2307

donde:

  • –realm: es el nombre completo del dominio.
  • –domain: es el dominio. Tiene que estar en mayusculas
  • –adminspass: es la contraseña del administrador de la red.
  • –use-rfc2307: para activar AC.

Si todo sale bien tras un ratito Samba terminara de configurarse. Si queréis conocer todas las opciones posibles basta con ejecutar:

samba-tool domain provision -h

Ahora vamos a editar el archivo /etc/samba/smb.conf. Por ahora lo que nos interesa es la siguiente linea:
dns forwarder = 192.168.0.1

Esta linea debe de apuntar al servidor DNS que nos da salida a Internet (en este caso, el router). Samba la toma por defecto de la configuración de la red pero es recomendable verificarlo.

Ahora iniciamos el servicio:

samba

y comprobamos la conexión ejecutando:

smbclient -L localhost -U%

Y si todo esta correcto veremos algo similar a esto:
comprobando que samba esta corriendo


En caso de que nos diese error de conexión verificamos los pasos del punto anterior. El log de Samba se encuentra en /usr/local/samba/var/log.samba

Ahora vamos a copiar el archivo /usr/local/samba/private/krb5.conf a /etc. Ahora vamos a comprobar que nos podemos conectar:

kinit administrator@CLASE.ORG

Ojo, el dominio tiene que escribirse en mayúsculas.

Acto seguido nos pedirá la contraseña del usuario (en este caso el del administrador) y si nos sale un mensaje similar a «Warning: Your password will expire in 40 days on Mon Jul 14 13:57:10 2014» es que salio correctamente.

Y hasta aquí la primera parte del tutorial. Nos leemos en el siguiente.

Ya lo comente varias veces en los comentarios, pero lo pongo aquí. Debido a que actualmente no dispongo de los recursos necesarios (solo tengo un PC en casa y esto lo monte durante la realización de un curso) y que hacerlo en maquinas virtuales es engorroso, me es imposible seguir. Si alguien con los conocimientos y el equipo quiere continuar con esto, es libre de hacerlo)

44 comentarios, deja el tuyo

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Lolo dijo

    Muy interesante, siempre quise saber cómo se hacía esto.

    ¿Es posible hacerlo usando SSH en vez de Samba?

    Tengo entendido que es mucho más rápido y seguro.

    1.    Claudio Concepcion dijo

      Estimado Lolo, eso es imposible, ya que SSH permite una sesión (y otras cosas, como transferir archivos y aplicaciones) a través del terminal entre computadoras con GNU Linux. Mientras Samba lo que constituye una alternativa para GNU Linux del sistema de Active Directory de Microsoft.

      Son Link lo que ha hecho es un controlador de dominio en GNU Linux.

  2.   Antonio dijo

    Muy buen tuto. Viene genial para gente como yo que estamos algo verdes en eso. Muchas gracias

  3.   Claudio Concepcion dijo

    ¡Gracias! Excelente guía. A probar…

  4.   adiazc87 dijo

    Gracias amigo, muy buena tu guía espero la segunda parte, por cierto lo has hecho trabajar con un ldap??

    Saludos.

  5.   Sebastian dijo

    Muy interesante, quedo esperando la continuación. Gracias.^_^

    PD: Creo que hay un pequeño error de transcripción en la configuración de /etc/network/interfaces, dice dns-domian cuando me parece que debe ir dns-domain.

  6.   wilson ruiz dijo

    Me ha parecido muy interesante este articulo. Ya que apenas estoy en proceso de aprendizaje y no tengo muchos conocimientos en esta materia y quiero aprender mas sobre gestiona y administración de sistemas operativos.

  7.   eliotime3000 dijo

    ¿Eso sirve para hacer carpetas compartidas en Debian o simplemente va para otro tutorial ese aspecto?

  8.   Gonzalo dijo

    Existe una distribución Linux llamada Resara Server basada en Ubuntu que sirve exclusivamente para levantar un controlador de dominio, yo lo probé y es muy fácil de usar, pude unir equipos al domino con ese servidor, dejo acá el howto, quizás a alguien le sirva – http://ostechnix.wordpress.com/2012/12/31/resara-server-an-alternative-opensource-linux-domain-controller-for-windows-active-directory-controller/

    1.    elav dijo

      Oh!!! Genial, el aporte del día.. Gracias 😉

      1.    Gonzalo dijo

        You’re welcome! 😀

    2.    The_Mastersok dijo

      Gracias por compartir!!!
      Saludos

  9.   oscar dijo

    Excelente tutorial, estaré a la espera del resto. Recuerdo cuando instale un PDF en debían 6 con samba 3 y ldap. Funcionaba pero debía usar las plantillas .pol para editar las directivas. En este caso como se administran dichas directivas?

  10.   Mario Guillermo Zavala Silva dijo

    Excelente la informacion… Gracias por esta…

    SALUDOS!!!

  11.   Cesar dijo

    Exelente…. estoy bastante interesado en esto……. para cuando la segunda parte??? o si tienes algun manual de esto hazmelo llegar por email… porfa!!!! gracias

  12.   The_Mastersok dijo

    Exelente tutorial….
    espero algún día ponerlo en práctica..
    Saludos y esperó la segunda parte!!!!

  13.   Leandro dijo

    Yo la verdad que hice una vez esto, pero no profundice casi nada… Quiero recomendar/te una herramienta, no se si la conoces o no, tampoco se sus limitaciones, pero para conectar con un servidor Active Directory no tuve problema, lo probe en una facultad y funciono muy bien. El programa se llama Likewise, hace lo mismo que todo lo que hiciste con Samba, nada más que no configuras tanto, es algo más resumido, claro está que podes modificar lo que necesites a tu gusto 🙂

    Espero que te sirva! Saludos

  14.   César dijo

    Muy interesante artículo, esperare con ansias la segunda entrega. Fue una gran sorpresa enterarme que es posible manejar un directorio activo “moderno” con Gnu/Linux, recuerdo haberlo hecho hace muchísimo tiempo atrás con un directorio activo tipo NT 4 y fue una gran desilusión no poderlo emularlo cuando Microsoft cambió la “estructura” de su LDAP en Windows 2000 Server.

    Saludos desde Ecuador =]

  15.   mmm dijo

    Hola. Muchas gracias!
    Tengo un par de dudas… para qué sirve exactamente el active directory?
    Y por otro lado, podrías enseñar, si podés, cómo hacer para auditar lo que hacen los usuarios?
    Saludos y gracias.

    Yo para audior implementé esto: http://chicheblog.wordpress.com/2011/01/21/como-auditar-la-actividad-de-los-usuarios-en-samba/
    pero si podés ampliarlo, o agregar algo que conozcas pues se agradece!
    saludos

  16.   RaulBaca dijo

    Buenos Noches, Saludos desde Perú.
    Tengo una consulta un poco diferente a todo lo publicado, mira para explicarte un poco mira tengo esta carpeta configurada en archivo /etc/samba/smb.conf

    [Privado]
    comment= Carpeta Privada
    path= /home/Privado
    read only= yes
    browseable= yes
    guest ok = no
    public= no
    write list= @comercial, @gestion
    valid users= @comercial, @gestion
    create mask= 0777
    directory mask= 0777

    Ahora va mi consulta todo funciona bien pero cuando desde un computador me logeo con el usuario «pepe» perteneciente al grupo «comercial» y desde otro computador me logeo con el usuario «coco» perteneciente al grupo «gestion», pasa lo siguiente que cuando creo un archivo o carpeta desde el usuario «pepe» y quiero borrar este directorio o archivo creado desde la otra PC con el usuario «coco» me dice que no puedo xq no tengo privilegios, pero el mismo autor si puede borrar este archivo o directorio, alcanzes.

    las carpeta privada se ah creado desde la siguiente manera:
    chmod -R 777 /home/Privado
    Trabajan bajo una misma red LAN.
    Utilizo Distro Ubuntu Server 14.xx
    Cabe recalcar que lo que quiero es que esta carpeta PRIVADA sea administrada por 2 a mas usuarios ahi la idea de trabajar con Grupos pero parece que hay algo que me esta faltando o omitiendo, espero su atencion y quedo atento a sus comentarios.

    1.    Thesaint dijo

      Amigo eso lo puedes lograr quitando las comas
      de esta manera.

      write list= @comercial @gestion
      valid users= @comercial @gestion

  17.   Raúl Baca Centeno dijo

    Hola Estimado,

    Me gustaria saber si todavia sigue en pendiente la segunda parte del curso, quedo atento a tus comentarios y gracias.

  18.   Miguel dijo

    Buenas tardes, recien hoy leo todos los comentario y tengo una maquina a media configuración, por tal razon me entero que no publicaras la segunda parte y quiero saber si se puede tener un ejecutable en una carpeta y varias tablas dbf, para accesar de varias computadoras.
    Favor contestar lo mas pronto posible.

  19.   Raul Baca dijo

    Estimados,
    Quisiera saber si todavia esta en pendiente la segunda parte de este interesante tutorial, de antemano les agradesco su atencion.
    gracias.

  20.   jaraneda dijo

    Excelente tutorial, ojala te animes a la segunda parte, me podrias indicar cuales son las herramientas funciones de control del servidor remoto para descargarlas y probar.

    Saludos.

  21.   BETO dijo

    Te felicito, y la segunda parte?

  22.   Daniel Bernal dijo

    Interesante articulo, has sacado la siguiente versión?

  23.   levy dijo

    Muy buen tutorial, solo una pregunta la segunda parte, como seria o con este tutorial finaliza?

  24.   SARA dijo

    ME GUSTA LA IDEA DE APRENDER COSAS NUEVAS, GRACIAS DAVID POR COMPARTIR TUS CONOCIMIENTOS ,
    SALUDOS

    POSDATA: EN EL TEMA DEL APRENDIZAJE PROBARE HACERLO EN MI MAQUINA VIRTUAL DEBIAN COMO SERVIDOR Y CON UN GRUPOS DE VIRTUALES CLIENTES , UNA CON WIN7 Y OTRA CON WIN8.

  25.   edgar dijo

    Esta guia esta incompleta, no especificas directorios, te dejas cosas random, yo si fuera tu la repetiria

    1.    elav dijo

      O bien podrías completarla y escribirla tu mismo, con gusto te la publicamos.

  26.   ada tapia dijo

    como configurar un servidor en debian 5 para poder conectarse de manera remota a un xp

  27.   francisco dijo

    hola que tal cuando hago:
    root@pdc:~# apt-get install build-essential libacl1-dev libattr1-dev libblkid-dev \ libgnutls-dev libreadline-dev python-dev libpam0g-dev \ python-dnspyth gdb pkg-config libpopt-dev libldap2-dev \ dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2 ac1
    me dice:
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Package build-essential is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    E: Package build-essential has no installation candidate

    alguna ayuda?gracias

  28.   Anónimo dijo

     

    1.    Anónimo dijo

      no estan configurados los repositorios

  29.   Carlos dijo

    Se que mi comentario no lo vas a publicar. El artículo es bastante malo, falta decir como se configura kerberos, ya que lo aplicas en los requisitos. ¿Para que compilar Samba?, la versión 4 ya está disponible. Con la configuración que has puesto, el Kinit, te da error fijo NT_STATUS_DENIED!. Para todos los interesados en iniciarse : https://help.ubuntu.com/lts/serverguide/samba-dc.html