Configurar Samba 4 como PDC en Debian 9

Instalar un PDC sencillo [sin delegación de zona] con Samba4 es tan fácil como seguir el siguiente procedimiento:

Nota: Asumimos que usted posee una máquina virtual/contenedor de proxmox actualizado con dist-upgrade, si no es así, por favor hágalo antes de comenzar.

0 → Instalar utilitarios necesarios

# apt install mc dnsutils net-tools openssh-server

1 → Editar el archivo /etc/hosts y dejarlo de la siguiente manera, en dependencia de los nombres de host que tengamos.

127.0.1.1 pdc.inutil.cu pdc
# Our servers
10.10.1.1 gw.inutil.cu gw
10.10.1.2 dns.inutil.cu dns
10.10.1.3 mail.inutil.cu mail
10.10.1.5 proxy.inutil.cu proxy
10.10.1.6 jabber.inutil.cu jabber

2 → Configuración de la red

# The loopback network interface
auto lo eth0
iface lo inet loopback

iface eth0 inet static
address 10.10.1.4
netmask 255.255.255.0
gateway 10.10.1.1
dns-nameservers 127.0.0.1
dns-domain inutil.cu
dns-search inutil.cu
allow-hotplug eth0

3 → Instalar servicio DHCP

# apt install isc-dhcp-server

Editar /etc/default/isc-dhcp-server de la siguiente manera:

# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid

# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth0"
INTERFACESv6=""

Guardar los cambios, y hacer un backup de dhcpd.conf.

# mv /etc/dhcp/dhcpd.conf{,.orig}

Crear archivo nuevo dhcpd.conf y dejarlo de la siguiente manera:

autoritative;
subnet 10.10.1.0 netmask 255.255.255.0 {
option domain-name "inutil.cu";
option domain-name-servers 10.10.1.4;
range 10.10.1.150 10.10.1.250;
option routers 10.10.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 10.10.1.255;
option netbios-name-servers 10.10.1.4;
option ntp-servers 10.10.1.4;
}

host win2 {
option host-name "win2.inutil.cu";
hardware ethernet 00:0c:29:ab:b1:62;
fixed-address 10.10.1.149;
}

Nota: Podemos añadir cuantas PCs necesitemos basados en su MAC address

Para probar que la configuración está bien ejecutamos:

# dhcpd -t

Debe decir algo así:

Internet Systems Consortium DHCP Server 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid

Si el mensaje es distinto, tenemos algún error en la configuración y debemos revisarla nuevamente.

Reiniciando el servicio y chequear su estado:

# systemctl restart isc-dhcp-server
# systemctl status isc-dhcp-server

4 → Instalar servicio NTP

# apt install ntp

Editar el archivo de configuración y adaptarlo a nuestras necesidades, pero debemos poner obligatoriamente:

broadcast 10.10.1.255

Guardamos y reiniciamos el servicio ntp.

/etc/init.d/ntp restart

5 → Instalamos Samba4

# apt install samba winbind krb5-user krb5-config libpam-winbind libnss-winbind

Hacemos un backup de la config de samba ya que cuando provisionamos el directorio se sobre-escribe la configuración:

# mv /etc/samba/smb.conf{,.orig}

Nota: Si eres de los que sufre con SystemD y te instalas tu controlador de dominio en una distribución GNU/Linux[para hombrecitos] que no
posee ese engendro del mal, estás salvado, si no, sigue leyendo a continuación.

Antes de trabajar con el dominio debemos desactivar todos los daemons de samba.

# systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service
# systemctl disable samba-ad-dc.service smbd.service nmbd.service winbind.service

Provisionando el directorio:

# samba-tool domain provision --use-rfc2307 --interactive

La respuesta deberia ser:

Realm [INUTIL.CU]:
 Domain [INUTIL]:
 Server Role (dc, member, standalone) [dc]:
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
 DNS forwarder IP address (write 'none' to disable forwarding) [none]: none
Administrator password: admin123*
Retype password:
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=inutil,DC=cu
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=inutil,DC=cu
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              pdc
NetBIOS Domain:        INUTIL
DNS Domain:            inutil.cu
DOMAIN SID:            S-1-5-21-511959400-163067700-3142810978

Todo lo anterior es la salida del comando de provisionamiento del directorio, es decir, de la creación del directorio activo sobre samba por primera vez.
El password no sale impreso en pantalla cuando hacemos el provisionamiento, sólo lo pongo para que sepan cual fue, y sepan que nos lo va a pedir en varias ocaciones mientras estemos configurando el DNS.

Debemos configurar Kerberos con la config que genera samba:

mv /etc/krb5.conf /etc/krb5.conf.initial
ln -s /var/lib/samba/private/krb5.conf /etc/

Reiniciando todos los daemons de samba:

# systemctl unmask samba-ad-dc.service
# systemctl start samba-ad-dc.service
# systemctl status samba-ad-dc.service
# systemctl enable samba-ad-dc.service

Debemos añadir:

create mask = 0700
directory mask = 0644

a las secciones [netlogon] y [sysvol] del fichero de configuración de samba.

Para hacer uso de samba a través de otros programas externos recomiendan en la wiki poner el siguiente parametro al final de la directiva [global] del archivo de configuración de samba:

ldap server require strong auth = No

Antes de continuar, se recomienda[según la lista de correo de samba] reiniciar el server en cuestión.

# init 6

Reiniciado nuestro PDC, hagámosle la vida un poco más fácil a nuestros usuarios, pongamos la complejidad del pasword a «off» y el número mínimo de caracteres en el password a 6.

# samba-tool domain passwordsettings set --complexity=off
# samba-tool domain passwordsettings set --min-pwd-length=6

Ahora veremos la funcion de nuestro PDC:

# samba-tool domain level show

Nos debe devolver algo como esto:

Domain and forest function level for domain 'DC=inutil,DC=cu'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2

Haciendo algunas pruebas de samba y kerberos:

root@pdc:~# host -t A inutil.cu
inutil.cu has address 10.10.1.4
root@pdc:~# host -t A pdc.inutil.cu
pdc.inutil.cu has address 10.10.1.4
root@pdc:~# host -t SRV _kerberos._udp.inutil.cu
_kerberos._udp.inutil.cu has SRV record 0 100 88 pdc.inutil.cu.
root@pdc:~# host -t SRV _ldap._tcp.inutil.cu
_ldap._tcp.inutil.cu has SRV record 0 100 389 pdc.inutil.cu.
root@pdc:~# kinit administrator
Password for [email protected]:
Warning: Your password will expire in 41 days on Tue 03 Apr 2018 09:49:35 PM CDT

Habiendo visto esto sólo nos queda empezar a trabajar sobre el pdc. Primero crearemos el DNS que manejará las peticiones de las PCs del PDC. Lo primero es crear la zona:

# samba-tool dns zonecreate localhost 1.10.10.in-addr.arpa -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa 4 PTR inutil.cu. -U 'administrator'%'admin123*'

Record del servidor dns:

# samba-tool dns add localhost inutil.cu dns A 10.10.1.2 -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa 2 PTR dns.inutil.cu. -U 'administrator'%'admin123*'

Record del servidor de correo:

# samba-tool dns add localhost inutil.cu mail A 10.10.1.3 -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa 3 PTR mail.inutil.cu. -U 'administrator'%'admin123*'
# samba-tool dns add localhost inutil.cu @ MX 'mail.inutil.cu 10' -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa @ MX 'mail.inutil.cu 10' -U 'administrator'%'admin123*'

Record del servidor proxy:

# samba-tool dns add localhost inutil.cu proxy A 10.10.1.5 -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa 5 PTR proxy.inutil.cu. -U 'administrator'%'admin123*'

Record del servidor jabber:

# samba-tool dns add localhost inutil.cu jabber A 10.10.1.6 -U 'administrator'%'admin123*'
# samba-tool dns add localhost 1.10.10.in-addr.arpa 6 PTR jabber.inutil.cu. -U 'administrator'%'admin123*'

Podemos añadir cuantos records necesitemos, por ahora solo añadiremos dns, correo, proxy y jabber para hacer las pruebas.

6 → Añadir los usuarios del AD.

Añadir un usuario al AD de samba es tan sencillo como:

# samba-tool user create nombre-usuario password OPCIONES

Creando dos usuarios como ejemplo:

# samba-tool user create leslie password --given-name="Leslie" --surname="León Sinclair" --department="Dpto Informatica" [email protected]
# samba-tool user create pepe password --given-name="Jose" --surname="Perez Hernandez" --department="Dpto RRHH" [email protected]

En la consola debería devolver algo así como:

User 'leslie' created successfully

Si por alguna razon necesitamos deshabilitar a algún usuario:

# samba-tool user disable pepe

O habilitarlo:

# samba-tool user enable pepe

Ahora crearemos un usuario que manejará las conexiones entre el AD y los servicios:

# samba-tool user create adminad 'admin*123'

Que la cuenta no expire:

# samba-tool user setexpiry adminad --noexpiry

Lo agregamos a todos los grupos del AD:

# samba-tool group addmembers "administrators" adminad
# samba-tool group addmembers "Domain Admins" adminad
# samba-tool group addmembers "schema admins" adminad
# samba-tool group addmembers "enterprise admins" adminad
# samba-tool group addmembers "group policy creator owners" adminad

Para los que requieran acceso a internet crearemos un grupo:

# samba-tool group add navegacion_internet
# samba-tool group addmembers "navegacion_internet" leslie

Para los que no requieran acceso a internet crearemos otro grupo:

# samba-tool group add navegacion_nacional
# samba-tool group addmembers "navegacion_nacional" pepe

Lo mismo realizaremos para el correo, internacional:

# samba-tool group add correo_internet
# samba-tool group addmembers "correo_internet" leslie

Nacional:

# samba-tool group add correo_nacional
# samba-tool group addmembers "correo_nacional" pepe

Otras opciones

Si deseamos cambiar el password del usuario y que él lo defina en el próximo login:

# samba-tool user setpassword pepe --newpassword='Passw0rd' --must-change-at-next-login

Para ver todos los usuarios del dominio

# wbinfo -u

Para ver todos los grupos del dominio

# wbinfo -g

Y listo, a enredar máquinas de windows/linux dentro del dominio.

Probemos con un triste XP, jejejeje.

Revisamos que el dns del PDC esté activo.

Añadiendonos al dominio.

Bienvenido al dominio, colega…

Y por supuesto, debemos reiniciar para que se apliquen los cambios.

Nos logueamos como es debido…

Ya una vez dentro del dominio.

Entonces, como pudimos ver, no es tan complicado. Ahora a probar y a aplicar GPOs.

Un saludo a los que me leen y como siempre digo, ojalá les sirva.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

5 comentarios

  1. Firefox 42.0 Firefox 42.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0

    hola…
    espero q me pueda ayudar, vivo en la habana cuba y trabajo en la emce.
    100pre he trabajado utilizando windows server y proxy en debian…
    pero ahora estoy entrando en el mundo linux y me esta gustando mucho ademas de las virtualizaciones en proxmox…pero tengo una duda muy fuerte, quiero montar un server debian, PDC con Samba4 y delegación de zona..
    y las ayudas q he encontrado me estan dando un error…
    necesito q si esposible explique cada detalle..
    yo he estado utilizando debian 9.4, samba-4.8.0,bind-9.11.3.tar…


    • Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
      Firefox 63.0 Firefox 63.0 Ubuntu x64 Ubuntu x64
      Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:63.0) Gecko/20100101 Firefox/63.0

      A que te refieres con delegación de zona en el PDC AD.

  2. Firefox 42.0 Firefox 42.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0

    puedes hacer un tutorial de PDC con Samba4 y delegación de zona?
    es q se me presenta un error y me gustaria aclarar…
    si puedes utiliza…
    debian 9.4 64bit
    samba-4.8.0.tar
    bind-9.11.3.tar
    ———-

  3. Firefox 59.0 Firefox 59.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    hola como estas?
    muchas gracias por el tutorial q hiciste, pero tengo unas dudas y un errores q me gustaria comentar
    hice todo lo que dice en la web perfectamente con el mismo ip y nombre, incluso con diferentes versiones samba, y de bind…
    pero 100pre despues de install samba
    que escribo make install aparece:
    ——————————————————
    Waf: Leaving directory `/usr/local/src/samba-4.7.6/bin’
    ‘build’ finished successfully (46m0.680s)
    ——————————————————-
    y supuertamente debe haber terminado bien…
    cuando trato de verficar:
    smbd -b | grep «CONFIGFILE»
    desde ahi para abajo sale
    ——————————————————
    -bash: smbd: no se encontró la orden
    ——————————————————
    mi duda es si te falto algo o si estas mal?
    me gustaria q me ayudara!!!
    saludos
    version de debian 9.3

  4. Firefox 53.0 Firefox 53.0 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1; rv:53.0) Gecko/20100101 Firefox/53.0

    Hola he tratado de auntenticar zimbra contra un pdc creado con samba 4.3 y no logro que funcione.Soy nuevo en la administración de redes.Tienen alguna documentación donde explique el proceso?.Es necesario realizar cambios en smb.conf para que funcione.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*