Preparando el sistema:
# nano /etc/hosts
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
::1 localhost
# nano /etc/network/interfaces
auto lo
allow-hotplug eth0
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-search tudominio.cu
# nano /etc/resolv.conf
search tudominio.cu
nameserver 192.168.0.2
nameserver 192.168.0.3
# aptitude install mc rcconf ccze mlocate nano iptraf nmap unzip zip unp telnet tcpdump
Antes de instalar debemos asegurarnos de agregar las siguientes lineas al final del archivo
# nano /etc/apparmor.d/local/usr.sbin.named
/var/lib/samba/** rm,
/var/lib/samba/private/dns.keytab r,
/var/lib/samba/private/named.conf r,
/var/lib/samba/private/dns/** rwk,
/var/tmp/** rwmk,
Ahora debemos asegurarnos de que la particin donde estar instalado nuestro samba4 este montada
con los siguientes atributos: user_xattr,acl,barrier=1 en /etc/fstab como nuestro servidor samba4
estar en un servidor virtualizado sobre proxmox usando la variante de virtualizacin por openvz,
ya estos atributos estan presente en la particin del storage local de proxmox, si no corres samba4
virtualizado en openvz (contenedor) y es una PC fsica o virtualizada con KVM, se debe agregar
dichos atributos a la particin donde se almacenan los datos de samba4 donde este montado
(/var/lib/samba).
Deshabilitamos ipv6 en el sistema, para ello, editamos el fichero /etc/sysctl.conf y le aadimos las
siguientes lneas:
# nano /etc/sysctl.conf
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
# sysctl -p
o reiniciar el sistema.
libssl-dev
Una vez instalados los paquetes nos debe aparecer una ventana o asistente de configuracin de
pdc.tudominio.cu
Servidor administrativo para su reino kerberos: # Aqu tambin especificamos nombre fqdn de
pdc.tudominio.cu
Creamos usuario y grupo para ejecutar bind9 ya que samba lo usa en el provision para darle
# groupadd -g 23 bind
Si el uid o gid ya est cogido por otro usuario del sistema, buscamos uno bajo que est libre.
Ahora instalamos bind9 versin bind-9.10.2. Para configurar bind9 para que todo funcione OK, con
nuestro PDC en samba4 hay que compilar el bind9 desde los fuentes ya que la versin del
repositorio no viene compilado con soporte para DLZ, por ello nos llegamos al sitio [2] y nos
# cd /usr/local/src
Una vez terminada la descarga, procedemos a descompactar el paquete y configurar las opciones de
compilacin.
libxml2 CFLAGS=-fno-strict-aliasing
Ahora nos disponemos a instalar samba4 para ellos vamos a realizar la instalacin desde los fuentes,
por lo tanto nos llegamos el sitio oficial de samba [1] y descargamos los fuentes de la ltima versin
estable de samba en este momento es la versin: 4.3.0 lo copiamos para nuestro servidor en
# cd /usr/local/src
# wget -c https://download.samba.org/pub/samba/stable/samba-4.3.1.tar.gz
Descompactamos el paquete:
# cd /usr/local/src/samba-4.3.1/
(Este ltimo si no queremos soporte para cups si solo va hacer el server de PDC)
Una vez que termine, si todo fue bien debe salirnos algo como esto:
Como resultados del make si todo fue bien debemos obtener algo como esto:
Con el que debemos obtener si todo fue bien, algo como esto:
Podemos realizar algunos test bsicos para comprobar que nuestro samba4 esta correcto.
#Nombre que le pondremos al Dominio en Netbios que sera el nombre de nuestro grupo de trabajo
#Dejar por defecto el role que desempear nuestro servidor DC (Controlador de Dominio)
[SAMBA_INTERNAL]: BIND9_DLZ
#Tipo de backend DNS en nuestro caso seleccionamos bind9 con DLZ (Dinamic loader Zone)
Administrator password: #
Ponemos la contrasea para el usuario administrator Que tiene que cumplir con las polticas de
Retype password:
#Rectificamos la contrasea anterior
Setting up share.ldb
Setting up secrets.ldb
Setting up idmap db
Setting up SAM db
Creating CN=MicrosoftDNS,CN=System,DC=tudominio,DC=cu
and /var/lib/samba/private/named.txt for further documentation required for secure DNS updates
/usr/local/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Hostname: pdc
# rndc-confgen -a -r /dev/urandom
Configuramos el bind9.
# nano /etc/bind/named.conf
controls {
};
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 { 192.168.0.2;};
esclavo
notify-source 192.168.0.2;
transfer-source 192.168.0.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";
# mkdir /var/cache/bind
# nano /var/lib/samba/private/named.conf
};
# nano /var/lib/samba/private/named.conf.update.static
que anteriormente los tenamos apuntando a otros DNS para poder resolver los nombres para
acceder a los repositorios de debian, adems que en aquel momento el DNS en este equipo an no
estaba instalado. Como nuestro PDC est en un openvz haremos el cambio de los DNS desde la
una vez que reiniciemos el openvz volver a tener los mismos valores que estn ahora. :)
/var/run/named
# mkdir /var/run/named
# mv /etc/krb5.conf /etc/krb5.conf.old
# ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf
Arrancamos el bind9
Arrancamos samba4
Attempting to autogenerate TLS self-signed keys for https for hostname 'PDC.tudominio.cu'
Sep 13 18:14:08 debian8 samba[12505]: Copyright Andrew Tridgell and the Samba Team 1992-
2015
Sep 13 18:14:08 debian8 systemd[1]: Started LSB: initscript for the SAMBA AD services.
../source4/smbd/server.c:490(binary_smbd_main)
../lib/util/become_daemon.c:124(daemon_ready)
Sep 13 18:14:10 debian8 samba[12506]: STATUS=daemon 'samba' finished starting up and ready
to serve connections
../source3/winbindd/winbindd_cache.c:3245(initialize_winbindd_cache)
../lib/util/become_daemon.c:124(daemon_ready)
../lib/util/become_daemon.c:124(daemon_ready)
Sep 13 18:14:15 debian8 smbd[12511]: STATUS=daemon 'smbd' finished starting up and ready to
serve connections
Realizamos las pruebas para rectificar que todo este funcionando bien.
Probando Kerberos
# kinit administrator@TUDOMINIO.CU
Warning: Your password will expire in 41 days on Fri Apr 24 17:47:22 2015
# klist
Si deseamos que la clave del usuario administrador del dominio no expire, podemos usar este
comando:
Si todo fue bien, creamos la zona inversa en samba4 para que el dns esta completo.
Creamos la zonas inversa del DNS y aadimos el registro PTR para nuestro PDC.
Probando Samba4
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service (Samba 4.2.1)
Server Comment
--------- ------------
Workgroup Master
# wbinfo -u
Administrator
Guest
krbtgt
dns-pdc
# wbinfo -g
Domain Admins
Domain Users
Domain Guests
Domain Computers
Domain Controllers
Schema Admins
Enterprise Admins
DnsUpdateProxy
# host -t A pdc.tudominio.cu.
seccin [global]
# nano /etc/samba/smb.conf
Salvamos y Salimos
IPs: ['192.168.0.2']
;; UPDATE SECTION:
;; UPDATE SECTION:
tudominio.cu. 900 IN A 192.168.0.2
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
pdc.tudominio.cu (add)
;; UPDATE SECTION:
389 (add)
;; UPDATE SECTION:
pdc.tudominio.cu.
;; UPDATE SECTION:
pdc.tudominio.cu.
pdc.tudominio.cu 88 (add)
;; UPDATE SECTION:
pdc.tudominio.cu.
pdc.tudominio.cu 88 (add)
;; UPDATE SECTION:
pdc.tudominio.cu.
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
3268 (add)
;; UPDATE SECTION:
;; UPDATE SECTION:
pdc.tudominio.cu.
;; UPDATE SECTION:
;; UPDATE SECTION:
;; UPDATE SECTION:
389 pdc.tudominio.cu.
;; UPDATE SECTION:
;; UPDATE SECTION:
_ldap._tcp.ForestDnsZones.tudominio.cu. 900 IN SRV 0 100 389 pdc.tudominio.cu.
;; UPDATE SECTION:
389 pdc.tudominio.cu.
Si todas las pruebas fueron satisfactorias, procedemos a instalar y configura NTP para dotar de
todas las caractersticas a nuestro PDC ya que es imprescindible que todos los clientes de nuestra
red tengan la hora sincronizadas, requerimiento este para que kerberos pueda autenticar a los
usuarios y servicios, y funcione correctamente las actualizaciones dinmicas de las zonas del dns.
Instalamos ntp
# dpkg-reconfigure tzdata
Y escogemos: America/Havana
# nano /etc/ntp.conf
Aadimos las siguientes lneas:
Debajo de la lnea:
driftfile /var/lib/ntp/ntp.drift
Aadimos esta:
logfile /var/log/ntpd.log
server 127.127.1.1
quedando
sincronice
ntpsigndsocket /var/lib/samba/ntp_signd/
Salvamos y Salimos
Reiniciamos NTP
arrancar y nos dar un error. Si no es un container openvz (VM KVM o fsico), todo sigue normal.
# vzctl set 101 --capability sys_time:on --save (Debe estar el contenedor apagado)
# ntpq -p
=======================================================================
=======
# nano /etc/init.d/samba4
#!/bin/sh
################################################
# #
# #
################################################
# Defaults
RUN_MODE="daemons"
PIDDIR=/usr/local/samba/var/run
NMBDPID=$PIDDIR/nmbd.pid
SMBDPID=$PIDDIR/smbd.pid
unset TMPDIR
. /lib/lsb/init-functions
case "$1" in
start)
-D
then
log_end_msg 1
exit 1
fi
fi
log_progress_msg "smbd"
-D; then
log_end_msg 1
exit 1
fi
fi
log_end_msg 0
;;
stop)
log_progress_msg "nmbd"
sleep 1
if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
then
rm -f $NMBDPID
fi
log_progress_msg "smbd"
sleep 1
then
rm -f $SMBDPID
fi
fi
log_end_msg 0
;;
reload)
Samba4"
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
status)
status="0"
fi
status="4"
fi
exit $status
;;
*)
exit 1
;;
esac
exit 0
Salvamos y Salimos.
# chmod +x /etc/init.d/samba4
# nano /etc/init.d/bind9
#!/bin/sh -e
################################################
# #
# #
################################################
# Provides: bind9
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 016
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
OPTIONS="-4 -u bind"
RESOLVCONF=no
. /lib/lsb/init-functions
PIDFILE=/var/run/named/named.pid
check_network() {
IFCONFIG_OPTS="-au"
else
IFCONFIG_OPTS=""
fi
return 1
fi
return 0
case "$1" in
start)
mkdir -p /var/run/named
if [ ! -x /usr/sbin/named ]; then
log_end_msg 1
fi
if ! check_network; then
log_end_msg 1
fi
fi
log_end_msg 0
else
log_end_msg 1
fi
;;
stop)
if ! check_network; then
log_end_msg 1
fi
/sbin/resolvconf -d lo.named
fi
fi
if [ -n $pid ]; then
sig=0
n=1
if [ $n -eq 1 ]; then
fi
if [ $n -eq 11 ]; then
sig=9
fi
if [ $n -gt 20 ]; then
break
fi
n=$(($n+1))
sleep 1
done
fi
log_end_msg 0
;;
reload|force-reload)
if ! check_network; then
log_end_msg 1
fi
;;
restart)
if ! check_network; then
exit 1
fi
$0 stop
$0 start
;;
status)
ret=0
exit $ret
;;
*)
exit 1
;;
esac
exit 0
Salvamos y Salimos
# chmod +x /etc/init.d/bind9
A partir de aqu, ya podemos reiniciar el sistema y comprobar que todo inicie correctamente,
posteriormente procedemos a agregar las pc al dominios, y desde una maquina en el dominio iniciar
sesin con el usuario administrator, e instalar RSAT (Remote Server Administrator Tools) para
gestionar y administrar nuestro controlador de dominio y dns, exactamente como se hace con un AD
de microsoft, creamos los usuarios y grupos necesario, agregamos nuestro usuario al grupo Domain
Admins, para poder administrar desde nuestra pc y usuario del dominio nuestro PDC SAMBA4.
[1] https://www.samba.org/
[2] https://www.isc.org/downloads/
<<< SERVIDOR BDC (bdc.tudominio.cu) 192.168.0.3 >>>
Debemos realizar todos los pasos iguales que para el servidor PDC la nica diferencia esta en que a
la hora aprovisionar nuestro servidor samba4, le debemos especificar que este es miembro de un
backend=BIND9_DLZ
Found DC pdc.tudominio.cu
workgroup is TUDOMINIO
realm is tudominio.cu
checking sAMAccountName
Adding CN=BDC,CN=Servers,CN=Default-First-Site-
Name,CN=Sites,CN=Configuration,DC=tudominio, DC=cu
Name,CN=Sites,CN=Configuration,DC=tudominio, DC=cu
Enabling account
Adding DNS account CN=dns-BDC,CN=Users,DC=tudominio, DC=cu with dns/ SPN
Starting replication
linked_values[0/0]
linked_values[0/0]
linked_values[0/0]
linked_values[0/0]
Luego continuamos los dems pasos, igual que hicimos en el servidor PDC
Ahora aadimos el registro PTR correspondiente a nuestro bdc a la zona inversa de nuestro DNS.
Nota: Este comando vamos a correrlo en la consola del pdc para que se replique al bdc
# kinit administrator@tudominio.cu
Arrancamos el bind9
Feb 24 21:49:45 bdc named[5183]: set up managed keys zone for view _default, file 'managed-
keys.bind'
Feb 24 21:49:45 bdc named[5183]: zone 'version.bind' allows updates by IP address, which is
insecure
Feb 24 21:49:45 bdc named[5183]: zone 'hostname.bind' allows updates by IP address, which is
insecure
Feb 24 21:49:45 bdc named[5183]: zone 'authors.bind' allows updates by IP address, which is
insecure
Feb 24 21:49:45 bdc named[5183]: zone 'id.server' allows updates by IP address, which is insecure
Attempting to autogenerate TLS self-signed keys for https for hostname 'BDC.tudominio.cu'
Realizamos todas y las mismas pruebas que hicimos para comprobar nuestro PDC
De esta misma forma podemos unir un servidor samba4 a un dominio formado por servidores AD
de windows server 2003 en adelante (Recomendado W2K8_R2), obteniendo una replicacin desde
los mismos al servidor samba4, esto nos permitira realizar una migracin total de nuestro dominio
continuacin.
1.- Lo primero que tenemos que comprobar es nivel de nuestro dominio, si el servidor es un w2k3
este puede estar en compatibilidad con windows 2000 NT, instalacin por defecto de windows
server 2003 AD. Por lo que debemos preparar nuestro AD para elevar el nivel del bosque y del
dominio a 2003, requerimiento indispensable para unir un server samba4 AD y que la replicacin
sea correcta, y una vez despromovido el servidor windows elevar el nivel al dominio en samba4 AD
C:\adprep /domainprep
DHCP
Deberamos conocer que usando esta alternativa de integracin del servicio de dhcp el dns dinmico
podra necesitar cambios desde los clientes windows, los cuales seguirn intentando actualizar
dinmicamente el dns, por los cual el servidor seguir denegando dichas actualizaciones por el
Necesitaremos crear una GPO para impedir esto, pero desafortunadamente, Samba 4 no cuenta con
una utilidad de lnea de comando para modificar GPOs, se necesita un PC con Windows y la
herramienta RSAT instalada. Simplemente creamos una GPO dedicada con el Editor de polticas de
grupo, la aplicamos solamente a la OUs que contiene a las estaciones de trabajo (Entonces estos
Computer Configuration
Policies
Administrative Templates
Network
DNS Client
Dynamic Update = Disabled
Creamos un usuarios sin privilegios en el AD para poder realizar las actualizaciones dinmicas del
dns va dhcp script. Cuando pregunte la contrasea, usamos una contrasea segura. 63 random,
#samba-tool user create dhcp --description="Usuario sin privilegios para actualizar DNS via
DHCP server"
Aseguramos los permisos para el archivo de llaves que solo pueda ser ledo por root, si dhcpd corre
#!/bin/bash
# Begin samba-dnsupdate.sh
# http://www.kuron-germany.de/michael/blog/wp-content/uploads/2012/03/dhcpdns-sergey2.txt
# DHCP server should be authoritative for its own records, sleep for 5 seconds
# In order to use this script you should disable dynamic updates by hosts that
# will receive addresses from this DHCP server. Instructions are found here:
# https://wiki.archlinux.org/index.php/Samba_4_Active_Directory_Domain_Controller#DHCP
sleep 5
checkvalues()
[ -z "${2}" ] && echo "Error: argument '${1}' requires a parameter." && exit 1
case ${2} in
-*)
exit 1
;;
*)
return 0
;;
esac
showhelp()
echo -e "\n"`basename ${0}` "uses samba-tool to update DNS records in Samba 4's DNS"
echo ""
echo ""
echo " -n | --nameserver DNS server to be updated (must use FQDN, not IP)"
echo ""
echo ""
# Process arguments
while [ -n "$1" ]; do
case $1 in
-a | --action)
ACTION=${2}
shift 2
;;
-c | --krb5cc)
KRB5CC=${2}
shift 2
;;
-d | --domain)
DOMAIN=${2}
shift 2
;;
-h | --help)
showhelp
exit 0
;;
-H | --hostname)
HNAME=${2%%.*}
shift 2
;;
-i | --ip)
IP=${2}
shift 2
;;
-k | --keytab)
KEYTAB=${2}
shift 2
;;
-m | --mitkrb5)
KRB5MIT=YES
shift 1
;;
-n | --nameserver)
NAMESERVER=${2}
shift 2
;;
-p | --principal)
PRINCIPAL=${2}
shift 2
;;
-r | --realm)
REALM=${2}
shift 2
;;
-z | --zone)
ZONE=${2}
shift 2
;;
*)
exit 1
;;
esac
done
# Sanity checking
case "$ACTION" in
add | Add | ADD)
ACTION=ADD
;;
ACTION=DEL
;;
*)
;;
esac
kerberos_creds() {
export KRB5_KTNAME="$KEYTAB"
export KRB5CCNAME="$KRB5CC"
KLISTARG="-s"
else
KLISTARG="-t"
fi
add_host(){
logger -s -p daemon.info -t dhcpd Adding A record for host $HNAME with IP $IP to zone $ZONE
on server $NAMESERVER
delete_host(){
logger -s -p daemon.info -t dhcpd Removing A record for host $HNAME with IP $IP from zone
$ZONE on server $NAMESERVER
update_host(){
logger -s -p daemon.info -t dhcpd Removing A record for host $HNAME with IP $CURIP from
add_host
add_ptr(){
logger -s -p daemon.info -t dhcpd Adding PTR record $OCT4 with hostname $HNAME to zone
delete_ptr(){
logger -s -p daemon.info -t dhcpd Removing PTR record $OCT4 with hostname $HNAME from
update_ptr(){
logger -s -p daemon.info -t dhcpd Removing PTR record $OCT4 with hostname $CURHNAME
case "$ACTION" in
ADD)
kerberos_creds
if [ "${?}" == 0 ]; then
update_host
else
add_host
fi
if [ "${?}" == 0 ]; then
update_ptr
else
add_ptr
fi
;;
DEL)
kerberos_creds
if [ "${?}" == 0 ]; then
delete_host
fi
if [ "${?}" == 0 ]; then
delete_ptr
fi
;;
*)
;;
esac
# End samba-dnsupdate.sh
EOF
El servicio de dhcp necesitar un script rpido para la escritura evitando los bloqueos, demoras.
Crearemos el script con el siguiente comando (sustituyendo los valores correctos para nuestra red,
# Begin /etc/dhcpd/update.sh
# Variables
KRB5CC="/run/dhcpd4.krb5cc"
KEYTAB="/etc/dhcpd/dhcpd.keytab"
DOMAIN="tudominio.cu"
REALM="TUDOMINIO.CU"
PRINCIPAL="dhcp@${REALM}"
NAMESERVER="pdc.${DOMAIN}"
ZONE="${DOMAIN}"
ACTION=$1
IP=$2
HNAME=$3
HNAME
/usr/sbin/samba-dnsupdate.sh -m &
# End /etc/dhcpd/update.sh
EOF
servicio de DHCP:
on commit {
on release {
on expiry {
Aqu como nos debe quedar nuestro archivo de configuracin /etc/dhcpd.conf para referencia:
# Begin /etc/dhcpd.conf
# Internal subnet
default-lease-time 28800;
max-lease-time 43200;
authoritative;
on commit {
on release {
on expiry {
}
# End /etc/dhcpd.conf
Por ultimo, debemos. Revisar nuestros firewall, el cual debe permitir los siguientes puertos de red
Los puertos 1024-5000 son para el servicio RPC usado por Samba, as como port tcp/53
es usado por Bind para recibir las actualizaciones DNS GSS record (el cual usa TCP, no
UDP).
Desde un cliente Windows usando el CMD probamos que nuestro servidor est
sincronizando el tiempo.
net time /set luego nos preguntar si deseamos proceder con el cambio. A lo que