#PDC sencillo con Samba 4@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 administrator@INUTIL.CU:
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 proxy.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" --mail=leslie.leon@inutil.cu
# samba-tool user create pepe password --given-name="Jose" --surname="Perez Hernandez" --department="Dpto RRHH" --mail=pepe.perez@inutil.cu

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.

7 comentarios de “#PDC sencillo con Samba 4@Debian 9

  1. Muy buen articulo aunque por estos dias me interesan mas lo que dicen “joining samba DC to a windows server 2012 R2 AD” aqui te dejo algunos apuntes validos para que los estudies y posiblemente uses en articulos futuros
    – kea DHCP tambien de ISC es el posible sustituto natural de isc-dhcp-server,
    – si el sistema usa systemd como lo hace debian9 no es necesario condigurar ntp en caso de tenerlo como cliente con el servicio timedatectl, tambien el debian 9, en caso de querer usarlo como server de tiempo si en necesario ntp o chrony otra buena alternativa

  2. hola
    disculpe por la molestia, me gustaria por telefono o en persona, si puede me pasa al correo su direccion o telefono, yo vivo en la habana vieja.

  3. Justamente he estado buscando info sobre SAMBA como controlador de dominio y la verdad está bastante aislada y escasa, hay que dispararse la doc oficial. Me tienta la idea de tener un DC en mi red.

    Lo bueno de esto es que igual se puede hacer uso de RSAT de modo que tal parece que lo que se administra es un Server 2k#

    Gracias por compartir la info.

Deja un comentario

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