Controlador de Dominio de Active Directory mediante Samba4
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.
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
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:
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.