Cicle: Administració de sistemes informàtics en xarxa (ASIX)
Mòdul: 0374. Administració de sistemes operatius
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ó:
THOS.LOCAL).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.
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:
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) |
LDAP defineix també les operacions que un client pot fer contra el directori:
bind — autenticar-se davant el servidor.search / compare — cercar i comparar
entrades.add / delete / modify —
crear, esborrar i modificar entrades.unbind — tancar la sessió.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).
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.
STRUCTURAL: defineix la naturalesa bàsica de l’entrada
(una entrada només en pot tenir un). Ex.: inetOrgPerson, organizationalUnit.AUXILIARY: afegeix atributs opcionals a una entrada ja
definida per una classe estructural. Ex.: posixAccount.ABSTRACT: classes base de les quals n’hereten altres
(ex. top).objectClass es
defineixen jeràrquicament (ex. inetOrgPerson hereta de organizationalPerson, que hereta de person,
que hereta de top).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 dnEn 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 listA 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.
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.
_ldap._tcp.thos.local, _kerberos._tcp.thos.local).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ó ────┘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.
sudo hostnamectl set-hostname srv-dc01.thos.local
sudo apt update
sudo apt install samba krb5-config krb5-user winbind smbclient chrony -ysudo 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:
--realm: nom complet del regne Kerberos / domini DNS
(en majúscules per convenció).--domain: nom NetBIOS curt del domini.--dns-backend=SAMBA_INTERNAL: Samba fa també de
servidor DNS, integrat amb el directori.--use-rfc2307: afegeix atributs POSIX (uid, gid…) a
l’esquema, imprescindible per autenticar clients Linux.sudo systemctl unmask samba-ad-dc
sudo systemctl enable --now samba-ad-dc
sudo systemctl status samba-ad-dcVerificacions 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 showSi 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.
Un cop desplegat, cal adaptar el directori a l’estructura de l’organització.
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=Serveissamba-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 listsamba-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 showAmpliar 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).
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 = noAquesta 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.
Les cerques LDAP es construeixen amb filtres que segueixen la sintaxi RFC 4515, basada en parèntesis i operadors booleans.
| 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=*) |
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"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)
kdestroyAquest 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.
Sistema → Configuració avançada → Nom d'equip → Canviar → Domini
i introduir THOS.LOCAL.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 listFragment 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/%uHabilitar la creació automàtica del directori personal en el primer inici de sessió:
sudo pam-auth-update --enable mkhomedir
sudo systemctl restart sssdProva d’integració:
id jperez@thos.local
getent passwd jperez@thos.local
su - jperez@thos.local| 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É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.
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:
samba-tool domain backup).