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