Controlador de Dominio de Active Directory mediante Samba4

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura

Instalaremos un sistema Debian Jessie que actuará como controlador de dominio para o dominio asir.iesrodeira.com, e uniremos ao dominio ordenadores Windows e Linux, de xeito que os usuarios do dominio podan iniciar sesión en calqueira ordenador da rede.

A administración do DC se poderá realizar mediante as ferramentas administrativas Windows, que serán instaladas nun Windows 7/8.1/2008/2012.


SAMBA 4

Permíte entre outras cousas implementar un Controlador de Dominio de Active Directory nunha máquina con Sistema Operativo GNU/Linux. O Controlador de Dominio (PDC) engloba as seguintes funcións:

  • Servidor de Autentificación (KDC Kerberos Domain Controler): Autentifica os inicios de sesión dos usuarios.
  • OPENLDAP: Emprega LDAP para consultar a información almacenada no catálogo do Directorio Activo.
  • Servidor DNS: Para localizar os equipos na rede e os obxectos no Dominio

Situación Inicial

Partimos dunha máquina virtual con Debian Jessie. A súa IP será 172.20.0.5 e o nome do equipo será radagast

root@radagast:~# more /etc/hosts
127.0.0.1	localhost
127.0.1.1	radagast.IESRODEIRA.COM	radagast


root@radagast:~# more /etc/hostname 
radagast

root@radagast:~# more /etc/resolv.conf 
domain iesrodeira.com
search iesrodeira.com
nameserver 172.20.0.5 # Ten que ter a si mesmo como servidor DNS
nameserver 8.8.8.8

Instalación do Active Directory Domain Controller

O DC se utilizará principalmente para a autenticación de usuarios e para dar acceso a carpetas compartidas con información de interese para o conxunto do alumnado. Os ficheiros personais dos alumnos estarán situados nas máquinas cliente, e os perfís móbiles desactivados. O host no que instalaremos o controlador de dominio será radagast.iesrodeira.com con IP 172.20.0.5. A información relevante é a seguinte:

Realm (Dominio Kerberos): ASIR.IESRODEIRA.COM
Domain:ASIR
Server Role:dc
DNS Backend:Internal
DNS Forwarder:172.20.2.1

Instalación do DC

  • En primeiro lugar necesitamos que a rede esté sincronizada. Utilizaremos servidores de tempo da rede local mediante NTP:
apt-get install ntp
vim /etc/ntp.conf

Engadimos a ntp.conf as seguintes lineas:

server gandalf.iesrodeira.com iburst
server earendil.iesrodeirra.com iburst
server hora.roa.es iburst

Comprobaremos a sincronización con ntpq -p

  • Instalamos de Samba e smbclient
apt-get install samba smbclient ldb-tools
  • Creamos o controlador de dominio
samba-tool domain provision --use-rfc2307 --interactive --use-xattrs=yes

Aqui especificamos o Realm, Dominio, Server Role, Tipo de DNS e o Forwarder. O noso dominio será ASIR, e será un subdominio de IESRODEIRA.COM, sendo o Realm ASIR.IESRODEIRA.COM. O nome do Host será radagast.iesrodeira.com, e o DNS Forwarder 172.20.2.1 ou proxy.iesrodeira.com.

Realm [IESRODEIRA.COM]: ASIR.IESRODEIRA.COM
Domain [ASIR]: enter
Server Role (dc, member, standalone) [dc]: enter
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: enter
DNS forwarder IP address (write 'none' to disable forwarding) [172.20.2.1]: 172.20.2.1

Se creará automáticamente un usuario Administrator que será administrador do dominio. Reiniciamos samba e comprobamos o seu funcionamento:

/etc/init.d/samba restart
smbclient -L localhost -U%
smbclient //localhost/netlogon -UAdministrator -c 'ls'
#Comprobamos o funcionamento do servidor DNS integrado no SAMBA4
host -t SRV _ldap._tcp.asir.iesrodeira.com.
host -t SRV _kerberos._udp.asir.iesrodeira.com.
host -t A radagast.asir.iesrodeira.com.
  • OPCIONAL: Comprobamos o funcionamento e as credenciais Kerberos:
apt-get install krb5-user
mv /etc/krb5.conf /etc/krb5.conf.orixinal
cp /var/lib/samba/private/krb5.conf /etc
kinit Administrador #Solicitamos un ticket para o usuario administrador
klist               #Comprobamos que o ticket existe
kdestroy

Si queremos resolver os nomes do AD en esta máquina (por exemplo, para poñer cuotas de disco), instalamos libnss-winbind e dexamos así /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat winbind 
group:          compat winbind
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Podemos comprobar o funcionamento con getent passwd e getent group.

Netlogon e Shares

Os shares se configuran en /etc/samba/smb.conf que quedaría así:

[global]
	workgroup = ASIR
	realm = ASIR.IESRODEIRA.COM
	netbios name = RADAGAST
	server role = active directory domain controller
	dns forwarder = 172.20.2.1
        #allow dns updates = signed
	idmap_ldb:use rfc2307 = yes


[netlogon]
	path = /var/lib/samba/sysvol/asir.iesrodeira.com/scripts
	read only = No

# Compartidos por NFS
# earendil:/isos
[Software]
	path = /SAMBA/software/otros
        comment = "Software Gratuito e Drivers"
        read only = No

[MSDN]
	path = /SAMBA/software/msdn
	comment = "Software de Microsoft MSDN"
	read only = No

#disk01 en earendil: Disks/Storage, NO RAID
[Buzon]
	path = /SAMBA/buzon/info
	comment = "Buzon Alumnado"
	read only = No

[Xefatura]
	path = /SAMBA/xefatura/info
	comment = "Xefatura de Departamento"
	read only = No

#disk02 en earendil: System/Storage, RAID
[Datos]
	path = /SAMBA/datos/homes
	comment = "Datos do Usuario"
	read only = No

[Maquinas Virtuais]
	path = /SAMBA/vms/info
	comment = "Maquinas Virtuais"
	read only = No

[sysvol]
	path = /var/lib/samba/sysvol
	read only = No

Unha vez creados os shares en smb.conf podemos activar a configuración co comando smbcontrol all reload-config.

Os directorios compartidos, se montan por NFS de outros servidores en algúns casos, e de outro disco en outros. No directorio no que se almacenará a información dos usuarios, gustaríanos poder restrinxir as cuotas de uso, polo que faremos uso das cuotas nativas ext4 instalando o paquete quota

  apt-get install quota

O fstab será o seguinte:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/DC_ROOT-Root 	/               ext4    	user_xattr,acl,errors=remount-ro 0       1
/dev/mapper/DC_ROOT-Homes 	/home           ext4    	defaults        0       2
/dev/mapper/DC_ROOT-swap 	none            swap    	sw              0       0
/dev/sr0        		/media/cdrom0   udf,iso9660 	user,noauto     0       0
/dev/mapper/ERaid-Datos		/SAMBA/datos	ext4		user_xattr,acl,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0   0	2
/dev/mapper/Stripped-Buzon	/SAMBA/buzon	ext4		user_xattr,acl,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0   0	2
/dev/mapper/Stripped-MaqViruais /SAMBA/vms	ext4		user_xattr,acl	0	2
/dev/mapper/Stripped-Xefatura	/SAMBA/xefatura	ext4		user_xattr,acl	0	2
nfs:/templates			/SAMBA/vms/info/KVM		nfs4	ro	0	0
earendil:/isos/software		/SAMBA/software/otros		nfs4	ro	0	0
earendil:/isos/msdn		/SAMBA/software/msdn/isos	nfs4	ro	0	0
Boxinfo info.png
Para asegurar a montaxe dos shares nfs no fstab e necesario asegurarse de que os nomes se resolven correctamente no inicio, polo que se deberían engadir as entradas correspondentes a /etc/hosts

Unha vez montados todos os shares, configuraremos as quotas:

quotacheck -gcu /SAMBA/datos
quotacheck -gcu /SAMBA/buzon
quotacheck -vguma
quotaon -av

Xa podemos editar e poñer as cuotas cos comandos setquota ou edquota. Podemos tamén obter información das cuotas con repquota. Si queremos poñer a moitos usuarios a mesma cuota podemos facelo do seguinte xeito:

#Supoñemos que ''quotauser'' ten postas as cuotas. Pon cuotas aos usuarios con PID > 999
edquota -p quotauser `awk -F: '$3 > 999 {print $1}' /etc/passwd`

Instalación dun Cliente Windows 8.1

Nos clientes Windows, bastará engadir con normalidade o equipo ao dominio ASIR.

O cliente Windows terá que ter como servidor de DNS a IP do Servidor de dominio (172.20.0.5). Unha vez feito esto será un membro do dominio do xeito habitual.

Farémolo empregando o único usuario dispoñible agora mesmo administrator con contrasinal abc123.

Engadimos un equipo chamado Windows7 con IP 172.20.2.100


Comprobamos que o equipo se engadiu correctamente

  • Comprobamos que o servidor DNS actualizouse co novo equipo
nslookup windows7.asir.iesrodeira.com
Server:		172.20.0.5
Address:	172.20.0.5#53

Name:	windows7.asir.iesrodeira.com
Address: 172.20.4.100
  • Comprobamos que o equipo aparece na base de datos do Dominio
pdbedit -L
RADAGAST$:3000024:
Administrator:0:
WINDOWS7$:3000023:
krbtgt:3000017:
nobody:65534:nobody

Ferramentas de Administración do Dominio

Para administrar o servidor samba podemos facer uso das ferramentas de administración remota de Windows (RSAT - Remote Server Administration Tools). Estas ferramentas se poden descargar nos seguinte sitios:

  • Windows 7: [1]

si non se atopan xa no sistema. Logo podemos activalas en Panel de Control->Programas->Programas e Características->Activar e Desactivar as Características de Windows->Ferramentas de Administración Remota do Servidor

Instalación dun Cliente Debian Jessie

Uniremos o equipo adclient.iesrodeira.com ao dominio, e iniciaremos sesións cos usuarios dados de alta no mesmo.

En primeiro lugar, debemos asegurarnos que o noso /etc/hosts, e o hostname conteñen as entradas correctas. No noso caso:

/etc/hostname

adclient.iesrodeira.com

/etc/hosts

127.0.0.1       localhost
127.0.1.1       adclient.local
172.20.33.33    adclient.asir.iesrodeira.com    adclient

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

/etc/resolv.conf

domain iesrodeira.com
#radagast.iesrodeira.com
nameserver 172.20.0.7

Si queremos que un cliente Linux (no noso caso Debian Jessie) poida facer uso da infraestructura de Active Directory, precisamos o seguinte: ntp, krb5-user, libpam-krb5, acl, winbind, libnss-winbind, libpam-winbind e samba.

Procederemos á instalación de krb5-user e samba....

#Realm: ASIR.IESRODEIRA.COM, kdc: radagast.asir.iesrodeira.com, administrative server: radagast.asir.iesrodeira.com
apt-get install krb5-user samba

Precisaremos tamén crear un arquivo smb.conf co seguinte contido:

[global]
        netbios name=adclient
        security = ads
        realm = asir.iesrodeira.com
        password server = radagast.asir.iesrodeira.com
        workgroup = ASIR
        template homedir = /home/%D/%U
        template shell = /bin/bash
        client use spnego = yes
        client ntlmv2 auth = yes
        encrypt passwords = yes
        domain master = no
        local master = no
        preferred master = no
        os level = 0

        idmap config ASIR:backend = ad
        idmap config ASIR:schema_mode = rfc2307
        idmap config *:backend = tdb
        idmap config *:range = 3000000 - 400000

        winbind nss info = rfc2307
        winbind enum users = yes
        winbind enum groups = yes
        winbind trusted domains only = no

Unimos o equipo ao dominio e comprobamos:

net ads join -U Administrator -k 
#Comprobamos
net ads testjoin
host -t A adclient.iesrodeira.com.

Configuramos a autenticación:

apt-get install libpam-krb5 acl winbind libnss-winbind libpam-winbind 
#Autenticación. Engadimos winbind a group e passwd en nsswitch.conf
vim /etc/nsswitch.conf 
/etc/init.d/winbind stop 
/etc/init.d/samba restart 
/etc/init.d/winbind start
#Comprobamos
wbinfo -u
wbinfo -g
getent passwd
getent groups

E importante a sincronización con NTP. Podemos sincronizalo cos servidores de sincronización da rede gandalf.iesrodeira.com e earendil.iesrodeira.com, ou convertir o controlador de dominio en un servidor NTP e sincronizalo con él.

Configuraremos pam_mkhomedir e, si queremos, pam_mount e pam_exec. Engadimos session required pam_mkhomedir.so skel=/etc/skel umask=0022 ao ficheiro /etc/pam.d/common-session.

Referencias

Wiki Oficial de Samba