martes, 1 de octubre de 2013

Controlador de Dominio con SAMBA 4 exactamente como un Microsoft Active Directory

1. CONTROLADOR PRIMARIO DE DOMINIO CON SAMBA 4 (ACTIVE DIRECTORY)

2.1 SAMBA 4

Samba es el Active Directory de Linux, es Open Source y te permite compartir tus archivos y documentos en una misma red en una máquina UNIX. Utiliza para ello el protocolo SMB compatible para todos los sistemas operativos de Linux pero además con sistemas Windows o Mac, incluso para el sistema operativo antiguo de Windows MS-DOS.
Samba 4, soporta el inicio de sesión de ‘Active Directory’ y protocolos de clientes de administración compatibles con Windows XP, Windows 7 y Mac OS X.
Soporta la política de grupos.
Tiene un servidor interno de LDAP con semántica AD.
Integra un servidor Kerberos, para permitir Single Sign-On en la red.
Nueva infraestructura de RPC.
Soporte para Python.

2.2. CONTROLADOR ACTIVE DIRECTORY

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.

3. SISTEMA OPERATIVO

La presente instalación, se la hará en un Sistema Operativo Linux, Distribución Debian, Versión 7 (Wheezy).

4. PAQUETES INSTALADOS

samba4
samba-common
smbclient4
ntp
krb5-client

5. LEVANTAMIENTO Y CONFIGURACIÓN DEL DOMINIO

5.1. INSTALACIÓN DE SAMBA4

En primer lugar configuraremos la  red de nuestro servidor PDC, editando el archivo /etc/network/interfaces, y utilizaremos la IP 172.16.5.216 como PDC.

auto eth0
iface eth0 inet static
address 172.16.5.216
netmask 255.255.0.0
gateway 172.16.4.4
dns-nameservers 172.16.5.216 8.8.8.8
dns-search cardcam.com

Nótese que como primer servidor de nombres (DNS principal), se ha establecido al mismo PDC, como secundario elegimos alguno que nos permita acceder a Internet ( podría ser el que provee el ISP o único público de Google en este caso), y que la búsqueda dns se hace sobre el nombre de dominio de ejemplo CARDCAM.COM

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; para agregar servidores NTP, editar el archivo /etc/ntp.conf

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

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 primer lugar, se debe instalar 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 acl

Una vez finalizada la instalación, verificar que el puerto 9418 que es por el cual se hace la descarga GIT, sea admitido por el Firewall, ya que de no ser así, git dará error; una vez verificado, se bajará la versión más reciente del repositorio GIT, para ello:

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

Una vez finalizada la descarga se procede a compilar:

# cd /usr/src/samba4
# ./configure –enable-debug
# make
# make install

Luego, agregue los paths en el archivo /etc/profiles. Ya que estos paths contienen varias herramientas de samba para ejectuarlas directamente desde la consola:

/usr/local/samba/sbin:/usr/local/samba/bin:

Una vez terminada la compilación del paquete, se procederá a configurar el Controlador de Dominio, para ello haga un reinicio de la máquina, y a continuación escriba:

# samba-tool domain provision --realm cardcam.com --domain CARDCAM --adminpass P@ssword --server-role=dc --use-ntvfs

Note que debe reemplazar “cardcam.com” por el nombre del dominio a levantar, y adicionalmente que la “adminpass” es una password compleja que contiene un caracter mayúsculo con al menos un número y caracter especial, si no se cumple esta condición en la password, tendrá que volver a compilar el paquete de samba y vovler a ejecutar la instrucción con mucho cuidado.

Luego de ello, el archivo de configuración de samba que OJO, se encuentra en /usr/local/samba/etc/smb.conf deberá contener algo similar a lo siguiente:

# Global parameters
[global]
        workgroup = CARDCAM
        realm = cardcam.com
        netbios name = PDC
        server role = active directory domain controller
        dns forwarder = 8.8.8.8
       server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd,$ kcc, dnsupdate, dns, smb
        dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc,$ spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupke$
        allow dns updates = nonsecure
[netlogon]
        path = /usr/local/samba/var/locks/sysvol/cardcam.com/scripts
        read only = No
        Browseable = No
[sysvol]
        path = /usr/local/samba/var/locks/sysvol
        read only = No
        Browseable = No

Nótese que el parámetro allow dns updates debe tener el valor nonsecure en vez de True como en la versión de Samba 4.0.
Ahora se instalará 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, y cuando solicite el servidor administrativo, escribimos el hostname donde se aloja el Samba4, pero muy importante en mayúsculas! Una vez instalado podemos testear por ejemplo la password de administrador.
Luego, editar el archivo /etc/resolv y verificar que el nameserver sea el PDC y se especifique el dominio de la siguiente manera:

search cardcam.com
domain cardcam.com
nameserver 172.16.5.216

Finalmente, reiniciar el equipo y arrancar el servicio de Samba para que se levante el controlador de dominio:

# /usr/local/samba/sbin/samba start

Ahora lo que queda es realizar varias pruebas para verificar la funcionalidad del servicio, para ello verificar:

# host -t SRV _ldap._tcp.cardcam.com.
_ldap._tcp.cardcam.com has SRV record 0 100 389 pdc.cardcam.com.

5.1.2 CREAR SCRIPT DEL SERVICIO

Lo primero que haremos es bajar de su repositorio samba4.init y guardarlo en /etc/init.d de nuestro sistema:

# wget http://anonscm.debian.org/loggerhead/pkg-samba/samba4/unstable/download/head:/1833%40fc4039ab-9d04-0410-8cac-899223bdd6b0:trunk%252Fsamba4:debian%252Fsamba4.init/samba4.init -O /etc/init.d/samba4

Ahora, asignaremos permisos de ejecución al script que acabamos de bajar:

# chmod +x /etc/init.d/samba4

Perfecto, ahora cambiaremos las rutas por defecto donde tenemos instalado nuestro Samba4.

# sed -i 's|/usr/sbin|/usr/local/samba/sbin|g' /etc/init.d/samba4
# sed -i 's|/etc/samba|/usr/local/samba/etc|g' /etc/init.d/samba4

Desde este preciso momento ya podemos iniciar o parar nuestro servicio con:

# /etc/init.d/samba4 start
# /etc/init.d/samba4 stop

Ahora, solo nos falta configurar el inicio automático del servicio con el siguiente comando para tener todo listo:

# update-rc.d samba4 defaults

5.2. UNIR MÁQUINAS MS-WIN AL DOMINIO

Para agregar un equipo Windows al dominio, ya no será necesario editar el registro de Windows para unir a “Otros Dominios”, ya que Samba 4 es reconocido como si se tratase de un Control de Dominio Microsoft.

Ahora procederemos a agregar el equipo al dominio:



Comprobamos como el cliente se ha agregado correctamente al dominio:



5.3. ADMINISTRAR EL DOMINIO

En esta sección, procederemos a configurar una herramienta que servirá para administrar el dominio y realizar algunas de las tareas básicas (creación de usuarios, grupos, configuración de perfiles, políticas de grupo, etc.).

Para ello, vamos a utilizar el conjunto de herramientas gratuitas que ofrece Microsoft, conocido como RSAT (Remote Server Administration Tool). Dichas herramientas, disponibles tanto para Windows 7 como Windows 8, permitirán gestionar nuestro controlador de dominio, de forma idéntica a si estuviéramos delante de un Windows 2008R2 Server.

El primer paso será descargar de la página de Microsoft la versión RSAT adecuada a nuestro equipo cliente. http://www.microsoft.com/es-es/download/details.aspx?id=7887:




Una vez instalado el paquete de herramientas, procederemos a habilitar aquellas que necesitemos, para ello deberemos ir a > Panel de Control > Programas y características > Activar características de Windows, y sobretodo activar “Usuarios y Equipos de Active Directory, DNS y Políticas de grupo”:





24 comentarios:

  1. Saludos amigo, tengo un servidor openldap en Debian7 pero debo instalar samba para soportar una red de equipos windows y linux. Puedes ayudarme con información como instalar y configurar samba en el servidor Debian7 y en los equipos clientes? Gracias por la ayuda que puedas prestarme.

    ResponderEliminar
    Respuestas
    1. Bueno mira, realmente usando openldap+samba3 como DC en Debian 7 me ha dado muchos problemas, ya que las plantillas de samba para openldap estaba un poco desactualizadas. En realidad si tienes una red mixta con equipos windows y linux sería más práctico usar Samba4 como DC, ya que es 100% compatible con equipos windows, para el caso de los linux, bastaría con instalar un samba3+kerberos para poder unirlas al dominio. Si fuera el caso de que todos tus clientes sean linux, no haría falta usar samba.

      Eliminar
  2. Muy bueno el tutorial, me imagino que debe de funcionar muy bien en ubuntu 13.10, Saludos

    ResponderEliminar
    Respuestas
    1. Al ser Ubuntu un derivado directo de Debian, yo también supongo que debe funcionar a la perfección :D

      Eliminar
  3. excelente informacion, justo lo que buscaba, ya que estoy en vias de actualizar un PDC con samba3 y ldap, muchos dolores de cabeza con perdidas de dominio en W7
    te pregunto entonces, como se integra samba4 con ldap?
    o es suficiente con samba4 y RSAT de windows?

    ResponderEliminar
    Respuestas
    1. Estimado, el samba4 trae integrado (para nuestro agrado) un servidor LDAP interno y un DNS interno, no hace falta que te preocupes por ello, con las herramientas de RSAT lo haces todo al puro estilo de Active Directory Windows.

      Eliminar
  4. Cordial saludo. Los clientes windows que aparecen en los tutoriales tienen IP estaticas o dinamica? porque yo he instalado DNS + DHCP + SAMBA y el servicio de AD solamente funciona con IP estaticas en los clientes windows, hay forma para que SAMBA funcione con direccionamiento dinamico en los clientes wndows?. Gracias

    ResponderEliminar
    Respuestas
    1. Pues sí, únicamente configura un servidor DHCP, lo puedes hacer en el mismo servidor que aloja a SAMBA4, te recomiendo por experiencia que uses ISC-DHC-SERVER, es sencillo de configurar con un par de líneas nada más, y listo, tu Controlador de Dominio con Samba4 y un DHCP server.

      Eliminar
  5. como se lograría la hacer que samba y dhcp logren funcionar en conjunto :c, al intalar DHCP me deja de autenticar :C

    ResponderEliminar
    Respuestas
    1. Instala ISC-DHCP-SERVER, yo lo he configurado conjutamente con SAMBA4 y anda a la perfección. No olvides usar como servidor DNS al SAMBA4, si lo instalas en el mismo equipo no hay problema. Suerte.

      Eliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Amigo muy bueno el artículo. Yo tengo zentyal 3.3, con samba4 instalado. Rsat me trabaja muy bien desde una pc con w7, pero resulta que las politicas de grupo no surten efecto. las puedo conficurar y todo muy bien, pero no hacen nada. las politicas de contraseñas, por ejemplo, siguen con estaban por defecto, por mucho que las cambie, samba no se entera. Te agradecería que me dieras un norte, para ver que tengo mal...

    Saludos

    ResponderEliminar
  8. Amigo, perfecto el artículo. Tengo un inconveniente con el RSAT. Al tratar de crear una GPO, me indica: El sistema no puede encontrar el archivo especificado. Tendras una luz. gracias ...

    ResponderEliminar
  9. Buen dia.

    No confundan samba 4, con el samba que siempre hemos utilizado con openldap para autenticar maquinas windows. Samba4 es un AD pero corriendo en Linux. Usa LDAP pero ojo, es el protocolo, no usa OpenLdap. Linux no se une al dominio samba, ni AD, Linux lo que hace es autenticar bajo LDAP, pero como cliente no autenticas como lo hace un WIndows. Actualmente configure un samba como pdc y bdc en debian 7, autentico sin problemas usuarios y sistemas windows 7.

    ResponderEliminar
  10. saludos sucede que estoy siguiendo paso a paso el tutorial pero me que de en esta parte:
    Luego, agregue los paths en el archivo /etc/profiles. Ya que estos paths contienen varias herramientas de samba para ejectuarlas directamente desde la consola:
    /usr/local/samba/sbin:/usr/local/samba/bin:

    El comando no me funciona dice que el directorio no existe
    le agradezco su colaboracion

    ResponderEliminar
  11. Que tal?


    Excelente tutorial, una pregunta ¿ Puedo agregar usuarios de la misma forma con el Rsat como si estuviera en un windows server? aplicar scripts de inicio, etc ?.. saludos

    ResponderEliminar
    Respuestas
    1. Hola, así es, puedes usar al RSAT para estar como si estuvieras tal cual en un MS Active Directory. Lo único que hasta ahora Samba4 no es capaz de hacer, es realizar una relación de confianza en doble vía con otro MS Domain, de ahí puedes gestionar grupos, usuarios y equipos con OU. Además tienes la opción de crear políticas de grupo (GPO) con mucha facilidad.

      Eliminar
  12. hola muy buen tutorial,solamente tengo una duda donde colocas el casa.local en samba para que windows te lo reconozca como dominio

    ResponderEliminar
    Respuestas
    1. Hola, espero no responderte muy tarde jejeje... Bueno respondiendo a tu pregunta, al hacer "samba-tool domain provision --realm cardcam.com --domain CARDCAM --adminpass P@ssword --server-role=dc --use-ntvfs", el parámetro a usar sería --realm casa.local y --domain CASA

      Eliminar
  13. hola al hacer el path falla es decir en este paso


    /usr/local/samba/sbin:/usr/local/samba/bin:

    ResponderEliminar
    Respuestas
    1. Hola, este paso sirve sólamente para llamar a las instrucciones de samba4 sin necesidad de escribir el path completo. Básicamente esos paths los incluyes seguido de "PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" y " "PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"" del archivo /etc/profile

      Eliminar
  14. Hola, hasta q punto puedes llegar a crear GPO en samba4 para ambientes mixtos, (ubuntu, win7, win10, win8), que tan recomendable es tener active directory sobre samba 4???

    Gracias

    ResponderEliminar
  15. De antemano muchas gracias por el tutorial yo tengo instalado samba4 con bind9 y dhcp funcionando ok pero con una gran frustación no e podido validar squid3 con los usuarios de samba4 creeme me leeido unos cuantos manuales si alguien ha logrado hacerlo

    ResponderEliminar