Skip to content

Instantly share code, notes, and snippets.

@Koratsuki
Last active April 13, 2022 17:07
Show Gist options
  • Save Koratsuki/bca8975a50cc0d9533f98e7009d35766 to your computer and use it in GitHub Desktop.
Save Koratsuki/bca8975a50cc0d9533f98e7009d35766 to your computer and use it in GitHub Desktop.
pdc+dlz_con_samba4_y_bind9_en_debian10.md

Samba4 + DLZ, o Samba4 con delegación de zona

Instalar un PDC con 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.

Nota2: En este entorno se utilizará como ejemplo el dominio: "INUTIL.CU", y el password de administración será: "Admin*123"

Nota3: Si usted usa el CT de Debian 10 para Proxmox, active en CT_ID -> Options -> Features -> Nesting. Si no activa la opción Nesting tendrá problemas al iniciar algunos procesos como NTP, entre otros.

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.

# nano /etc/hosts

127.0.0.1	pdc.inutil.cu		pdc
127.0.0.1	tiempo.inutil.cu	tiempo
# 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
10.10.1.7	mx.inutil.cu		mx

2 → Configuración de la red

# nano /etc/network/interfaces

# 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

Y el resolv.conf:

# nano /etc/resolv.conf

search inutil.cu
domain inutil.cu
nameserver 127.0.0.1
nameserver 10.10.1.2

3 → Instalar servicio DHCP

# apt install isc-dhcp-server

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

# 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: # nano /etc/dhcp/dhcpd.conf

autoritative;
ddns-update-style none;
default-lease-time 600;
log-facility local7;

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.230;
    option routers 10.10.1.253;
    option subnet-mask 255.255.255.0;
    option broadcast-address 10.10.1.255;
    option netbios-name-servers 10.10.1.4;
    option netbios-node-type 8;
    get-lease-hostnames true;
    use-host-decl-names true;
    option ntp-servers 10.10.1.4;
    deny unknown-clients;
}
# Nota: Podemos añadir cuantas PCs necesitemos basados en su MAC address
host test {
    option host-name "test.inutil.cu";
    hardware ethernet 00:0c:29:ab:b1:62;
    fixed-address 10.10.1.151;
}

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: # nano /etc/ntp.conf

broadcast 10.10.1.255

Guardamos y reiniciamos el servicio ntp. Recordemos que después de compilar samba debemos hacer algunos ajustes a ntp, lo cual veremos más adelante.

# /etc/init.d/ntp restart

Antes de continuar debemos deshabilitar IPv6 añadiendo al final del fichero /etc/sysctl.conf:

# nano /etc/sysctl.conf

Deshabilitando IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

Ejecutar:

# sysctl -p

Y reiniciamos el sistema.

# reboot

Ahora necesitaremos algunos paquetes que intervienen en el proceso de compilación de Samba 4 y Bind 9.

# apt install git acl attr autoconf bison nettle-dev build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev perl perl-modules pkg-config python-all-dev python-dev python-dnspython python-crypto python3-gpg python-markdown python3-markdown python3-dev lmdb-utils xsltproc zlib1g-dev rcconf ccze mlocate telnet libssl-dev libgeoip-dev libkrb5-dev libxml2-dev libdb-dev liblmdb-dev libjansson-dev libgpgme-dev libarchive-dev ldb-tools libldb-dev libldb1 python-ldb python-ldb-dev python3-ply python3-dns python3-dnspython libtasn1-bin

Imágenes de kerberos:

0- DOMINIO.CU
1- pdc.tudominio.cu
2- pdc.tudominio.cu

5 → Compilando y configurando Bind 9

# cd /opt
# wget -c https://ftp.isc.org/isc/bind9/cur/9.11/bind-9.11.9.tar.gz

# groupadd -g 23 bind
# mkdir -p /var/run/named
# useradd -g bind -u 23 -d /var/run/named -M -s /sbin/nologin bind
# chown bind:bind /var/run/named

# tar -zxvf bind-9.11.9.tar.gz
# cd bind-9.11.9

./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc/bind --localstatedir=/var --enable-threads --enable-largefile --with-libtool --enable-shared --enable-fixed-rrset --enable-static --with-openssl=/usr --with-gssapi=/usr --with-gnu-ld --with-dlz-bdb=yes --with-dlz-filesystem=yes --with-dlz-ldap --with-dlz-stub=yes --with-dlopen=yes --with-randomdev=/dev/urandom --with-geoip=/usr --with-ecdsa --with-libxml2 CFLAGS=-fno-strict-aliasing

# make -j 4
# make install

# mkdir /var/log/bind9
# chown bind:bind /var/log/bind9
# cd /var/log/bind9
# touch bind.err bind.info bind.warn bind.log 
# chmod -R 664 *; chown -R root:bind *

# mkdir -p /var/cache/bind
# chmod 775 /var/cache/bind; chown -R root:bind /var/cache/bind

# cd /etc/bind/
# rndc-confgen -a
# chmod 644 /etc/bind/rndc.key
# chown bind /etc/bind/rndc.key

Creamos el archivo named.conf con el siguiente contenido:

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
listen-on-v6 { none; };
auth-nxdomain yes;
allow-query { any; };
allow-update { any; };
dnssec-validation no;
empty-zones-enable no;
notify yes;
also-notify { 10.10.1.2;};
//allow-transfer { 10.10.1.3;}; // si va a ser transferencia de zona a otro servidor de dns esclavo
notify-source 10.10.1.2;
transfer-source 10.10.1.2;
recursion yes;
allow-recursion { any; };
forwarders { 200.55.128.3; 200.55.128.4;};
tkey-gssapi-keytab "/var/lib/samba/bind-dns/dns.keytab";
directory "/var/cache/bind";
};
include "/var/lib/samba/bind-dns/named.conf";
include "/etc/bind/rndc.key";

logging {
  channel err {
      file "/var/log/bind9/bind.err";
      severity error;
      print-time yes;
      print-category yes;
      print-severity yes;
  };
  channel info {
      file "/var/log/bind9/bind.info";
      severity info;
      print-time yes;
      print-category yes;
      print-severity yes;
  };
  channel warn {
      file "/var/log/bind9/bind.warn";
      severity warning;
      print-time yes;
      print-category yes;
      print-severity yes;
  };
  channel log {
      file "/var/log/bind9/bind.log";
      severity debug 1;
      print-time yes;
      print-category yes;
      print-severity yes;
  };
  category default { err; info; warn; log; };
};

Para chequear que la configuración esta bien:

# named-checkconf

Y pasamos a compilar Samba4 pues necesitaremos hacer algunos arreglos a bind contra samba antes de continuar.

6 → Compilando y configurando Samba 4

Descargar:

# cd /opt
# https://download.samba.org/pub/samba/stable/samba-4.10.6.tar.gz

# tar -zxvf samba-4.10.6.tar.gz
# cd samba-4.10.6

# ./configure -p --enable-fhs --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-debug --enable-selftest --cross-answers --cross-execute --disable-cups --disable-iprint --sbindir=/usr/sbin --mandir=/usr/share/man -j 2 --enable-selftest --enable-gnutls

# make -j 4
# make install

Probando las configuraciones:

# smbd -b | grep "CONFIGFILE"
CONFIGFILE: /etc/samba/smb.conf
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
LOCKDIR: /var/lock/samba
STATEDIR: /var/lib/samba
CACHEDIR: /var/cache/samba
PRIVATE_DIR: /var/lib/samba/private

Provisionamos el directorio

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

O podemos usar:

samba-tool domain provision --dns-backend=BIND9_DLZ --realm=INUTIL.CU --domain=INUTIL --server-role=dc --function-level=2008_R2 --adminpass=Admin*123

Un ejemplo de provisionamiento:

# samba-tool domain provision --use-rfc2307 --interactive
root@addc:/opt/samba-4.10.6# samba-tool domain provision --use-rfc2307 --interactive
Realm [INUTIL.CU]:  
Domain [INUTIL]:  
Server Role (dc, member, standalone) [dc]:  
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:  BIND9_DLZ        
Administrator password: 
Retype password: 
INFO 2019-07-31 23:10:05,930 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2088: Looking up IPv4 addresses
INFO 2019-07-31 23:10:05,931 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2105: Looking up IPv6 addresses
WARNING 2019-07-31 23:10:05,931 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2112: No IPv6 address will be assigned
INFO 2019-07-31 23:10:06,886 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2278: Setting up share.ldb
INFO 2019-07-31 23:10:07,985 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2282: Setting up secrets.ldb
INFO 2019-07-31 23:10:08,756 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2288: Setting up the registry
INFO 2019-07-31 23:10:12,489 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2291: Setting up the privileges database
INFO 2019-07-31 23:10:14,196 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2294: Setting up idmap db
INFO 2019-07-31 23:10:15,415 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2301: Setting up SAM db
INFO 2019-07-31 23:10:15,657 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #882: Setting up sam.ldb partitions and settings
INFO 2019-07-31 23:10:15,658 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #894: Setting up sam.ldb rootDSE
INFO 2019-07-31 23:10:15,859 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1302: Pre-loading the Samba 4 and AD schema
Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs

INFO 2019-07-31 23:10:16,392 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1379: Adding DomainDN: DC=inutil,DC=cu
INFO 2019-07-31 23:10:16,669 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1411: Adding configuration container
INFO 2019-07-31 23:10:16,990 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1426: Setting up sam.ldb schema
INFO 2019-07-31 23:10:21,183 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1444: Setting up sam.ldb configuration data
INFO 2019-07-31 23:10:21,517 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1485: Setting up display specifiers
INFO 2019-07-31 23:10:24,439 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1493: Modifying display specifiers and extended rights
INFO 2019-07-31 23:10:24,518 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1500: Adding users container
INFO 2019-07-31 23:10:24,521 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1506: Modifying users container
INFO 2019-07-31 23:10:24,522 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1509: Adding computers container
INFO 2019-07-31 23:10:24,525 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1515: Modifying computers container
INFO 2019-07-31 23:10:24,527 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1519: Setting up sam.ldb data
INFO 2019-07-31 23:10:24,842 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1549: Setting up well known security principals
INFO 2019-07-31 23:10:24,906 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1563: Setting up sam.ldb users and groups
INFO 2019-07-31 23:10:25,700 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1571: Setting up self join
INFO 2019-07-31 23:10:32,777 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1128: Adding DNS accounts
INFO 2019-07-31 23:10:33,630 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1162: Creating CN=MicrosoftDNS,CN=System,DC=inutil,DC=cu
INFO 2019-07-31 23:10:33,674 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1175: Creating DomainDnsZones and ForestDnsZones partitions
INFO 2019-07-31 23:10:34,306 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1180: Populating DomainDnsZones and ForestDnsZones partitions
INFO 2019-07-31 23:10:37,711 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1262: See /var/lib/samba/bind-dns/named.conf for an example configuration include file for BIND
INFO 2019-07-31 23:10:37,712 pid:12189 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1264: and /var/lib/samba/bind-dns/named.txt for further documentation required for secure DNS updates
INFO 2019-07-31 23:10:38,068 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1992: Setting up sam.ldb rootDSE marking as synchronized
INFO 2019-07-31 23:10:38,227 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1997: Fixing provision GUIDs
INFO 2019-07-31 23:10:40,962 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2351: A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf
INFO 2019-07-31 23:10:40,963 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2352: Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
INFO 2019-07-31 23:10:42,181 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2062: Setting up fake yp server settings
INFO 2019-07-31 23:10:42,722 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #491: Once the above files are installed, your Samba AD server will be ready to use
INFO 2019-07-31 23:10:42,722 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #495: Server Role:           active directory domain controller
INFO 2019-07-31 23:10:42,722 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #496: Hostname:              addc
INFO 2019-07-31 23:10:42,723 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #497: NetBIOS Domain:        INUTIL
INFO 2019-07-31 23:10:42,723 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #498: DNS Domain:            inutil.cu
INFO 2019-07-31 23:10:42,723 pid:12189 /usr/lib/python3/dist-packages/samba/provision/__init__.py #499: DOMAIN SID:            S-1-5-21-1536439411-831925838-3783139819

Permisos a la configuración de bind en la carpeta de samba:

# chgrp bind /var/lib/samba/private/dns.keytab
# chmod g+r /var/lib/samba/private/dns.keytab

Copiar el krb5.conf del samba4 al sistema

# mv /etc/krb5.conf{,.orig}
# cp /var/lib/samba/private/krb5.conf /etc/

Creamos el archivo:

# nano /var/lib/samba/private/named.conf.update.static

Con el siguiente contenido:

grant *.inutil.cu wildcard *.1.10.10.in-addr.arpa. PTR TXT;
grant local-ddns zonesub any;

Creamos la carpeta de samba:

# mkdir /var/run/samba

Cambiamos el propietario y el grupo a /var/lib/samba/bind-dns:

# chown -R root:bind /var/lib/samba/bind-dns
# chmod 775 -R /var/lib/samba/bind-dns
# mkdir -p /var/run/named
# chmod 775 -R /var/run/named
# chown root:bind /var/run/named

Y la carpeta de NTP:

# mkdir /var/lib/samba/ntp_signd
# chgrp ntp /var/lib/samba/ntp_signd/
# chmod 750 /var/lib/samba/ntp_signd/

Ahora copiamos a /etc/init.d/ los scripts de inicio de bind9 y samba. Los cuales extraeremos de los respectivos paquetes en el repositorio. Después de copiarlos a /etc/init.d debemos hacerlos ejecutables y ponerlos a que inicien con el sistema.

# cd /var/cache/apt/archives

# apt install -dy samba bind9

# dpkg -x samba_2%3a4.9.5+dfsg-5_amd64.deb .
# dpkg -x bind9_1%3a9.11.5.P4+dfsg-5.1_amd64.deb .

# cd etc/init.d/
# chmod -R 755 *
# mv * /etc/init.d/

# cd /etc/init.d
# update-rc.d bind9 defaults
# update-rc.d samba-ad-dc defaults
# update-rc.d nmbd defaults
# update-rc.d smbd defaults

7 → Adaptando un poco más el servicio NTP a trabajar con Samba4

Editar el archivo de configuración y adaptarlo a nuestras necesidades, pero debemos poner obligatoriamente: # nano/etc/ntp.conf logfile /var/log/ntpd.log broadcast 10.10.1.255 ntpsigndsocket /var/lib/samba/ntp_signd/

# Comentamos las lineas restrict y ponemos así solamente la que dice:

restrict -4 default kod notrap nomodify nopeer noquery mssntp

restrict default mssntp
restrict tiempo.empresa.cu mask 255.255.255.255 nomodify notrap nopeer noquery
# Donde tiempo.empresa.cu es el servidor de tiempo de tu empresa

Y reiniciamos el sistema, para comprobar de que iniciaron todos los scripts bien:

# reboot

Ahora probaremos si funciona:

# kinit administrator@INUTIL.CU
Password for administrator@INUTIL.CU:
Warning: Your password will expire in 41 days on Sat 07 Apr 2018 07:56:41 PM CDT

Ejecutamos klist:

# klist

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@INUTIL.CU

Valid starting       Expires              Service principal
02/24/2018 19:38:37  02/25/2018 05:38:37  krbtgt/INUTIL.CU@INUTIL.CU
	renew until 02/25/2018 19:38:32

Ahora crearemos la zona inversa del DNS:

# samba-tool dns zonecreate addc 1.10.10.in-addr.arpa
# samba-tool dns add addc 1.10.10.in-addr.arpa 4 PTR addc.inutil.cu
# samba-tool dns add localhost 1.10.10.in-addr.arpa 4 PTR inutil.cu.

Record del servidor dns:

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

Record del servidor de correo:

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

Record del servidor proxy:

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

Record del servidor jabber:

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

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

Y probamos:

# samba-tool dns query 127.0.0.1 inutil.cu @ ALL
Password for [administrator@INUTIL.CU]:
  Name=, Records=3, Children=0
    SOA: serial=1, refresh=900, retry=600, expire=86400, minttl=3600, ns=pdc.inutil.cu., email=hostmaster.inutil.cu. (flags=600000f0, serial=1, ttl=3600)
    NS: pdc.inutil.cu. (flags=600000f0, serial=1, ttl=900)
    A: 10.10.1.4 (flags=600000f0, serial=1, ttl=900)
  Name=_msdcs, Records=0, Children=0
  Name=_sites, Records=0, Children=1
  Name=_tcp, Records=0, Children=4
  Name=_udp, Records=0, Children=2
  Name=DomainDnsZones, Records=0, Children=2
  Name=ForestDnsZones, Records=0, Children=2
  Name=pdc, Records=1, Children=0
    A: 10.10.1.4 (flags=f0, serial=1, ttl=900)	

Ahora debemos actualizar el fichero de configuración de Samba 4, y dejarlo de la siguiente manera:

# Global parameters
[global]
netbios name = PDC
realm = INUTIL.CU
server role = active directory domain controller
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate
workgroup = INUTIL
idmap_ldb:use rfc2307 = yes
nsupdate command = /usr/bin/nsupdate -g
ldap server require strong auth = No

# Fuck you WannaCry/WannaCrypt
min protocol = SMB2
# Tested on some Win10 releases and some linux boxes
protocol = SMB2

log level = 1
log file = /var/log/samba/samba.log
max log size = 50

[netlogon]
path = /var/lib/samba/sysvol/inutil.cu/scripts
read only = No

[sysvol]
path = /var/lib/samba/sysvol
read only = No

La directiva "nsupdate command" lo que hace es utilizar el dns dinámico. Ahora comprobamos si actualiza dinámicamente el dns:

# samba_dnsupdate --verbose --all-names

Después de reiniciar ejecutamos netstat para ver si todo ocurrió bien:

# netstat -lptun

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:464             0.0.0.0:*               LISTEN      494/samba
tcp        0      0 10.10.1.4:53            0.0.0.0:*               LISTEN      449/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      449/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      446/sshd
tcp        0      0 0.0.0.0:88              0.0.0.0:*               LISTEN      494/samba
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      449/named
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      491/samba
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      493/smbd
tcp        0      0 0.0.0.0:49152           0.0.0.0:*               LISTEN      487/samba
tcp        0      0 0.0.0.0:49153           0.0.0.0:*               LISTEN      487/samba
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN      487/samba
tcp        0      0 0.0.0.0:3268            0.0.0.0:*               LISTEN      491/samba
tcp        0      0 0.0.0.0:3269            0.0.0.0:*               LISTEN      491/samba
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      491/samba
tcp        0      0 0.0.0.0:135             0.0.0.0:*               LISTEN      487/samba
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      493/smbd
tcp6       0      0 :::464                  :::*                    LISTEN      494/samba
tcp6       0      0 :::22                   :::*                    LISTEN      446/sshd
tcp6       0      0 :::88                   :::*                    LISTEN      494/samba
tcp6       0      0 :::636                  :::*                    LISTEN      491/samba
tcp6       0      0 :::445                  :::*                    LISTEN      493/smbd
tcp6       0      0 :::49152                :::*                    LISTEN      487/samba
tcp6       0      0 :::49153                :::*                    LISTEN      487/samba
tcp6       0      0 :::49154                :::*                    LISTEN      487/samba
tcp6       0      0 :::3268                 :::*                    LISTEN      491/samba
tcp6       0      0 :::3269                 :::*                    LISTEN      491/samba
tcp6       0      0 :::389                  :::*                    LISTEN      491/samba
tcp6       0      0 :::135                  :::*                    LISTEN      487/samba
tcp6       0      0 :::139                  :::*                    LISTEN      493/smbd
udp        0      0 10.10.1.4:53            0.0.0.0:*                           449/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           449/named
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1965/dhcpd
udp        0      0 10.10.1.4:88            0.0.0.0:*                           494/samba
udp        0      0 0.0.0.0:88              0.0.0.0:*                           494/samba
udp        0      0 10.10.1.4:123           0.0.0.0:*                           444/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           444/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           444/ntpd
udp        0      0 10.10.1.4:137           0.0.0.0:*                           488/samba
udp        0      0 10.10.1.255:137         0.0.0.0:*                           488/samba
udp        0      0 0.0.0.0:137             0.0.0.0:*                           488/samba
udp        0      0 10.10.1.4:138           0.0.0.0:*                           488/samba
udp        0      0 10.10.1.255:138         0.0.0.0:*                           488/samba
udp        0      0 0.0.0.0:138             0.0.0.0:*                           488/samba
udp        0      0 10.10.1.4:389           0.0.0.0:*                           492/samba
udp        0      0 0.0.0.0:389             0.0.0.0:*                           492/samba
udp        0      0 10.10.1.4:464           0.0.0.0:*                           494/samba
udp        0      0 0.0.0.0:464             0.0.0.0:*                           494/samba
udp        0      0 0.0.0.0:47625           0.0.0.0:*                           1965/dhcpd
udp6       0      0 :::88                   :::*                                494/samba
udp6       0      0 :::123                  :::*                                444/ntpd
udp6       0      0 :::10510                :::*                                1965/dhcpd
udp6       0      0 :::389                  :::*                                492/samba
udp6       0      0 :::464                  :::*                                494/samba

8 → Ahora veamos algunas opciones

Nivel funcional del dominio: # samba-tool domain level show

Si deseamos eliminar la complejidad de la contraseña:

# samba-tool domain passwordsettings set --complexity=off

Cantidad de caractéres mínimos para la contraseña

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

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

# samba-tool user create nombre-usuario password OPCIONES

Creando un usuario como ejemplo:

# samba-tool user create leslie.leon password --given-name="Leslie" --surname="León Sinclair" --department="Dpto Informatica" --mail=leslie.leon@inutil.cu

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

# samba-tool user disable pepe.perez

O habilitarlo:

# samba-tool user enable pepe.perez

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

# samba-tool user create adminad 'admin123*'

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.leon

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

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

Lo mismo realizaremos para el correo:

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

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

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 unir máquinas de windows/linux al dominio.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment