Se acuerdan del PDC simple con Samba 4? Hoy complicaremos el asunto. Hoy haremos lo mismo pero con delegación de zona, por lo que necesitaremos compilar Samba 4 y Bind 9. Ahora tu seguro te preguntarás: ¿Por qué mejor no lo hacemos con el bind y el samba del repositorio? Y yo te responderé: «Porque el bind y el samba que vienen en el repositorio, no vienen compilados con la delegación de zona en mente».
Y entonces: ¿Qué es la delegación de zona?
Delegación de zona: Una delegación no es más que un puntero a un servidor DNS, ese otro servidor de DNS es responsable resolver un nombre.
Sabiendo eso, vamos a lo que nos toca.
En este tutorial me voy a saltar el dhcp, ntp, la configuración de la red y /etc/hosts ya que en el otro tutorial lo expliqué exhaustivamente.
Como les explicaba, necesitamos compilar Bind 9 y Samba 4, por lo que lo primero es descargarlos. Ahora bien, necesitaremos algunos paquetes que intervienen en al proceso de compilación.
0 → Programas necesarios para compilar:
# apt install acl attr autoconf bison 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 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
Y nos saldrán opciones a configurar[Kerberos].

Dominio

Servidor de Kerberos

Password changing server para Kerberos
Podemos rellenar esta información con lo que necesitemos, aunque en pasos posteriores samba cuando provisione el dominio, genera una configuración mejorada/adaptada al entorno que necesitamos.
1 → Compilando y configurando Bind 9
Descargamos, hacemos algunos ajustes y compilamos:
# wget -c https://ftp.isc.org/isc/bind9/cur/9.11/bind-9.11.2-P1.tar.gz # groupadd -g 23 bind # useradd -g bind -u 23 -d /var/run/named -M -s /sbin/nologin bind # tar -zxvf bind-9.11.2-P1.tar.gz # cd bind-9.11.2-P1 # ./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 # make install
Ahora algunos otros toques extras:
# 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 644 *; chown -R root:adm * # mkdir -p /var/cache/bind # chmod 775 /var/cache/bind; chown -R bind:bind /var/cache/bind # cd /etc/bind/ # rndc-confgen -a -r /dev/urandom # 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-enable no;
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/private/dns.keytab";
directory "/var/cache/bind";
};
include "/var/lib/samba/private/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; };
};
Y pasamos a compilar samba pues necesitaremos hacer algunos arreglos a bind contra samba antes de continuar.
2 → Compilando y configurando Samba 4
# wget -c https://download.samba.org/pub/samba/samba-4.7.5.tar.gz # tar -zxvf samba-4.7.5.tar.gz # cd samba-4.7.5 # ./configure --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 -j4 --enable-selftest --without-systemd # make # 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:
root@pdc:/etc/samba# 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: 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 See /var/lib/samba/private/named.conf for an example configuration include file for BIND and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba AD 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-1746660850-1884490242-2990293921
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
Linkear el krb5.conf del samba4 al del sistema
# mv /etc/krb5.conf{,.orig}
# ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf
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 al directorio /var/lib/samba/private/dns y creamos /var/run/named:
# chown -R root:bind /var/lib/samba/private/dns # chmod 775 -R /var/lib/samba/private/dns # mkdir /var/run/named # chmod 775 -R /var/run/named # chown root:bind /var/run/named
Arrancamos Bind 9:
# named -u bind -4 -d 3 &
Y Samba 4:
samba -i -M single &
Y revisamos los logs para ver si todo inició bien. Ahora probaremos si funciona:
root@pdc:~# 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 pdc 1.10.10.in-addr.arpa # samba-tool dns add pdc 1.10.10.in-addr.arpa 4 PTR pdc.inutil.cu
Y probamos:
root@pdc:~# 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 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 create mask = 0700 directory mask = 0644 [sysvol] path = /var/lib/samba/sysvol read only = No create mask = 0700 directory mask = 0644
La directiva «nsupdate command» lo que hace es utilizar el dns dinámico.
Y ahora comprobamos si actualiza dinámicamente el dns:
# samba_dnsupdate --verbose --all-names
Ahora sólo queda copiar a /etc/init.d/ los scripts de inicio de bind9 y samba. Los cuales extraeremos de los respectivos paquetes en el repositorio, para no escribir todo ese código. Después de copiarlos a /etc/init.d debemos hacerlos ejecutables y ponerlos a que inicien con el sistema.
# cd /etc/init.d # update-rc.d bind9 defaults # update-rc.d samba defaults # update-rc.d samba-ad-dc defaults # update-rc.d nmbd defaults # update-rc.d smbd defaults
Y reiniciamos el sistema, para comprobar de que iniciaron todos los scripts bien. Después de reiniciar ejecutamos netstat para ver si todo ocurrió bien:
root@pdc:~# 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
Y listo, a crear usuarios y a unir máquinas de windows al dominio.

Uniendo a nuestra colega Rosa.

Listo!
Ahora sólo queda instalar RSAT tools, y a modificar el dominio de forma gráfica, para los que no le gusta la consola.

Mirando las propiedades del dominio.

Mirando las máquinas clientes[La PC de Rosa].

Mirando las máquinas clientes[La PC del Administrador].

Editando los datos de los usuarios…
Y ya está bueno… Probar y mejorar, es lo que les recomiendo, la creació de grupos y politicas es cosa de ustedes :D. Gracias a los colegas Erki Polo Manresa, a Arian Molina y a Héctor Suáres Planas por sus respuestas concretas y bien atinadas a mis dudas. Y a la wiki de Samba, no se me puede olvidar ;).
Un saludo y espero les sirva.





hola como estas_
me da este error cuando estoy verificando samba….
smbd: /usr/lib/x86_64-linux-gnu/libndr.so.0: version `NDR_0.0.9′ not found (required by /usr/lib/samba/libndr-samba-samba4.so)
samba-tool domain provision –use-rfc2307 –interactive
Traceback (most recent call last):
File «/usr/bin/samba-tool», line 33, in
from samba.netcmd.main import cmd_sambatool
File «/usr/lib/python2.7/dist-packages/samba/__init__.py», line 394, in
is_heimdal_built = _glue.is_heimdal_built
AttributeError: ‘module’ object has no attribute ‘is_heimdal_built’
Algo estas haciendo mal… Revisa las opciones de compilación de samba 4 que usaste…
muy bueno el tutorial de hecho lo probamos en clases y funciono
ahora voy a aplicarlo y ver que pasa
Un placer hermano, aprovecha que esta super fácil! Un saludo.
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
Voy a probar con debian 9.4
Eso pasa cuando instalas en local, y no en los directorios del sistema destinado a ellos, por lo que bash no encontrara esos comando en dicho lugar, al menos que se lo digas. Fijate que las opciones de compilación son:
./configure –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 -j4 –enable-selftest –with-systemd
Usando systemd que es por defecto en debian9
Algo no estas haciendo bien, porque no deberia salirte ese cartel, no importa si lo haces en Debian9.3 o Debian8, eso no determina, lo que determina es que algo no estas pasandole bien las opciones o algo se te pas’o de largo. Revisa bien…
hola bro
porque no muestras hacer un nuevo tutorial de: Como montar un server dns, con el PCD?
Lo publicaré en unos instantes…
hola como estas?
he seguido su tutorial y tengo una duda que me gustaria q me acarace..
Si tienes algun tutorial de como montas el dns que utilizas en la confi de samba, te lo agradeceria, pues yo no he logrado que los clientes se registren en el dominio
tengo un problema chown -R root:bind /var/lib/samba/private/dns este archivo no aparece en ese directorio??
los que estan son dns_update_list;dns.keytab
Puede que me haya equivocado, han actualizado tanto samba4 que puede que se me haya colado algun errorcillo… No obstante a eso tengo en plan hacer otro tutorial con samba 4.9.1 actualizando el procedimiento…
Que tal?
Un saludo desde mexico, excelentes tutoriales, queria preguntar algo, no quiero ponele dhcp al servidor, tengo un router que me da el enlace a internet, lo que quiero es que los equipos que se conectan a la red no tengan una ip automatica, si no que se les de una ip por medio de reserva, que unicamente asi se les de ip a mis clientes, ya que luego llega cualquier vivo, trae su laptop y empieza a colgarse de internet… entonces mejor solo dar ip por reserva con la MAC…. si tendria que instalar dhcp en el servidor linux, pero que no reparta direcciones en automatico…. que me recomiendas? espero haber sido claro jajajaja bueno ni yo mismo creo haber sido claro jajaja…
saludos !!
Puedes hacer una lista de IP/MACs en el dhcp del router[si el router soporta esa característica] y sólo darle IP a las MAC autorizadas. No obstante a eso explicate un poco más lo que quieres hacer… Estoy en toda la disposición de ayudarte…
personalmente te recomiendo mikrotik y ya te servira de router,firewall y todo lo demas, como eres de Mexico pienso que no tengas problemas con eso, sino usa pfsense que te servira de buen firewall y dentro de sus paquetes tambien tendras un server dhcp que asiga ip por mac,saludos desde Cuba