Servidor de dominio en ubuntu server 12.04.2 con samba 4
Os dejo un tuto sobre como montar un servidor de dominio con samba 4.
A continuación voy a explicar 2 métodos de como hacerlo, mediante apt y compilar el código fuente, personalmente prefiero el segundo método, pero de todas formas hay lo dejo:
A continuación voy a explicar 2 métodos de como hacerlo, mediante apt y compilar el código fuente, personalmente prefiero el segundo método, pero de todas formas hay lo dejo:
Para montar el servidor de dominio en ubuntu 12.04.2, para este ejemplo, necesitaremos el anteriormente mencionado samba 4, bind9 y kerberos aplicable a la siguiente topología:
Primera opción(compilar fuente).
- Configuración inicial:
sudo su
echo "# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.103
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
dns-nameserves 192.168.1.103 192.168.1.1
dns-search servidorlocal.test.local
# Secundary network interface
auto eth1
iface eth1 inet dhcp" >> /etc/network/interfaces
echo "servidorlocal" > /etc/hostname
echo "127.0.0.1 localhost
192.168.1.103 servidorlocal servidorlocal.test.local" >/etc/hosts
- Actualizamos nuestro servidor e instalamos los paquetes necesarios:
apt-get update && apt-get dist-upgrade
apt-get install build-essential libacl1-dev python-dev libldap2-dev pkg-config gdb libgnutls-dev libblkid-dev libreadline-dev libattr1-dev python-dnspython libpopt-dev libbsd-dev attr docbook-xsl libcups2-dev git
reboot
- Descargamos samba 4 y lo dejamos en la ruta /usr/src/samba4:
git clone git://git.samba.org/samba.git /usr/src/samba4/
- Antes de compilar, se prepara el paquete conforme a nuestras necesidades:
cd /usr/src/samba4/
./configure --enable-debug
- Se compila el paquete, en este punto paciencia, porque dependiendo de los recursos del equipo, puede tardar más o menos:
make
- Una vez compilado, procedemos al instalar samba 4:
make install
- Añadimos al path la ruta de los ejecutables de samba 4 para lo cual, editamos/creamos el archivo .bashrc e introducimos la siguiente linea:
export PATH="/usr/local/samba/sbin:/usr/local/samba/bin:$PATH"- Creamos el dominio:
samba-tool domain provision --realm test.local --domain TEST --adminpass P$ssword --server-role=dc --use-ntvfs
- Probamos que samba funciona correctamente:
root@servidorlocal:/home/antonio#smbclient -L localhost -U%
Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]
Sharename Type Comment
--------- ---- -------
netlogon Disk
sysvol Disk
IPC$ IPC IPC Service
Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]
Server Comment
--------- -------
Workgroup Master
--------- -------
root@servidorlocal:/home/antonio# /usr/local/samba/bin/smbclient //localhost/netlogon -U 'administrator'
Enter administrator's password:
Domain=[TEST] OS=[Unix] Server=[Samba 4.2.0pre1-GIT-44429f9]
- Antes de probar que los DNS funcionan correctamente listar el archivo /usr/local/samba/etc/smb.conf, debiendo quedar:
# Global parameters
[global]
workgroup = TEST
realm = test.local
netbios name = SERVIDORLOCAL
server role = active directory domain controller
dns forwarder = 192.168.1.1
allow dns updates = nonsecure and secure
server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb
dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
[netlogon]
path = /usr/local/samba/var/locks/sysvol/test.local/scripts
read only = No
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
-
Tambien listaremos el contenido del fichero /etc/resolv.conf, donde la salida que obtendremos será al parecido a esto:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by r
esolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.103
search test.local
* Si modificamos/introducimos algún parámetro, sera conveniente reiniciar.
- - Para comprobar que nuestro servidor DNS funciona, podemos ejecutar:
r
root@servidorlocal:/home/antonio# netstat -tunpe | grep ":53" tcp 0 0 127.0.0.1:53699 127.0.0.1:953 TIME_WAIT 0 0
root@servidorlocal:/home/antonio# host -t SRV _ldap._tcp.test.local.
_ldap._tcp.test.local has SRV record 0 100 389 servidorlocal.test.local.
root@servidorlocal:/home/antonio# host -t SRV _kerberos._udp.test.local.
_kerberos._udp.test.local has SRV record 0 100 88 servidorlocal.test.local.
root@servidorlocal:/home/antonio# host -t servidorlocal.test.local.
servidorlocal.test.local has address 192.168.1.103
- Para hacer que nuestros clientes modifique sus DNS cuando el servidor los modifica, editamos el archivo /etc/bind/named.conf e introducimos la siguiente linea:
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
- Instalamos kerberos:
apt-get install krb5-user
root@servidorlocal:/home/antonio# kinit administrator@TEST.LOCAL
Password for administrator@TEST.LOCAL:
Warning: Your password will expire in 41 days on Fri Aug 30 15:06:12 2013
* En caso de nos devuelva una fallo, editar fichero /usr/local/samba/share/setup/krb5.conf:
[libdefaults]
default_realm = TEST.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.LOCAL
Valid starting Expires Service principal
20/07/2013 01:30 20/07/2013 11:30 krbtgt/TEST.LOCAL@TEST.LOCAL
renew until 21/07/2013 01:30
-Para hacer que samba 4 se ejecute al inicio, creamos el archivo /etc/init.d/samba4 con el siguiente contenido:
#! /bin/sh
### BEGIN INIT INFO
# Provides: samba
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start Samba daemons
### END INIT INFO
#
# Start/stops the Samba daemon (samba).
# Adapted from the Samba 3 packages.
#
SAMBAPID=/var/run/samba/samba.pid
# clear conflicting settings from the environment
unset TMPDIR
# See if the daemon and the config file are there
test -x /usr/local/samba/sbin -a -r /usr/local/samba/etc/ || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting Samba 4 daemon" "samba"
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/local/samba/sbin/samba -- -D; then
log_end_msg 1
exit 1
fi
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping Samba 4 daemon" "samba"
start-stop-daemon --stop --quiet --name samba $SAMBAPID
# Wait a little and remove stale PID file
sleep 1
if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
then
# Stale PID file (samba was succesfully stopped),
# remove it (should be removed by samba itself IMHO.)
rm -f $SAMBAPID
fi
log_end_msg 0
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: /etc/init.d/samba {start|stop|restart|force-reload}"
exit 1
;;
esac
exit 0
chmod 755 /etc/init.d/samba4
update-rc.d samba4 defaults
Segunda opción
- Primero vamos a configurar nuestro servidor:
sudo su
echo "# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.103
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
dns-nameserves 192.168.1.103 192.168.1.1
dns-search servidorlocal.test.local
# Secundary network interface
auto eth1
iface eth1 inet dhcp" >> /etc/network/interfaces
echo "servidorlocal" > /etc/hostname
echo "127.0.0.1 localhost
192.168.1.103 servidorlocal servidorlocal.test.local" > /etc/hosts
- En segundo lugar actualizamos nuestro servidor:
apt-get update && apt-get dist-upgrade
- Instalamos samba 4:
apt-get install samba4* En este momento es posible que nos devuelva un error que nos dice algo asi como que samba 4 no se pudo configurar, bien, tendremos que editar el archivo /var/lib/dpkg/status y en el paquete samba4 modificar status: install ok half-configured por install ok installed. Si más tarde necesitamos desinstalar samba 4:
- Borraremos el archivo/var/lib/dpkg/status.
- Renombraremos el archivo var/lib/dpkg/status-old a var/lib/dpkg/status-old.bak.
- Creamos el dominio:
- Y por último renombramos el archivo var/lib/dpkg/status-old.bak a var/lib/dpkg/status-old.
/usr/share/samba/setup/provision --realm=test.local --domain=TEST --adminpass='P$ssword' --server-role=dc
- Donde deberemos obtener la información relacionada con el nuevo dominio creado:
Server Role: domain controller
Hostname: servidorlocal
NetBIOS Domain: TEST
DNS Domain: test.local
DOMAIN SID: S-1-5-21-41787111-135949663-3539000777
- Para comprobar que todos los parámetros del archivo de configuración de samba son correctos:
root@servidorlocal:/home/antonio# testparm
[global]
workgroup = TEST
realm = TEST.LOCAL
passdb backend = samba4
idmap config * : backend = tdb
[netlogon]
path = /var/lib/samba/sysvol/test.local/scripts
read only = No
[sysvol]
path = /var/lib/samba/sysvol
read only = No
- Si todo a ido bien, podemos inciar samba y comprobar que nuestro servidor de dominio funciona correctamente:
initctl start samba4
apt-get install
samba4-clients
root@servidorlocal:/home/antonio#smbclient -L localhost -U%
Sharename Type Comment--------- ---- -------netlogon Disksysvol DiskIPC$ IPC IPC Service
- Si obtenemos una salida parecida a la anterior, procedemos a instalar y configurar el servidor DNS:
apt-get install bind9
nano /etc/bind/named.conf
include "/var/lib/samba/private/named.conf"
nano /etc/apparmor.d/usr.sbin.named
/var/lib/samba/private/** rkw,
/var/lib/samba/private/dns/** rkw,
/usr/lib/x86_64-linux-gnu/samba/bind9/** rm,
/usr/lib/x86_64-linux-gnu/samba/gensec/** rm,
/usr/lib/x86_64-linux-gnu/ldb/modules/ldb/** rm,
/usr/lib/x86_64-linux-gnu/samba/ldb/** rm,
service bind9 restart
service apparmor reload
- Para comprobar que nuestro servidor DNS funciona, podemos ejecutar:
root@servidorlocal:/home/antonio#netstat -tunpe | grep ":53"
tcp 0 0 127.0.0.1:53 699 127.0.0.1:953 TIME_WAIT 0
0
- Comprobamos que samba 4
y bind9
funciona
n
correctamente:
root@servidorlocal:/home/antonio# host -t SRV _ldap._tcp.test.local.
_ldap._tcp.test.local has SRV record 0 100 389 servidorlocal.test.local.
root@servidorlocal:/home/antonio# host -t SRV _kerberos._tcp.test.local.
_kerberos._tcp.test.local has SRV record 0 100 88 servidorlocal.test.local.
servidorlocal.test.local has address 192.168.1.103
- Para hacer que nuestros clientes modifique sus DNS cuando el servidor los modifica,
e
ditamos el archivo /etc/bind/named.conf e introducimos la siguiente linea:
tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";
- Instalamos kerberos:
apt-get install krb5-user
root@servidorlocal:/home/antonio# kinit administrator@TEST.LOCAL
Password for administrator@TEST.LOCAL:
Warning: Your password will expire in 41 days on Fri Aug 30 15:06:12 2013
root@servidorlocal:/home/antonio# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@TEST.LOCAL
Valid starting Expires Service principal
20/07/2013 01:30 20/07/2013 11:30 krbtgt/TEST.LOCAL@TEST.LOCAL
renew until 21/07/2013 01:30
Opciones comunes
- Para probar que todo esto realmente funciona vamos a configurar, a modo de prueba, un cliente, en este caso windows xp:
Entramos en la configuración IP y establecemos los parámetros correctos.
- Crear recurso compartido, a modo de ejemplo se creara una carpeta:
mkdir /home/compartido
nano /usr/local/samba/etc/smb.conf
[compatido] path = /home/compartido
comment = Carpeta comun
read only = yes
- Para crear nuevos usuarios:
samba-tool user add “user”
Conclusión: A titulo personal pienso que este proyecto, si bien tiene muy buena pinta,
de momento no lo pondría en producción, ya que intuyo que el proyecto esta todavía en pañales,
aunque a mi no me ha dado ningún pete, pero como dicen en mi tierra, el miedo es libre.
Este tuto no es ni mucho menos un todo, pero si creo que es un buen punto de partida para
empezar con samba 4.
Para la confeción del este tuto se ha consultado diferentes recursos:
http://www.jadota.com/2013/01/installing-samba4-on-ubuntu-12-04/
http://www.matrix44.net/cms/notes/gnulinux/samba-4-ad-domain-with-ubuntu-12-04
http://www.darklab.co.uk/2013/01/15/creating-a-samba-4-active-directory-primary-domain-controller-on-ubuntu-12-04-1-server/
No hay comentarios:
Publicar un comentario