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 [email protected]
Password for [email protected]:
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: [email protected]
Valid starting Expires Service principal
02/24/2018 19:38:37 02/25/2018 05:38:37 krbtgt/[email protected]
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 [[email protected]]:
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" [email protected]
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.