RA1. Administració del servei de directori

Cicle: Administració de sistemes informàtics en xarxa (ASIX)

Mòdul: 0374. Administració de sistemes operatius

Introducció

Un servei de directori és una base de dades jeràrquica especialitzada, optimitzada per a operacions de lectura i cerca, que emmagatzema informació sobre els recursos d’una xarxa: usuaris, grups, equips, impressores, polítiques de seguretat, etc. És l’element central que permet gestionar de manera centralitzada l’autenticació i l’autorització en una xarxa corporativa.

En aquest document treballarem els dos estàndards que trobareu en qualsevol organització:

💡
Nota

Tot i que Active Directory i Samba AD DC ofereixen eines pròpies (com samba-tool o els complements RSAT), per sota totes dues implementacions parlen LDAP i Kerberos. Entendre LDAP és la clau per entendre qualsevol servei de directori, sigui quin sigui el fabricant.

1. Funció, elements i estructures lògiques del servei de directori

1.1. Què és i per a què serveix

El servei de directori resol un problema molt concret: en una xarxa amb desenes o milers d’equips i usuaris, no és viable gestionar comptes i permisos equip per equip. El directori centralitza aquesta informació i l’ofereix a qualsevol servei de la xarxa (fitxers, correu, VPN, aplicacions) mitjançant un protocol comú.

Funcions principals:

1.2. Model de dades LDAP: el DIT

LDAP organitza la informació en un arbre anomenat DIT (Directory Information Tree). Cada node de l’arbre és una entrada (entry), identificada de manera única per un DN (Distinguished Name).

dc=thos,dc=local
├── ou=Usuaris
│   ├── cn=jperez
│   └── cn=mgarcia
├── ou=Grups
│   └── cn=Professorat
├── ou=Equips
│   └── cn=PC-AULA01
└── cn=Users (contenidor per defecte, en AD)

Elements bàsics del model:

Element Descripció Exemple
Entry Un objecte del directori (usuari, grup…) cn=jperez,ou=Usuaris,dc=thos,dc=local
DN Camí complet i únic d’una entrada cn=jperez,ou=Usuaris,dc=thos,dc=local
RDN La part del DN pròpia de l’entrada (relative DN) cn=jperez
Atribut Parella clau-valor dins d’una entrada mail: jperez@thos.local
objectClass Defineix quins atributs pot/ha de tenir l’entrada person, organizationalUnit
OU Organizational Unit, contenidor lògic dins l’arbre ou=Professorat

Nomenclatura habitual d’atributs (RDN):

Abreviatura Significat
dc Domain Component (component del domini, ex. dc=thos,dc=local)
ou Organizational Unit
cn Common Name
sn Surname (cognom)
uid User ID
dn Distinguished Name (el camí sencer, no és un atribut d’entrada pròpiament)

1.3. LDAP com a protocol

LDAP defineix també les operacions que un client pot fer contra el directori:

El port estàndard és el 389/TCP (LDAP en text pla, normalment protegit amb STARTTLS) i el 636/TCP per a LDAPS (LDAP sobre SSL/TLS de forma nativa).

2. Esquema del servei de directori

L’esquema és el conjunt de regles que defineixen quins tipus d’objectes (objectClass) poden existir al directori i quins atributs pot o ha de tenir cadascun. Sense esquema, LDAP no sabria si un atribut és vàlid ni de quin tipus de dada es tracta.

2.1. Components de l’esquema

2.2. Esquema en OpenLDAP

A OpenLDAP l’esquema es defineix en fitxers .schema o .ldif (a cn=schema,cn=config). Es poden inspeccionar amb:

ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config -s one dn

2.3. Esquema en Active Directory / Samba AD DC

En AD, l’esquema es defineix a la partició CN=Schema,CN=Configuration,DC=thos,DC=local i és comú a tot el bosc (forest). Ampliar-lo (per exemple per afegir atributs propis d’una aplicació) és una operació irreversible i s’ha de fer amb molta cura.

Es pot consultar amb samba-tool:

samba-tool schema attribute list
samba-tool schema objectclass list
💡
Nota

A diferència d’OpenLDAP, on cada organització sovint defineix el seu propi esquema “des de zero” combinant .schema estàndard, a Active Directory l’esquema ja ve predefinit amb centenars de classes (usuari, equip, grup, GPO…) i normalment no cal tocar-lo.

3. Controladors de domini

Un controlador de domini (DC) és el servidor que allotja una còpia (parcial o completa) de la base de dades del directori i que respon a les peticions d’autenticació i consulta.

3.1. Característiques

3.2. Topologia de laboratori

En un entorn de pràctiques típic (com el nostre laboratori amb SRV-DC01 i SRV-FS01), és habitual desplegar dos controladors de domini per estudiar:

        THOS.LOCAL
   ┌────────────────────┐
   │                    │
SRV-DC01 (DC + DNS)   SRV-FS01 (DC + fitxers)
   │                    │
   └──── replicació ────┘

4. Instal·lació del servei de directori

Farem la instal·lació amb Samba AD DC, que nosaltres proveïm com a primer controlador d’un domini nou (THOS.LOCAL) sobre Debian/Ubuntu Server.

4.1. Requisits previs

sudo hostnamectl set-hostname srv-dc01.thos.local
sudo apt update
sudo apt install samba krb5-config krb5-user winbind smbclient chrony -y

4.2. Aprovisionament del domini

sudo systemctl stop smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind

sudo samba-tool domain provision \
  --use-rfc2307 \
  --realm=THOS.LOCAL \
  --domain=THOS \
  --server-role=dc \
  --dns-backend=SAMBA_INTERNAL \
  --adminpass='ContrasenyaSegura1!'

Paràmetres clau:

4.3. Activar i verificar el servei

sudo systemctl unmask samba-ad-dc
sudo systemctl enable --now samba-ad-dc
sudo systemctl status samba-ad-dc

Verificacions bàsiques:

# Comprovar el DNS propi
host -t SRV _ldap._tcp.thos.local

# Comprovar Kerberos
sudo kinit administrator
klist

# Nivell funcional i informació del domini
samba-tool domain level show
⚠️
Avís

Si kinit falla amb un error de tipus clock skew, revisa primer la sincronització horària (chronyc tracking) abans de sospitar de la configuració de Kerberos.

5. Configuració i personalització del servei de directori

Un cop desplegat, cal adaptar el directori a l’estructura de l’organització.

5.1. Estructura d’unitats organitzatives (OU)

Les OU permeten organitzar objectes i, sobretot, aplicar polítiques (GPO) de manera diferenciada. Una estructura típica d’institut:

THOS.LOCAL
├── OU=Professorat
│   ├── OU=SMX
│   └── OU=ASIX
├── OU=Alumnat
│   ├── OU=1r-ASIX
│   └── OU=2n-ASIX
├── OU=Equips
│   ├── OU=Aules
│   └── OU=Professorat
└── OU=Serveis
samba-tool ou create "OU=Professorat,DC=thos,DC=local"
samba-tool ou create "OU=SMX,OU=Professorat,DC=thos,DC=local"
samba-tool ou create "OU=Alumnat,DC=thos,DC=local"
samba-tool ou list

5.2. Política de contrasenyes i seguretat

samba-tool domain passwordsettings set --min-pwd-length=10
samba-tool domain passwordsettings set --complexity=on
samba-tool domain passwordsettings set --max-pwd-age=90
samba-tool domain passwordsettings show

5.3. Personalització de l’esquema (avançat)

Ampliar l’esquema (per exemple, afegir un atribut numExpedient als usuaris) es fa mitjançant fitxers LDIF aplicats amb privilegis d’administrador d’esquema. Es tracta d’una operació poc habitual i que no té marxa enrere, per la qual cosa cal documentar-la sempre abans d’aplicar-la (vegeu apartat 10).

6. Integració amb altres serveis

El valor real d’un directori està en la seva capacitat d’integrar-se amb altres serveis de xarxa perquè comparteixin una única font d’identitats.

Servei Mecanisme d’integració
DNS El mateix DC actua com a servidor DNS autoritatiu del domini (registres SRV, A, PTR).
Compartició de fitxers (Samba/CIFS) Els recursos compartits validen l’accés contra el directori mitjançant Kerberos/NTLM.
Correu electrònic Les llibretes d’adreces i l’autenticació SMTP/IMAP poden consultar LDAP.
VPN / xarxa (RADIUS) FreeRADIUS pot delegar l’autenticació a LDAP o Kerberos.
Aplicacions web Autenticació via LDAP bind o SAML/OIDC amb un IdP connectat al directori.
Linux (SSSD) Els clients Linux autentiquen i resolen usuaris/grups contra el directori (apartat 9).

Exemple: configurar una compartició Samba autenticada contra el mateix directori (en el mateix DC o en un membre de domini):

[documents]
   path = /srv/samba/documents
   valid users = @"THOS\Professorat"
   read only = no
💡
Nota

Aquesta capacitat d’integració és el que distingeix un “simple magatzem d’usuaris” d’un veritable servei de directori: el mateix compte jperez serveix per iniciar sessió a l’equip, accedir a la carpeta compartida, connectar-se a la VPN i consultar el correu, sense haver de duplicar credencials enlloc.

7. Filtres de cerca en el servei de directori

Les cerques LDAP es construeixen amb filtres que segueixen la sintaxi RFC 4515, basada en parèntesis i operadors booleans.

7.1. Sintaxi bàsica

Operador Símbol Exemple
Igual = (cn=jperez)
AND & (&(objectClass=user)(department=Informàtica))
OR | (\|(cn=jperez)(cn=mgarcia))
NOT ! (!(userAccountControl:1.2.840.113556.1.4.803:=2))
Aproximat ~= (sn~=Garcia)
Comodí * (cn=j*)
Presència =* (mail=*)

7.2. Exemples pràctics amb ldapsearch

# Tots els usuaris del departament d'Informàtica
ldapsearch -x -H ldap://srv-dc01.thos.local \
  -b "dc=thos,dc=local" \
  "(&(objectClass=user)(department=Informatica))" \
  cn mail

# Usuaris amb el compte deshabilitat (bit 2 de userAccountControl)
ldapsearch -x -H ldap://srv-dc01.thos.local -D "administrator@thos.local" -W \
  -b "dc=thos,dc=local" \
  "(userAccountControl:1.2.840.113556.1.4.803:=2)"

# Grups que contenen un usuari concret (regla de coincidència en cadena, memberOf)
ldapsearch -x -H ldap://srv-dc01.thos.local -D "administrator@thos.local" -W \
  -b "dc=thos,dc=local" \
  "(member:1.2.840.113556.1.4.1941:=cn=jperez,ou=Alumnat,dc=thos,dc=local)"

Equivalent amb samba-tool, sense necessitat de conèixer tota la sintaxi LDIF:

samba-tool user list
samba-tool group listmembers "Professorat"

8. Autenticació centralitzada d’usuaris

El directori actua com a autoritat d’autenticació per a tota la xarxa gràcies a dos mecanismes complementaris:

# Obtenir un TGT
kinit jperez@THOS.LOCAL

# Veure els tiquets actuals
klist

# Destruir els tiquets (tancar sessió Kerberos)
kdestroy

Aquest mecanisme és el que fa possible el SSO (Single Sign-On): un usuari s’autentica una vegada en iniciar sessió i pot accedir a tots els serveis integrats sense tornar a introduir credencials.

9. Configuració del client per a la integració en el domini

9.1. Client Windows

  1. Configurar el DNS del client perquè apunti al DC (imprescindible per a la localització de serveis via SRV).
  2. Sistema → Configuració avançada → Nom d'equip → Canviar → Domini i introduir THOS.LOCAL.
  3. Autenticar-se amb un compte amb privilegis per unir equips al domini.
  4. Reiniciar l’equip.

9.2. Client Linux amb SSSD

SSSD (System Security Services Daemon) és l’estàndard actual als clients Linux per integrar-se amb un directori LDAP/AD, substituint els antics nss_ldap/pam_ldap.

sudo apt install sssd sssd-tools realmd adcli krb5-user samba-common-bin -y

# Descobrir i unir-se al domini automàticament
sudo realm discover thos.local
sudo realm join -U administrator thos.local

# Verificar
sudo realm list

Fragment resultant a /etc/sssd/sssd.conf:

[sssd]
domains = thos.local
services = nss, pam

[domain/thos.local]
id_provider = ad
access_provider = ad
override_homedir = /home/%u

Habilitar la creació automàtica del directori personal en el primer inici de sessió:

sudo pam-auth-update --enable mkhomedir
sudo systemctl restart sssd

Prova d’integració:

id jperez@thos.local
getent passwd jperez@thos.local
su - jperez@thos.local

10. Eines gràfiques i ordres per a l’administració

10.1. Ordres (Samba AD DC)

Ordre Ús
samba-tool user create/list/delete Gestió d’usuaris
samba-tool group create/addmembers Gestió de grups
samba-tool computer list Gestió d’equips units al domini
samba-tool ou create/list Gestió d’unitats organitzatives
samba-tool domain level show Nivell funcional del domini
samba-tool drs showrepl Estat de la replicació entre DC
ldapsearch / ldapmodify Consulta i modificació LDAP de baix nivell
kinit / klist / kdestroy Gestió de tiquets Kerberos

Exemple: crear un usuari i afegir-lo a un grup

samba-tool user create jperez --given-name=Joan --surname=Pérez \
  --userou="OU=Professorat" --mail-address=jperez@thos.local

samba-tool group addmembers "Professorat" jperez

10.2. Eines gràfiques

💡
Nota

És habitual gestionar el dia a dia amb eines gràfiques (RSAT, LAM) i reservar la línia d’ordres (samba-tool, ldapsearch) per a tasques automatitzables (scripts d’alta massiva d’usuaris a principi de curs, per exemple) i per al diagnòstic de problemes.

11. Documentació de l’estructura i la implantació

Documentar el directori és tan important com implantar-lo correctament: sense documentació, qualsevol intervenció futura (pròpia o d’un altre tècnic) és arriscada.

Una documentació completa hauria d’incloure:

  1. Dades bàsiques del domini: nom NetBIOS, FQDN del realm, nivell funcional, DC existents i el seu rol.
  2. Diagrama de xarxa i topologia de DC, incloent-hi adreçament IP i ubicació dels rols FSMO (si escau).
  3. Estructura d’OU, amb la justificació de cada nivell (a quines polítiques respon).
  4. Política de contrasenyes i seguretat aplicada.
  5. Esquema d’objectes: convencions de nomenclatura d’usuaris i grups, atributs personalitzats afegits.
  6. Serveis integrats amb el directori i com hi estan connectats (DNS, fitxers, VPN…).
  7. Procediments de recuperació: com restaurar un DC, com funciona la replicació, còpies de seguretat del directori (samba-tool domain backup).

Versions d’aquest document

Domini Públic (CC0)