Serveis de directori

==

Per assolir els coneixements adequats necessiteu conèixer els conceptes de directori i servei de directori. A més, convé saber en què consisteix, per a què s’utilitza i com funciona el protocol de servei de directori més utilitzat en els sistemes lliures, l’LDAP.

Per poder desenvolupar tots els coneixements adquirits cal instal·lar, configurar i administrar l’OpenLDAP, el projecte de codi obert que proporciona tant el servidor com el client del protocol LDAP.

Convé conèixer diverses eines gràfiques per administrar el servei de directori i veure un exemple d’instal·lació i funcionament d’una d’aquestes eines, concretament la phpLDAPadmin.

Què és un directori?

Per entendre bé què és un directori en l’àmbit dels sistemes operatius, s’agafa com a exemple un directori clàssic, com ara la llista de contactes d’un mòbil. En una llista de contactes s’emmagatzema de manera organitzada diversa informació sobre les persones que interessen: nom, cognoms, adreça, número de telèfon, empresa, e-mail…

Directori vs. Directori de sistema

No heu de confondre aquest tipus de directori amb el directori del sistema d’arxius, que serveix per agrupar arxius dins d’un suport d’emmagatzematge.

Aquesta informació s’estructura en diversos camps que estan relacionats. Així, per exemple, si es busca el cognom d’una persona, s’obté un o uns telèfons que hi estan associats, com en el cas dels registres d’una base de dades.

La finalitat dels directoris clàssics és, per tant, emmagatzemar físicament la informació de manera estructurada per tal de facilitar l’accés a les dades necessàries i l’actualització.

Per simplificar, es pot dir que la finalitat dels directoris electrònics és la mateixa que la dels clàssics, tot i que el tipus d’informació que s’hi emmagatzema, la manera de treballar-hi i el suport físic que tenen és diferent. Aquest tipus de directoris estan orientats a emmagatzemar, en algun suport informàtic, informació relativa a una o diverses xarxes d’ordinadors.

Un directori és una base de dades especialitzada que emmagatzema informació sobre els recursos o les entitats que hi ha en una xarxa, com ara usuaris, ordinadors o impressores, i la posa a disposició dels usuaris de la xarxa.

Així doncs, la informació que s’emmagatzema en els directoris està relacionada amb la ubicació i les propietats dels objectes que hi ha en una xarxa informàtica.

La funció principal d’un directori electrònic és tenir la informació organitzada de manera estructurada, perquè des dels diferents llocs de la xarxa que disposen d’un servi de directori es pugui accedir a les dades que s’hi emmagatzemen i actualitzar-les. El directori permet que aquestes accions es facin de manera ràpida, eficient i segura.

Hi ha diferents tipus de directoris en funció de la informació que s’hi emmagatzema, de l’àmbit en què s’implementa i del servei de directori que s’utilitza.

Que és un servei de directori?

Una vegada comprès el concepte de directori, queda més clar en què consisteix un servei de directori.

Un servei de directori constitueix un conjunt d’elements, format per programari i maquinari, que treballen plegats per emmagatzemar, organitzar i gestionar la informació referent als usuaris i els recursos d’una xarxa. Els serveis de directori actuen com una capa d’abstracció entre els usuaris i els recursos compartits i permeten als administradors gestionar l’accés dels usuaris als recursos de la xarxa.

Per tant, el directori constitueix la base de dades en què s’emmagatzema la informació, mentre que el servei de directori és la infraestructura física i lògica que permet gestionar les dades del directori.

Què no és un servei de directori?

Encara que coneguem en què consisteix un servei de directori, és necessari tenir clar quin tipus de programes o aplicacions són un servei de directori i quins no. Per evitar confusions cal saber les diferències que hi ha entre un servei de directori i altres programes o serveis.

Aquestes diferències no sols rauen en el tipus de programes o serveis, sinó també en la seva estructura i el seu mode de funcionament. Comparem, doncs, alguns d’aquests programes o serveis que sovint es confonen amb un servei de directori.

Serveis de directori vs. Sistemes gestors de bases de dades

S’ha dit que un directori és una base de dades. Cal recordar, però, que és especialitzada i que, per tant, les característiques que té són diferents de les d’una base de dades relacional de propòsit general. Les diferències principals que hi ha són les següents:

  • Els serveis de directori estan optimitzats per a operacions de lectura, mentre que les bases de dades convencionals estan optimitzades per a operacions de lectura i escriptura.
  • Els serveis de directori estan optimitzats per emmagatzemar informació relativament estàtica, de manera que no és recomanable emmagatzemar-hi informació que es modifiqui freqüentment.
  • Les dades que hi ha en els serveis de directori segueixen una estructura totalment jeràrquica. A vegades aquest tipus d’estructura és més problemàtica que l’estructura relacional, ja que fa que sigui més complicat establir relacions entre objectes de la base de dades. Normalment, les relacions s’hi han d’establir de manera explícita mitjançant llistes d’objectes. Actualment, però, tot i que predominen les bases de dades relacionals, cada vegada hi ha més dissenys de bases de dades jeràrquiques (bases de dades orientades a objectes, XML…).
  • Els directoris no suporten transaccions. Les transaccions són operacions implementades generalment en els sistemes gestors de les bases de dades que permeten controlar l’execució d’una operació complexa, de manera que aquesta operació es completa totalment o no s’executa. Normalment, el tipus d’informació que s’emmagatzema en un directori no requereix una consistència tan estricta com la informació que s’emmagatzema en les bases de dades convencionals. Per exemple, es considera acceptable que l’adreça d’una persona no estigui actualitzada de manera temporal.
  • A diferència de les bases de dades comunes, en els directoris hi pot haver atributs multivalorats. És a dir, que dins d’un mateix camp s’emmagatzemin múltiples valors vàlids. Per exemple, múltiples números de telèfon emmagatzemats en el camp telèfon.
  • La majoria de les bases de dades convencionals utilitzen el llenguatge de consulta SQL, que permet desenvolupar funcions de consulta i actualització complexes a costa de la grandària i la complexitat de l’aplicació. Els serveis de directori basats en l’LDAP, per exemple, utilitzen un protocol simplificat i optimitzat que es pot fer servir per construir aplicacions simples i petites.

En general, els patrons de disseny de les bases de dades relacionals no són aplicables als serveis de directori.

Serveis de directori vs. Sistemes de fitxers

Les diferències fonamentals entre els serveis de directori i els sistemes de fitxers són les següents:

  • Els directoris estan optimitzats per emmagatzemar petits fragments d’informació que es poden estructurar com a entrades amb diferents atributs. En canvi, els sistemes de fitxers contenen arxius de diverses grandàries.
  • Els sistemes de fitxers permeten accedir a un fitxer i, una vegada a dins, posicionar-se en un determinat punt. En canvi, els directoris només permeten accedir a un atribut i, una vegada a dins, no hi ha manera de posicionar-se en cap punt. Per tant, s’ha de llegir completament.

Serveis de directoris vs. Serveis DNS

El servei DNS s’encarrega de traduir noms de domini a adreces IP, i a l’inrevés. Aquest servei té una lleugera similitud amb el servei de directori, ja que tots dos proporcionen una interfície d’accés a una base de dades jeràrquica. Tanmateix, difereixen en altres aspectes, com ara els següents:

  • Els serveis DNS estan optimitzats per a la transformació de noms d’ordinadors a adreces IP, mentre que els serveis de directori estan optimitzats de manera més general.
  • La informació emmagatzemada en el servei DNS té una estructura fixa, mentre que el servei de directori sol permetre l’extensió d’aquesta estructura.
  • Els serveis DNS operen amb protocols no orientats a connexió (UDP), mentre que els serveis de directori solen emprar protocols orientats a connexió (TCP).

Utilitats d'un servei de directori

Algunes de les utilitats principals dels serveis de directori són la recerca i gestió d’informació dins d’una xarxa i el fet de garantir la seguretat d’accés a la xarxa mitjançant el seu ús per a l’autenticació d’usuaris. De les seves utilitats principals, gairebé la més utilitzada o implementada és el manteniment de la seguretat de xarxes locals. Així, bàsicament, les utilitats d’un servei de directori són tres:

  • Trobar informació
  • Gestionar informació
  • Seguretat

Trobar informació

Una de les utilitats principals d’un servei de directori és buscar la informació emmagatzemada dels objectes que hi ha en la xarxa.

El directori emmagatzema informació sobre algunes propietats dels objectes que podeu trobar en la xarxa i el servei de directori proporciona als usuaris facilitats per gestionar la informació sobre aquests objectes.

Per exemple, mitjançant la utilització d’un servei de directori, els objectes es referencien pel nom i no pas per l’adreça física. D’aquesta manera, d’una banda, s’aconsegueix ocultar a l’usuari la complexitat de l’organització i, de l’altra, se l’aïlla dels canvis que s’hi produeixen.

Gestionar informació

De vegades no és suficient tenir la informació emmagatzemada en un directori. És molt important poder accedir al directori des de totes les aplicacions que són susceptibles d’utilitzar-lo.

El fet d’utilitzar un servei de directori per centralitzar la informació necessària per al funcionament de diverses aplicacions us estalvia molt d’esforç a l’hora d’implementar les estructures de dades per a cada aplicació i a l’hora de mantenir el sincronisme i la consistència entre les dades emmagatzemades. Per exemple, si teniu en la vostra xarxa un servidor web en què s’autentiquen usuaris, la solució més senzilla pot ser implementar una base de dades amb els usuaris en el servidor i gestionar-la des del mateix servidor.

Tanmateix, si afegiu més servidors web, o d’un altre tipus, en la xarxa i també necessiteu autenticar-hi usuaris, haureu d’implementar una base de dades per a cada servidor amb els mateixos usuaris, possiblement, a més de mantenir les dades sincronitzades per evitar inconsistències.

En aquest cas, la millor solució seria implementar un servei de directori en què les dades estiguessin centralitzades i tots els servidors poguessin accedir a un únic directori comú. Això comportaria un estalvi de temps i d’esforç en la creació de les bases de dades i en el treball d’inserció i sincronització de les dades.

Implementació d'un servei de directori

Òbviament, heu de tenir en compte els avantatges que té un servei de directori. Tot i això, també heu de considerar que a vegades la implementació i la gestió d’un servei de directori pot ser complicada. Quan el volum de dades a tractar sigui petit, pot ser que no compensi generar tota la infraestructura d’un servei de directori.

Podeu dir que un servei de directori a què poden accedir multitud d’aplicacions es converteix en una part vital del sistema en proporcionar un accés uniforme a les persones, els recursos i altres objectes del sistema. És a dir, el directori es veu com un tot uniforme i no pas com un conjunt de parts independents.

Quan les aplicacions utilitzen un servei de directori comú, dissenyat de manera adequada, és més fàcil controlar els riscos de fallada i concentrar els esforços a millorar l’administració d’aquest servei i la tolerància a fallades.

Seguretat

Els serveis de directori poden fer funcions d’autenticació d’usuari mitjançant dos tipus de mecanismes:

  • Autenticació simple, en què el directori manté emmagatzemada la contrasenya de cada usuari. Quan l’usuari accedeix al directori, fa una comparació amb el valor emmagatzemat. Si ho comparem amb una carta, equivaldria al servei que ofereix la signatura que hi ha a peu de pàgina.
  • Autenticació forta, en què el directori manté emmagatzemades claus de xifratge per autenticar l’usuari. Seguint amb la comparació, el xifratge de missatges equivaldria a tancar el sobre i afegir-hi un lacre digital per impedir que terceres persones l’obrissin.

Per altra banda, el servei de directori és el suport ideal per a la distribució dels certificats electrònics personals. Concretament, el directori resol dos problemes principals:

  • La gestió de la infraestructura de clau pública, ja que permet fer el següent:
    • Crear certificats: permet incorporar al certificat les dades contingudes en el servidor en què s’implementa el servei de directori.
    • Distribuir certificats: permet tenir accessibles mitjançant un protocol estàndard els certificats electrònics.
    • Destruir certificats: permet implementar la revocació d’un certificat amb la simple operació d’esborrar el certificat del servidor en què tenim el servei de directori.
  • El problema de la ubicació dels certificats. El directori és el lloc natural en què els usuaris poden accedir als certificats de la resta d’usuaris d’una manera còmoda i fàcil d’integrar amb la resta d’aplicacions.

Serveis de directori distribuïts

Resulta interessant saber en què consisteix un servei de directori distribuït a diferència d’un servei de directori centralitzat.

El servei de directori pot estar centralitzat o distribuït. En cas d’estar centralitzat, un únic servidor subministra tot el servei de directori i respon totes les consultes dels clients. Si el directori està distribuït, hi ha diversos servidors que proporcionen el servei de directori.

Quan el servei de directori està distribuït, les dades poden estar fraccionades o replicades. Quan la informació està fraccionada, cada servidor del servei de directori emmagatzema un subconjunt únic de la informació. És a dir, una entrada només s’emmagatzema en un servidor. Quan la informació està replicada, una entrada es pot emmagatzemar en diversos servidors. Generalment, quan el servei de directori està distribuït, una part de la informació està fraccionada i una altra part està replicada.

Seguretat del servei de directori

La seguretat de la informació emmagatzemada en el directori és un dels aspectes fonamentals a tenir en compte en els serveis de directori. Alguns directoris han de permetre l’accés públic, però qualsevol usuari no ha de poder efectuar qualsevol operació.

Per exemple, qualsevol usuari pot buscar l’adreça de correu d’un empleat, però només l’empleat o l’administrador pot tenir permís per modificar-la.

La política de seguretat defineix quin usuari té quin tipus d’accés sobre quina informació.

Els serveis de directori han de permetre les capacitats bàsiques per implementar una política de seguretat. Encara que els serveis mateixos puguin no incorporar aquestes capacitats, han d’estar integrats amb un servei de xarxa fiable que proporcioni aquests serveis bàsics de seguretat.

Inicialment, es necessita un mètode per autenticar l’usuari. Una vegada s’ha verificat la identitat del client, es pot determinar si està autoritzat a portar a terme l’operació sol·licitada o no. Generalment, les autoritzacions estan basades en l’ACL (access control list). Aquestes llistes es poden unir als objectes o als atributs que hi ha en el directori. Per facilitar l’administració d’aquestes llistes, els usuaris amb els mateixos permisos s’agrupen en grups de seguretat.

ACL és un concepte de seguretat utilitzat per donar o no privilegis a un objecte determinat que està fent una consulta.

LDAP

Cal que conegueu la definició, l’origen, el funcionament i les diverses utilitats d’una de les especificacions més utilitzades en el món de les xarxes per implementar serveis de directoris, el protocol LDAP. LDAP és la sigla de lightweight directory access protocol o ‘protocol d’accés a directoris lleugers’. Es pot definir de la manera següent:

L’LDAP és un protocol obert a escala d’aplicació, del tipus client-servidor, que s’utilitza per accedir a un servei de directori.

Hi ha moltes implementacions “comercials” que utilitzen l’LDAP o que hi estan basades. Entre les més importants, hi ha les següents:

  • Microsoft Active Directory
  • Red Hat Directory Server / Fedora 389 Directory Server
  • Oracle Directory Server Enterprise Edition
  • OpenLdap

Ús de l'LDAP

Típicament, l’LDAP s’utilitza per emmagatzemar la informació dels usuaris i els recursos d’un domini. Sovint també es fa servir per inventariar recursos de xarxa (màquines, impressores, servidors…) o directoris de recursos humans.

En aquests materials, es farà servir l’OpenLdap per veure el procés d’instal·lació i configuració d’un servei de directori amb l’LDAP.

L’objectiu principal és permetre l’autenticació en xarxa. Amb aquesta finalitat es pot utilitzar de manera conjunta amb una gran quantitat d’aplicacions que disposen de suport per a l’LDAP, com ara les següents:

  • Sistemes d’autenticació per a pàgines web: alguns dels gestors de continguts més coneguts disposen de sistemes d’autenticació per mitjà de l’LDAP.
  • Sistemes de control d’entrades a edificis, oficines…
  • Sistemes de correu electrònic. Grans sistemes formats per més d’un servidor que accedeixen a un dipòsit de dades comú.
  • Sistemes d’allotjament de pàgines web i FTP, amb el dipòsit de dades d’usuari compartit.
  • Servidors de certificats públics i claus de seguretat.
  • Autenticació única per a la personalització d’aplicacions.
  • Perfils d’usuaris centralitzats per permetre itinerància (roaming).
  • Llibretes d’adreces compartides.

Per entendre millor la utilitat del protocol, cal que imagineu que en la vostra xarxa disposeu d’un servidor LDAP. Si configureu tots els PC i tots els serveis de la xarxa perquè s’hi autentiquin, n’hi haurà prou de crear els comptes d’usuari i els grups d’usuaris en el vostre servidor LDAP per tal que els usuaris puguin fer ús del sistema i dels serveis que ofereix des de qualsevol lloc de la xarxa. És un sistema ideal per centralitzar l’administració d’usuaris en un únic lloc.

En general, l’LDAP s’utilitza quan es vol accedir a una base de dades des de diferents plataformes i des de múltiples ordinadors o aplicacions ubicats en una xarxa i quan els registres de la base de dades canvien poc (poques vegades al dia o menys).

Funcionament de l'LDAP

El servei de directori LDAP, com gairebé tots els serveis de directori, té una arquitectura client-servidor.

En aquest model, un o més servidors LDAP contenen les dades que conformen l’arbre de directori LDAP o base de dades jeràrquica. L’aplicació que fa de client LDAP es connecta amb el servidor LDAP i li fa una consulta. El servidor contesta amb la resposta corresponent o bé indica el lloc on el client pot trobar més informació. Normalment, aquest lloc serà un altre servidor LDAP.

No importa amb quin servidor LDAP es connecti el client, ja que sempre observarà la mateixa vista del directori. És a dir, el nom amb el qual es fa la consulta a un servidor LDAP fa referència a la mateixa entrada a què faria referència en un altre servidor LDAP.

Avantatges en l'ús de l'LDAP

L’ús de directoris LDAP s’ha popularitzat cada vegada més a l’hora de fer servir serveis de directori, ja que té molts avantatges sobre altres tipus de sistemes d’emmagatzematge i recuperació de dades. Els directoris LDAP són compatibles o utilitzats per a la implementació de molts sistemes, organitzacions i aplicacions, tant lliures com propietàries al món de la informàtica com, per exemple, OpenLDAP, Windows, MySQL, SAMBA…

Així doncs, el directori LDAP destaca sobre els altres tipus de bases de dades per les característiques següents:

  • És molt ràpid en la lectura de registres.
  • Permet replicar el servidor de manera molt senzilla i econòmica.
  • Moltes aplicacions de tot tipus tenen interfícies de connexió amb LDAP i s’hi poden integrar fàcilment.
  • Disposa d’un model de noms globals que assegura que totes les entrades són úniques.
  • Permet múltiples directoris independents.
  • Funciona sobre TCP/IP i SSL/TLS.
  • La majoria de servidors LDAP són fàcils d’instal·lar, mantenir i optimitzar, encara que la configuració és una mica tediosa.

Estructura del directori LDAP

A continuació, veureu cadascun dels elements que componen l’estructura del directori LDAP, i les relacions que hi ha entre ells. Un directori LDAP es compon de: Entrada, Objecte, Atribut, Arbre d’informació del directori i Classes d’objecte.


1. Entrada. Un dels conceptes fonamentals dels directoris LDAP és el concepte d’entrada. Així doncs:

Les entrades són les estructures de dades en què el directori emmagatzema i organitza la informació. La unitat bàsica d’informació emmagatzemada en el directori LDAP és l’entrada.


2. Objecte. Els elements als quals fan referència les entrades del directori, i, per tant, són els elements que conformen lògicament el directori, són els objectes:

Cada entrada del directori descriu un objecte, com ara una persona, un grup, una organització, una impressora, un servidor… Per tant, els objectes són els elements del món real als quals representen les entrades del directori.


3. Atribut. Les propietats o els valors que identifiquen els objectes del directori són determinats pels atributs.

Cadascun dels objectes o entrades té un conjunt d’atributs. Tots els atributs que pertanyen a un objecte s’identifiquen mitjançant un nom o acrònim significatiu, són d’un cert tipus i poden tenir un o diversos valors associats. El tipus defineix la classe d’informació que els atributs emmagatzemen i els valors són la informació en si. La sintaxi dels atributs depèn del tipus d’atribut.

Per exemple, un atribut del tipus cn (common name) pot contenir el valor “Pere Pérez López”. Un atribut del tipus email pot contenir un valor “pperezlop@exemple.com”. Hi ha dos tipus d’atributs especials:

  • Nom distingit. Cada entrada té un atribut especial anomenat distinguished name o nom distingit (DN), que la identifica unívocament en la base de dades del directori. Per tant, podeu dir que el DN s’utilitza per referir-se a una entrada sense ambigüitats.
  • Nom distingit relatiu. Els noms distingits relatius o relatives distinguished names (RDN) són les seqüències més petites que componen un nom distingit (DN). Els RDN són parells de valors formats per un atribut de l’entrada més el seu valor amb la forma.
<nom_atribut>=<valor>

Per entendre millor els conceptes de DN i RDN, els podeu comparar amb un sistema de fitxers de qualsevol sistema operatiu en què el DN és el camí absolut al fitxer i el RDN és el camí relatiu.

La resta d’atributs de l’entrada depenen de l’objecte que descrigui aquesta entrada. Per exemple, les entrades que descriuen persones solen tenir, entre altres, atributs com cn (common name) per descriure el nom comú, sn (surname) per al cognom, mail per a l’adreça de correu electrònic…


4. Arbre d’informació del directori. L’estructura de les diferents entrades del directori és formada per l’arbre d’informació del directori.

Les entrades estan organitzades en forma d’arbre basant-se en els DN. L’arbre d’entrades de directori es coneix com a directory information tree o arbre d’informació del directori (DIT).

Se suposa que un directori emmagatzema informació sobre els objectes que hi ha en una certa organització. Cada directori posseeix com a arrel (o base, en terminologia LDAP) la ubicació d’aquesta organització, de manera que la base es converteix de manera natural en el sufix dels noms distingits de totes les entrades que manté el directori.

A partir d’aquesta base, l’arbre se subdivideix en els nodes i subnodes necessaris per a estructurar de manera adequada els objectes de l’organització, objectes que se situen finalment com les fulles de l’arbre.

Hi ha dues maneres de nomenar o estructurar l’arbre d’un directori LDAP:

  • Estructura “tradicional”: formada pel país i l’estat on se situa l’organització i, a continuació, el nom d’aquesta organització. Per exemple, l’arrel o base de l’Institut Obert de Catalunya podria ser alguna cosa així: o=ioc st=catalunya, c=cat.
  • Estructura basada en noms de domini d’Internet, és a dir, en DNS: aquesta estructura utilitza els dominis DNS per nomenar l’arrel de l’organització. En aquest cas, la base de l’IOC seria la següent: dc=ioc, dc=cat (vegeu la figura).
Figura Exemple d’arbre del directori ioc.cat utilitzant el model DNS

D’acord amb aquesta figura, l’entrada corresponent a l’objecte professor “joan” tindria com a nom distingit “cn=joan, ou=professor, dc=ioc, dc=cat”. La base del directori o arrel de l’arbre d’informació es correspondria amb “dc:ioc,dc=cat”. Cadascuna de la resta de caixes per separat es correspondrien amb els RDN de l’arbre.

Utilitzarem el nomenament basat en DNS, ja que és la nomenclatura més utilitzada i permet localitzar servidors LDAP mitjançant cerques DNS.


5. Classes d’objecte. Cada objecte és definit per la classe a la qual pertany.

La classe de l’objecte és una descripció general d’un tipus d’objecte i, per tant, especifica implícitament la resta d’atributs d’aquest objecte, d’acord amb la definició establerta en l’esquema.

Cada objecte necessita, a més del nom distingit que l’identifica, la seva classe d’objecte, que s’especifica mitjançant l’atribut objectClass. La classe de l’objecte ha de constar en l’esquema o esquemes actius en el servidor LDAP. Un mateix objecte pot pertànyer a diferents classes simultàniament, de manera que hi pot haver molts objectClass per a un mateix objecte en el directori.

A més de les classes bàsiques d’objectes definides en els esquemes, l’administrador del servei LDAP pot definir dins dels esquemes els seus propis objectes o especificar en el servidor LDAP els esquemes que necessiti.

El format d'intercanvi de dades LDIF

El format LDIF (LDAP data tnterchange format) és l’estàndard per representar les entrades del directori LDAP en format text.

Resulta molt útil conèixer aquest tipus de representació perquè és el format que els servidors LDAP (l’OpenLDAP, entre altres) utilitzen per defecte per inserir informació en el directori i extreure’n. Així, segons el format LDIF, una entrada del directori consisteix en dues parts:

  • El DN o nom distingit, que ha de figurar en la primera línia de l’entrada i que es compon de la cadena dn seguida del DN complet de l’entrada.
  • Els atributs de l’entrada. Cada atribut es compon d’un nom d’atribut, seguit del caràcter dos punts i el valor de l’atribut. Si hi ha atributs multivalorats, han de posar-se seguits.

No hi ha cap ordre preestablert per a la col·locació dels atributs, però és convenient llistar primer l’atribut objectClass per millorar la llegibilitat de l’entrada.

Seguint amb l’exemple anterior, a continuació es mostra un subconjunt dels atributs de l’alumne Pere:

  • dn: cn=joan, ou=professors, dc=ioc, dc=cat
  • objectClass: person
  • cn: joan
  • sn: Perez
  • description: professor
  • mail: joan@ioc.cat

Cal tenir en compte que una entrada pot canviar de posició dins de l’arbre i modificar el seu DN. Per això tots els objectes tenen un universally unique identifier (UUID) que els identifica de manera única.

Operacions de l'LDAP en el directori

L’estàndard LDAP proporciona un model que permet controlar l’accés a les dades que hi ha en el directori. Aquest model defineix un conjunt d’operacions dividides en tres grups:

  • Operacions de consulta, permeten fer cerques en el directori i recuperar dades.
  • Operacions d’actualització, permeten afegir, esborrar, reanomenar i modificar entrades del directori.
  • Operacions d’autenticació i control, permeten la identificació dels clients i del directori i el control de certs aspectes d’una sessió.

Operacions de consulta

Les operacions de consulta permeten buscar i obtenir informació emmagatzemada en el directori.

L’operació search permet buscar en el directori les entrades que compleixen les especificacions indicades. Aquestes especificacions permeten indicar el punt d’inici de la cerca, la profunditat, els valors que han de tenir determinats atributs i els atributs que es retornaran. Per fer la recerca, s’han d’especificar els paràmetres següents:

  • Base: especifica el DN en què s’indica el punt de partida per a la cerca.
  • Scope: àmbit en què es farà la cerca, pot tenir diferents valors:
    • Base, només se cerca en l’entrada base.
    • One, se cerca en el nivell immediatament inferior a l’entrada base.
    • Subtree, se cerca en tot el subarbre sota l’entrada base.

    Referral

    Referral és el procés pel qual un servidor LDAP, en comptes de tornar un resultat, torna una referència a un altre servidor LDAP que pot contenir la informació que es vol.

  • Filtre de cerca: indica el criteri que s’aplicarà a la cerca.
  • Atributs a retornar: es pot indicar quins atributs es retornen i si es retorna el valor de l’atribut o el tipus de dada que conté.
  • Alias derreferencing: indica si el servidor ha de seguir les entrades referral o, per contra, la petició s’ha d’enviar al servidor referenciat.
  • Límit: indica el nombre màxim d’entrades que es retornaran o el temps que es farà servir per fer aquesta cerca. Els servidors poden imposar límits més estrictes que els que indiquin els clients.

També hi ha l’operació compare, que és similar a l’operació de cerca i utilitza un filtre d’equiparació. La diferència rau en el fet que quan hi ha una entrada que compleix les especificacions, però no té l’atribut que es vol retornar, el directori retorna un valor especial a fi d’indicar que aquesta entrada, tot i complir els requisits, no disposa de l’atribut.

Operacions d'actualització

Hi ha quatre operacions que permeten afegir, esborrar, reanomenar (modificar el DN) i modificar el contingut de les entrades del directori. Aquestes operacions són les següents:

1. Operació add. Aquesta operació permet afegir entrades noves en el directori. Com a paràmetres, rep el DN de l’entrada que cal crear i també els atributs i els valors que hi estan associats. Per poder fer aquesta operació, s’han de complir les condicions següents:

  • El node pare de l’entrada ha de ser en el directori.
  • No hi ha d’haver cap altra entrada amb el mateix DN.
  • L’entrada ha de complir els requisits especificats en l’esquema.
  • El control d’accessos ha de permetre aquesta operació.

2. Operació delete. Aquesta operació permet eliminar entrades del directori. Com a paràmetres, rep el DN de l’entrada a esborrar. Per poder fer aquesta operació, s’han de complir les condicions següents:

  • L’entrada a esborrar ha de ser en el directori.
  • Aquesta entrada no pot tenir cap fill.
  • El control d’accessos ha de permetre aquesta operació.

3. Operació rename. Aquesta operació permet modificar el DN d’una entrada. Per poder reanomenar una entrada, s’han de complir les condicions següents:

  • L’entrada a reanomenar ha d’existir.
  • No hi pot haver una entrada amb el DN nou.
  • El control d’accessos ha de permetre aquesta operació.

4. Operació modify. Permet modificar els atributs d’una entrada. Per poder executar aquesta operació, s’han de complir les condicions següents:

  • L’entrada a modificar ha d’existir.
  • L’entrada resultant s’ha d’ajustar a l’esquema.
  • El control d’accessos ha de permetre l’actualització.

Aquest punt indica que les operacions en LDAP són atòmiques. Si alguna de les modificacions falla, tota l’operació d’actualització falla.

Operacions d'autenticació i control

L’LDAP incorpora dues operacions d’autenticació (bind i unbind) i una de control (abandon):

  • Operació bind: aquesta operació permet autenticar el client en el directori. Hi ha diversos tipus d’autenticació en funció de les operacions que voleu fer en el directori. Entre els diferents tipus d’autenticació, hi podeu trobar els següents:
    • Sessions anònimes. Les sessions anònimes, en què no s’ha especificat l’usuari ni la contrasenya, solament tenen sentit per a operacions de cerca, ja que no s’ha fet cap mena de comprovació de la identitat del client.
    • Sessions autenticades. L’autenticació bàsica consisteix a enviar al servidor el nom distingit i la contrasenya de l’usuari en text clar per establir la connexió. El servidor considera que el client s’ha autenticat si la contrasenya coincideix amb l’emmagatzemada en el camp userPassword. Aquesta informació s’envia en text clar des del client al servidor, cosa que implica un risc de seguretat molt alt.
    • Sessions xifrades. L’LDAP també té en compte l’establiment de sessions xifrades. En aquest tipus de sessions, el client envia el nom distingit de l’usuari, el mètode d’autenticació que farà servir i les credencials necessàries per autenticar-se. El mecanisme SASL estableix els mètodes d’autenticació estàndard. L’avantatge principal d’aquest disseny rau en el fet que permet l’ampliació a mètodes d’autenticació nous mitjançant el mètode external. De fet, l’SSL (i el seu successor, TSL) utilitzen aquest mètode.
  • Operació unbind: aquesta operació tanca la connexió amb el servidor LDAP.
  • Operació abandon: aquesta operació permet indicar al servidor LDAP que el client abandona l’operació en curs.

Instal·lació i configuració d’un servei de directori als sistemes GNU/Linux

Resulta fonamental conèixer els processos d’instal·lació i configuració bàsica d’un servei de directori en un sistema GNU/Linux, concretament l’OpenLDAP. Abans, però, per conèixer millor el programari utilitzat, heu de saber en què consisteix el projecte OpenLDAP.

L’OpenLDAP és una implementació de codi obert i gratuïta de l’estàndard LDAP desenvolupada pel projecte OpenLDAP.

L’any 1998 Kurt Zeilenga va iniciar el projecte OpenLDAP. L’OpenLDAP va començar com un clon de la implementació LDAP de la Universitat de Michigan, entitat en què es va desenvolupar originalment l’LDAP i que actualment també treballa en l’evolució d’aquest protocol.

Logotipus del projecte OpenLDAP.

Bàsicament, l’OpenLDAP posseeix tres components principals:

  • slapd: Format per al servidor LDAP i algunes eines de gestió.
  • ldap-utils: Paquet que agrupa alguns programes client com l’ldapsearch, l’ldapadd, l’ldapdelete o l’ldapcat, entre d’altres.
  • Biblioteques que implementen el protocol LDAP, com liblber i libldap.

Instal·lació OpenLDAP

La primera qüestió que heu de tenir en compte, abans d’instal·lar un servei de directori mitjançant l’OpenLDAP, és escollir bé el maquinari i el programari que fareu servir.

Per instal·lar el servidor OpenLDAP en què emmagatzemareu la base de dades del directori i en què recaurà la major part del processament de les consultes al sistema, heu de tenir en compte les recomanacions següents:

  • Processador: si és possible, és millor que utilitzeu servidors amb multiprocessador.
  • Suport d’emmagatzemament: és convenient utilitzar un disc dur per al sistema operatiu i un altre per emmagatzemar la base de dades de l’OpenLDAP. Si no és possible, almenys hauríeu d’utilitzar dues particions separades. Aquesta és l’optimització més important.
  • Grandària de la memòria: dependrà del nombre d’entrades que tingui el directori i del nombre d’atributs que usi cada entrada. Normalment, necessitareu entre 2 GB i 4 GB de memòria.

Una vegada tingueu el maquinari necessari per instal·lar el servidor OpenLDAP, haureu de tenir en compte les recomanacions següents a l’hora d’instal·lar el sistema operatiu:

No és imprescindible disposar d’aquests recursos de maquinari o programari per poder utilitzar l’OpenLDAP, només són recomanacions.

  • Triar una instal·lació simple, només amb els complements imprescindibles.
  • Actualitzar el sistema operatiu amb els últims components de programari.
  • Triar un sistema d’arxius adequat, normalment l’ext4 per a GNU/Linux.
  • Aturar tots els serveis i dimonis que no s’hagin de fer servir.
  • Monitorar el servidor.
  • Optimitzar els paràmetres del sistema operatiu. Cal que us assegureu que la memòria, el processador i els suports d’emmagatzematge funcionen correctament.

Una vegada tingueu el maquinari i el sistema operatiu que necessiteu enllestits, passeu al pas següent: la instal·lació del servidor OpenLDAP.

Es diu dimoni a un programa que realitza funcions de manteniment en segon terme, sense ser controlat directament per l’usuari.

Instal·lació del servidor OpenLDAP

En aquest material veureu la instal·lació LDAP a un Ubuntu Server 20.04 LTS, però el procediment és el mateix en un Ubuntu Desktop. Podeu seguir la instal·lació amb aquest vídeo o seguint els següents passos:

Instal·lació d'un domini LDAP a Ubuntu Server

En els següents enllaços trobareu el procés, pas a pas, per configurar el domini: bit.ly/3KJCrrq i bit.ly/3cHMP6m.

Abans, però, assegureu-vos que teniu configurada correctament la configuració IP de la vostra màquina que convertireu en servidor LDAP, especialment que heu triat una IP estàtica. Una possible configuració seria la que mostra la figura:

Figura Configuració IP

Recordeu aplicar els canvis amb:

sudo netplan apply

També podeu editar el fitxer /etc/hosts de la màquina servidor i deixar-lo com mostra la figura. En l’exemple d’aquests materials, el domini LDAP que es crearà s’anomenarà IOC-domini.cat.

Figura Configuració host

Ara sí que podeu procedir amb la instal·lació. El paquet necessari per instal·lar el servidor OpenLDAP el podeu trobar en els dipòsits de l’Ubuntu: és el paquet slapd. També és convenient instal·lar el paquet ldap-utils, ja que proporciona diverses eines per manipular bases de dades com ldapadd per afegir una entrada nova a la base de dades. Caldrà escollir-la durant la configuració del servidor. Per instal·lar aquests dos paquets executareu l’ordre següent, la qual també podeu consultar a la figura:

sudo apt update
sudo apt install slapd ldap-utils
Figura Instal·lació openLDAP

Durant la instal·lació, haureu de configurar la contrasenya que voldreu per l’administrador del directori LDAP. Ho podeu consultar a la figura, i haureu de repetir l’entrada de la contrasenya una segona vegada.

Figura Contrasenya administador

Una vegada instal·lat el servidor OpenLDAP, podeu consultar els diferents tipus de fitxers que s’han afegit al sistema. Ho podeu fer amb la següent ordre, on concretament llistareu els fitxers executables o les ordres instal·lades. Aquestes ordres són necessàries per gestionar el servidor i la base de dades:

dpkg –L slapd | grep bin

Per consultar els manuals i la documentació sobre el servidor, feu servir les ordres:

dpkg –L slapd | grep man 
 
dpkg –L slapd | grep doc

L’ordre següent us ajudarà a conèixer quins són els fitxers de configuració del servidor OpenLDAP:

dpkg –L slapd | grep etc

Finalment, l’ordre següent us mostrarà els esquemes LDAP que el servidor OpenLDAP utilitza per defecte:

dpkg –L slapd | grep schema

Amb això haureu acabat la instal·lació, passareu ara a la configuració.

Configuració del servidor OpenLDAP

La configuració del servidor LDAP es realitza fent servir l’assistent de configuració que us proporciona el paquet slapd per configurar el servidor. Per iniciar la configuració, heu d’executar l’ordre següent:

sudo dpkg-reconfigure slapd

La primera pregunta de l’assistent serà si voleu ometre la configuració del slapd. Lògicament, triarem que no (figura).

Figura Configuració slapd

Seguireu amb l’entrada del nom del domini. En aquest exemple IOC-domini.cat. L’OpenLDAP farà servir aquest nom per crear tots els noms distingits de les entrades del directori, és a dir, el nom identificatiu de la base del vostre directori OpenLDAP (figura).

Figura Nom del domini

El següent pas serà entrar el nom de l’organització, seguint l’exemple anterior, entrareu IOC-domini (figura).

Figura Nom de l’organització

Us demanarà (dues vegades) la contrasenya que voleu definir per l’accés d’administrador.

Us preguntarà, a continuació, si voleu eliminar la base dades actual un cop acabada l’eliminació del paquet slapd amb l’eina purge. Aquesta opció és útil si teniu una base de dades i la voleu eliminar. En aquest exemple, triareu no per mantenir-la en cas de purgat (figura).

Figura Purgat de la base de dades

Al triar que no voleu purgar, ara us avisa que hi ha fitxers anteriors, i els ha de moure per crear la nova base de dades. Accepteu l’acció (figura).

Figura Nova base de dades

Una vegada acabat aquest procés de configuració, ja tindreu el vostre servidor OpenLDAP preparat per poder-hi treballar. El següent pas serà afegir elements dins el vostre servidor LDAP: grups i usuaris. Per fer-ho, escriureu la informació dels grups i usuaris en fitxers LDIF, per després entrar-los al servidor amb la comanda ldapadd.

Gestió del servei OpenLDAP

Una vegada instal·lat i configurat el servidor OpenLDAP, cal gestionar el servei per obtenir els resultats esperats. Principalment, la gestió del servei consistirà a dissenyar l’estructura del directori, introduir-hi les dades i, després, consultar-les.

Per tal d’accedir al directori OpenLDAP i poder crear-hi, modificar-hi i consultar-hi elements, hi ha dues opcions:

  • La primera opció és fer servir les ordres que proporcionen tant el servidor com el client mitjançant la línia d’ordres.
  • La segona opció és utilitzar un explorador de directoris LDAP gràfic. Totes dues opcions acompleixen els estàndards de les operacions LDAP en el directori que s’han explicat anteriorment.

Gestió del directori mitjançant la línia d’ordres

Primer veureu quines ordres us proporciona l’OpenLDAP i perquè serveixen:

  • ldapdelete, s’utilitza per esborrar una o més entrades del directori.
  • ldapmodrdn, serveix per modificar els RDN de les entrades.
  • ldapsearch, s’utilitza per fer una cerca mitjançant els paràmetres especificats, possiblement és l’ordre més utilitzada.
  • ldapcompare, fa una comparança mitjançant els paràmetres especificats.
  • ldapmodify, serveix per modificar les entrades del directori.
  • ldappasswd, és una eina que s’utilitza per establir la contrasenya d’un usuari LDAP.
  • ldapwhoami, la funció és fer una operació whoami i determinar amb quin usuari heu fet un bind o login.
  • ldapexop, permet executar operacions esteses, definides per una organització d’estandardització o un venedor de directori particular, per exemple PAM.
  • ldapadd, s’usa per afegir entrades.

Totes aquestes ordres han d’obrir una connexió amb el servidor LDAP, és a dir, s’han d’autenticar per portar a terme la seva tasca.

En totes les ordres serà necessari especificar l’usuari, la paraula de pas, la màquina en què us voleu autenticar i alguna altra opció. Així, les opcions comunes a totes les ordres són les següents:

  • -D binddn. Determina el nom distintiu de l’usuari amb el qual us voleu connectar al servidor. El binddn es correspon amb la identificació única del node en què es troba l’usuari dins l’arbre LDAP.
  • -W . Us pregunta per línia de comandes la paraula de pas. També es pot especificar mitjançant -w password. (Cal anar amb compte perquè d’aquesta manera la contrasenya aniria en text clar.)
  • -H ldapurl. Especifica l’URL (s) de referència del servidor OpenLDAP (s) en què el client es vol autenticar. En la sintaxi només estan permesos els camps protocol / host / port i s’espera una o diversos URL, separades per espais en blanc o comes.
  • h –ldaphost. Especifica el nom de màquina del servidor en comptes de l’URL de l’opció anterior.
  • -x . Determina que s’utilitzarà l’autenticació simple en lloc de SASL.

Exemples de com gestionar el directori

Vegeu els dos exemples següents:

  • Connectar amb el servidor local amb autenticació simple amb l’usuari admin per tal d’afegir les entrades que hi ha en un fitxer amb format .ldif i que abans us demani la contrasenya:
sudo ldapadd -x -D cn=admin,dc=IOC-domini,dc=cat -W -f base.ldif
  • Connectar amb el servidor local amb autenticació simple i buscar la informació disponible sobre la base del directori dc=ioc, dc=xtec,dc=cat.
ldapsearch –x –h localhost –b dc=IOC-domini,dc=cat

A continuació, afegireu a la base de dades LDAP que acabeu de crear un nou grup i un usuari. Ho fareu via terminal, amb l’ordre ldapadd i els fitxers LDIF.

Així doncs, simulareu que voleu organitzar el personal del IOC, diferenciant-lo entre professorat i alumnat. I cada alumnat dins el seu cicle formatiu. El procés seria el següent:

1- Creareu un fitxer anomenat grups.ldif i hi escriureu el següent codi per crear un nou grup anomenat smx que formarà part d’una unitat organitzativa anomenada alumnat (també ho podeu veure a la figura).

nano grup.ldif

Només cal crear una vegada la unitat organitzativa i els grups.

dn: ou=alumnat,dc=IOC-domini,dc=cat
objectClass: organizationalUnit
objectClass: top
ou: alumnat

dn: cn=smx,ou=alumnat,dc=IOC-domini,dc=cat
objectClass: posixGroup
objectClass: top
cn: smx
gidNumber: 1001
Figura Configuració grup

2- Afegireu el contingut del fitxer grup.ldif a la base de dades LDAP amb la següent entrada (vegeu la figura).

sudo ldapadd -x -D cn=admin,dc=IOC-domini,dc=cat -W -f grups.ldif

Assegureu-vos que no us dona cap error. En cas d’error us dirà a quina línia del fitxer grup.ldif s’ha de buscar.

Figura Afegit del grup a la base de dades

3- Creareu ara un nou usuari, seguint el procediment anterior: redacció del fitxer ldif i inserció amb la comanda ldapadd. Comenceu per la redacció del fitxer usuaris.ldif amb el codi per crear l’usuari Queralt que formarà part del grup smx i de la unitat organitzativa usuaris (vegeu la figura).

dn: cn=Queralt Serra,cn=smx,ou=alumnat,dc=IOC-domini,dc=cat
cn: Queralt Serra
gidnumber: 1001
homedirectory: /home/queralt
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: Serra
uid: queralt
uidnumber: 1100
Figura Creació d’usuaris a la base de dades

4- Afegireu el contingut del fitxer usuaris.ldif a la base de dades LDAP amb la següent entrada (vegeu la figura).

sudo ldapadd -x -D cn=admin,dc=IOC-domini,dc=cat -W -f usuaris.ldif
Figura Configuració usuaris

5- Com podeu comprovar, a l’entrada de l’usuari anterior no s’ha especificat cap contrasenya. Ho haureu de fer afegint la següent línia de codi al fitxer usuaris.ldif:

userPassword: contrasenya

Però aprofitareu que al vostre fitxer inicial usuaris.ldif no hi ha la contrasenya per afegir-la posteriorment fent ús de l’ordre ldappasswd, de la següent manera (també podeu consultar-ho a la figura).

sudo ldappasswd -S -W -D "cn=admin,dc=IOC-domini,dc=cat" -x "cn=Queralt Serra,cn=smx,ou=alumnat,dc=IOC-domini,dc=cat"

A continuació, us demanarà el nou password per l’usuari.

Figura Afegir o canviar contrasenya

6- Per comprovar que tot l’arbre s’ha entrat correctament al domini, podeu fer servir les comandes ldapsearch. Alguns exemples d’ús són:

  • Visualitzar tot l’arbre:
    sudo ldapsearch -x -LLL ldap:/// -b dc=IOC-domini,dc=cat dn
  • Visualitzar una unitat organitzativa:
    sudo ldapsearch -x -H ldap:/// -b ou=alumnat,dc=IOC-domini,dc=cat dn
  • Visualitzar un usuari:
    sudo ldapsearch -x -H ldap:/// -b "cn=Queralt Serra,cn=smx,ou=alumnat,dc=IOC-domini,dc=cat"

A l’última de les comandes anterior, s’ha fet servir les cometes “ ”, ja que hi havia un espai en el nom de l’usuari, grup o unitat organitzativa.

Un explorador de directoris gràfic té un funcionament intuïtiu, caldrà que coneixeu els processos d’instal·lació, configuració i utilització de l’explorador.

Gestió del directori mitjançant exploradors gràfics

Hi ha molts exploradors de directori LDAP, tant de pagament com lliures. Entre les aplicacions lliures, destaquem l’Apache Directory Studio, el LAM (LDAP Account Manager) i les aplicacions web Gosa i phpLDAPadmin.

PhpLDAPadmin

El PhpLDAPadmin és una eina per a l’administració gràfica de servidors LDAP, escrita en php i accessible per mitjà d’una interfície web.

Front end

Els exploradors gràfics de directori només són un frontal (front end) per facilitar la tasca als usuaris. Realment aquests exploradors, per fer les seves tasques, fan servir les ordres del sistema que s’han explicat anteriorment.

En aquest material utilitzarem l’aplicació phpLDAPadmin per exemplificar el funcionament d’una eina gràfica d’administració de l’OpenLDAP.

Aclariment

L’administració del servidor LDAP es pot fer des de la línia d’ordres en qualsevol sistema que no tingui entorn gràfic (pot ser el nostre cas), ja que heu instal·lat un Ubuntu Server Edition. També es poden fer servir eines gràfiques instal·lades en altres màquines que, mitjançant la connexió via web, us permeten gestionar el servei OpenLDAP.

El PhpLDAPadmin proporciona una vista jeràrquica basada en l’arbre d’informació del directori amb la qual es pot navegar per tota l’estructura de directori. Permet veure els esquemes LDAP, fer cerques, crear, esborrar, copiar i editar entrades LDAP i, fins i tot, copiar entrades entre servidors LDAP.

Instal·lació del phpLDAPadmin

Podeu seguir la instal·lació amb aquest vídeo (VIDEO UF2-A3-Gestió domini amb PHPldapAdmin.mp4) o amb els passos que trobareu a continuació.

Per instal·lar l’aplicació, executeu l’ordre següent a la màquina on hi teniu el servidor LDAP:

Paquet phpLDAPadmin per la gestió gràfica del domini

El següent enllaç us porta a la web oficial de phpLDAPadmin, amb la documentació per la seva instal·lació i funcionament: bit.ly/3ejpNTJ.

sudo apt install phpldapadmin

Un cop instal·lat, heu de configurar el nom del domini que haurà de fer servir. Per fer-ho, editareu el fitxer /usr/share/phpldapadmin/config/config.php , i cercareu les següents tres entrades dins l’apartat Define your LDAP servers in this section (podeu consultar-ho també a la figura):

  • Nom del servidor (canvi opcional):

L’entrada:

 $servers->setValue('server','name','My LDAP Server'); 

La canviareu per:

 $servers->setValue('server','name','Servidor LDAP del IOC'); 
  • Domini del servidor:

L’entrada:

 $servers->setValue('server','base',array('dc=example,dc=com')); 

La canviareu per:

 $servers->setValue('server','base',array('dc=IOC-domini,dc=cat')); 
  • Nom de l’administrador:

L’entrada:

 $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com'); 

La canviareu per:

 $servers->setValue('login','bind_id','cn=admin,dc=IOC-domini,dc=cat'); 
Figura Configuració phpLDAPadmin

Un cop guardats els canvis i tancat l’editor, podeu obrir una sessió de qualsevol navegador web d’un ordinador connectat a la mateixa xarxa que l’equip servidor, i accedir a la interfície gràfica. Per fer-ho, caldrà introduir el següent en la línia d’adreces:

http://IP_del_servidor/phpldapadmin

Us apareixerà la finestra que veieu en la figura, on haureu de clicar a login i seguidament entrar el password d’administració de LDAP.

Figura Web de phpLDAPadmin

Finalment, un cop entrat el password de l’administrador LDAP, entrareu al domini LDAP. Tal com mostra la figura.

Figura Web de phpLDAPadmin

Com podreu comprovar, ja us apareix la informació entrada des del servidor. Qualsevol canvi que feu al terminal es reflectirà immediatament a la interfície web, i viceversa. Per actualitzar la base de dades, podreu clicar a Refresh en qualsevol moment.

Així doncs, com veieu, teniu disponible el grup alumnes i l’usuari Queralt Serra. Si cliqueu a l’usuari, en veureu la seva informació, com per exemple el grup al qual pertany (smx).

Aquesta és una interfície molt agradable per gestionar la base de dades, i podeu fer-hi qualsevol canvi als usuaris ja creats o crear-ne de nou.

Creació i gestió del directori amb el phpLDAPadmin

Per introduir les dades del directori amb el phpLDAPadmin, teniu dues opcions: importar un fitxer en format LDIF o bé fer servir la interfície gràfica que us proporciona l’aplicació per crear-les. Veureu totes dues opcions.


Importar un fitxer en format LDIF:

La importació de dades des d’un fitxer LDIF requereix que el fitxer tingui el format correcte perquè l’aplicació ho interpreti adequadament.

Un exemple de fitxer per crear un nou grup (DAM) seria el següent:

dn: cn=DAM,ou=alumnat,dc=IOC-domini,dc=cat
objectClass: posixGroup
objectClass: top
cn: DAM
gidNumber: 1002

Un exemple d’un fitxer per crear un nou usuari dins el grup DAM seria el següent:

dn: cn=Laia Torres,cn=DAM,ou=alumnat,dc=IOC-domini,dc=cat
cn: Laia Torres
gidnumber: 1002
homedirectory: /home/laia
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: Torres
uid: laia
uidnumber: 1103

De moment el creareu sense password, per afegir-lo posteriorment amb més seguretat.

Una vegada tingueu el fitxer amb el format correcte, seleccionareu l’opció import, que apareix al damunt de l’arbre de directori i us permetrà seleccionar el fitxer d’importació que voleu (o copiant el contingut del fitxer i enganxant-lo al quadre disponible). Després de seleccionar-lo, cal que cliqueu a Proceed. Si no hi ha cap error, us afegirà les entrades corresponents a l’arbre del directori.

Podeu veure les dues maneres d’entrar la informació a la figura, figura i figura.

Figura Entrada d’un nou grup per fitxer LDIF
Figura Entrada d’un nou usuari per fitxer LDIF
Figura Entrada d’un nou usuari per text

Podeu afegir camps a una entrada clicant sobre Add new attribute. Trieu el camp Password per crear una contrasenya, i afegiu-li, tal com podeu observar a la figura.

Figura Entrada d’una contrasenya

Finalment, cliqueu sobre Update Object per acceptar els canvis.


Utilitzar la interfície gràfica:

Si voleu introduir manualment les dades d’un nou objecte (usuari o grup), haureu de seleccionar Create new entry here allà on el voleu crear. A continuació, apareixerà la pantalla de la figura, en què podreu escollir el tipus d’entrada que voleu afegir a l’arbre del directori.

Figura Tria de l’entrada

Per posar-hi un exemple, creareu un nou usuari fent clic a Generic User Account i entrant els detalls del vostre nou usuari. En podeu veure un exemple a la figura.

Figura Exemple de creació d’un nou usuari

Un cop creat l’usuari, podeu comprovar que les dades s’han entrat correctament. Especialment, comproveu si el homeDirectory s’ha desat bé. També podreu escriure manualment el loginShell per posar-lo en /bin/bash , ja que és l’habitual. Finalment, actualitzeu els canvis amb un UpdateObject.

Altres opcions imprescindibles, definides en el model estàndard de l’LDAP, que us proporciona el phpLDAPadmin són la cerca de dades dins del directori (ldapsearch) i l’exportació del directori en un fitxer (ldapcat). La cerca d’informació en el directori s’efectua mitjançant una sèrie de paràmetres que ens permeten delimitar el rang de cerca i determinar el format de sortida de les dades. Per fer la cerca premeu el botó search. A continuació, us apareixerà la pantalla de la figura on cercareu els usuaris que tenen el cognom (sn) igual a Serra.

Figura Cerca d’informació

El significat dels paràmetres o els camps que podeu especificar per a la cerca són els següents:

  • Base DN: especifica el DN en què s’indica el punt de partida per a la cerca.
  • Search Scope: àmbit de la recerca, pot ser:
    • Base: només se cerca en l’entrada base.
    • One: se cerca en el nivell immediatament inferior a l’entrada base.
    • Subtree: se cerca en tot el subarbre sota l’entrada base.
  • Search Filter: filtre de cerca, indica el criteri de cerca.
  • Show attributtes: atributs a mostrar, es pot indicar quins atributs es retornen i si es retorna el valor de l’atribut o el tipus de dada que conté.
  • Order by: determina l’ordre de les dades retornades.

Es poden fer més operacions amb aquest o altres exploradors gràfics. Deixarem que els alumnes explorin la resta d’opcions i d’altres eines gràfiques per gestionar el directori.

Autenticació d'usuaris en xarxes GNU/Linux

Cal conèixer com es gestiona l’autenticació tradicional en els sistemes GNU/Linux. Per entendre millor el funcionament de l’autenticació en els sistemes GNU/Linux, és necessari saber quins arxius i eines utilitzen els sistemes per gestionar els comptes d’usuaris i grups, i els perfils que tenen.

L’autenticació és l’acte d’establiment o confirmació d’alguna cosa o persona com a autèntica. L’autenticació d’un objecte pot significar la confirmació de la seva procedència, mentre que l’autenticació d’una persona sovint consisteix a verificar-ne la identitat.

L’autenticació es pot considerar un dels tres passos fonamentals en termes de seguretat de xarxes. Aquests passos són els següents:

  1. Autenticació, és el procés de verificar la identitat digital del remitent d’una comunicació, com una petició per connectar-se. El remitent que és autenticat pot ser una persona que usa un ordinador, un ordinador o un programa de l’ordinador. Per exemple, en un servei de directori l’autenticació és una manera d’assegurar que els usuaris són qui diuen que són, és a dir, que l’usuari que intenta fer funcions en el sistema és, de fet, l’usuari que té l’autorització per fer-les.
  2. Autorització, és el procés pel qual la xarxa autoritza l’usuari identificat a accedir a determinats recursos d’aquesta xarxa.
  3. Auditoria, mitjançant la qual la xarxa o els sistemes associats registren tots els accessos als recursos que fan els usuaris autoritzats o no.

Mecanisme general d'autenticació

La major part dels sistemes informàtics i de xarxes mantenen d’una manera o altra una relació d’usuaris associats normalment amb un perfil de seguretat, amb privilegis i permisos.

L’autenticació dels usuaris permet que aquests sistemes assumeixin amb una seguretat raonable que qui s’hi connecta és qui diu ser. D’aquesta manera, les accions que s’executen en el sistema després es poden referir a l’usuari i el sistema pot aplicar els mecanismes d’autorització i auditoria oportuns. Per tant, el primer element necessari per a l’autenticació és que hi hagi identitats amb un identificador únic o login.

El procés general d’autenticació consta dels passos següents:

  1. L’usuari sol·licita accés a un sistema.
  2. El sistema sol·licita a l’usuari que s’autentiqui.
  3. L’usuari aporta les credencials que l’identifiquen i permeten verificar l’autenticitat de la identificació.
  4. El sistema valida segons les seves regles si les credencials aportades són suficients per donar accés a l’usuari o no.

Gestió d’usuaris en els sistemes GNU/Linux

Per entendre millor la gestió d’usuaris en els sistemes GNU/Linux, cal que tingueu presents els conceptes següents:

Els comptes d’usuari permeten la identificació d’accés al sistema o a la xarxa. Són estructures de dades administratives que permeten reunir totes les dades associades a un mateix usuari. En un sistema GNU/Linux, els comptes d’usuaris poden estar lligats a usuaris reals, és a dir, persones físiques que utilitzen el sistema. També els poden utilitzar aplicacions específiques, per fer servir els permisos i els drets del sistema. Els comptes d’usuari engloben el conjunt d’atributs que caracteritzen l’usuari i també tots els fitxers i els directoris associats a l’usuari. Cal una base de dades per emmagatzemar els usuaris. Tradicionalment, els sistemes GNU/Linux emmagatzemen la informació dels comptes d’usuaris en l’arxiu /etc/passwd.

Els grups són estructures lògiques que es fan servir per organitzar els usuaris amb un propòsit i unes característiques comuns. Quan es concedeix la pertinença a un grup a un usuari, se li assignen automàticament totes les propietats, drets, característiques, permisos i privilegis d’aquest grup. Els sistemes GNU/Linux emmagatzemen la informació dels distints grups en l’arxiu /etc/group.

Cada usuari i grup del sistema té un identificador únic anomenat userid (UID) i groupid (GID), respectivament. El sistema utilitza aquest identificador, en comptes de noms, per diferenciar unívocament entre els usuaris i els grups.

La funció principal de l’existència dels usuaris i els grups en els sistemes GNU/Linux és la d’autenticació, que permet accedir al sistema. Cada usuari disposa d’un nom d’usuari o login i una contrasenya que haurà d’utilitzar per iniciar una sessió en el sistema. El sistema, mitjançant el procés d’autenticació, comprovarà que l’usuari existeix i que la paraula de pas que fa servir coincideix amb la contrasenya emmagatzemada de manera encriptada. Una vegada dins del sistema, cada usuari disposarà dels permisos i els drets que determini el grup al qual pertany i d’un perfil establert per defecte.

El login s’utilitza per a la comoditat de les persones, ja que resulta més fàcil recordar-se d’un nom que no pas d’un identificador numèric.

A més de l’autenticació en el sistema, una de les utilitats principals dels usuaris i els grups és la gestió dels recursos del sistema. Per exemple, quan es crea un fitxer en el sistema, se li assigna automàticament un usuari i un grup. De la mateixa manera, al fitxer se li assignen els permisos d’escriptura, lectura i execució per a l’usuari propietari del fitxer, per al grup al qual pertany el propietari i per a la resta d’usuaris del sistema.

El perfil, per defecte, pot ser determinat per l’administrador del sistema.

Quan creem un usuari, per facilitar la gestió dels permisos i els drets, el sistema crea un grup d’usuari nou amb el nom de l’usuari mateix. L’usuari és l’únic membre d’aquest grup.

Els arxius de configuració en què s’emmagatzema la informació dels usuaris, els grups i les contrasenyes, i mitjançant els quals es gestiona l’autenticació i la seguretat d’accés als sistemes GNU/Linux, són els arxius /etc/passwd, /etc/group i /etc/shadow.

L’arxiu /etc/passwd

L’arxiu /etc/passwd és el que utilitzen els sistemes GNU/Linux per emmagatzemar la informació dels usuaris del sistema. Tots els usuaris han de tenir una entrada en aquest arxiu per poder accedir al sistema.

Per defecte, l’arxiu /etc/passwd és propietat de l’usuari root i proporciona tot els permisos. La resta d’usuaris del sistema només poden llegir l’arxiu. L’arxiu /etc/passwd està format per una sèrie de línies que contenen un conjunt de camps separats per dos punts. Cadascuna d’aquestes línies emmagatzema informació d’un usuari. El format és el següent:

nom_us:clau:UID:GID:coment:dir_us:prog_inici
  • nom_us: Aquest camp és el nom d’usuari (login) que s’utilitza per accedir al sistema, és un camp obligatori.
  • clau: Aquest camp correspon a la clau que l’usuari utilitza per accedir al sistema. El camp clau està encriptat i realment no s’emmagatzema en aquest arxiu, sinó en l’arxiu /etc/shadow. La raó per la qual la clau s’emmagatzema en un arxiu distint és la seguretat, ja que tots els usuaris del sistema tenen permisos de lectura sobre l’arxiu /etc/passwd i es podrien fer servir tècniques de cracking per desencriptar les claus d’altres usuaris. Normalment, apareix una x en el camp.
  • UID: És el número que identifica unívocament l’usuari i, per tant, no es pot repetir. També és un camp obligatori per a cada usuari. Per defecte, l’usuari root té el valor 0.
  • GID: Aquest camp és el número que identifica el grup de l’usuari i està associat a una línia en l’arxiu /etc/group. Cada usuari ha de pertànyer, com a mínim, a un grup.
  • coment: En aquest camp s’emmagatzemen dades de l’usuari, com ara el telèfon, l’adreça… Aquestes dades se separen per comes i són opcionals.
  • dir_us: Aquest camp determina el camí (path) complet del directori. En funció de l’ordre que utilitzem per crear l’usuari, aquest directori es generarà automàticament en crear l’usuari o no.
  • prog_inici: Aquest camp especifica el programa que s’ha d’executar cada vegada que l’usuari accedeix al sistema. Normalment, aquest programa es correspon amb l’embolcall (shell) amb què l’usuari ha de treballar.

L’arxiu /etc/group

L’arxiu /etc/group és el que utilitzen els sistemes GNU/Linux per emmagatzemar la informació dels grups que hi ha en el sistema. Tots els grups han de tenir una entrada en aquest arxiu i tots els usuaris han de pertànyer a algun grup.

L’arxiu /etc/group és propietat de l’usuari root. La resta d’usuaris del sistema només el poden llegir. L’arxiu /etc/group està format per una sèrie de línies que contenen un conjunt de camps separats per dos punts. Cadascuna d’aquestes línies emmagatzema informació d’un grup. El format és el següent:

nom_grup:clau:GID:lista_components 
  • nom_grup: Aquest camp correspon al nom amb el qual s’identifica el grup.
  • clau: Correspon a la clau xifrada assignada al grup. Actualment no s’utilitza. Aquesta clau, si hi és, s’emmagatzema en l’arxiu /etc/gshadow, que té la mateixa funcionalitat que l’arxiu /etc/shadow, és a dir, emmagatzemar les claus encriptades. En aquest cas, però, per als grups.
  • GID: aquest camp determina el número identificador del grup, que ha de ser igual al dels usuaris que pertanyen a aquest grup i que apareix en l’arxiu /etc/passwd.
  • lista_components: és una llista dels usuaris, separats per comes, que pertanyen al grup.

L’arxiu /etc/shadow

L’arxiu /etc/shadow és l’arxiu en què els sistemes GNU/Linux emmagatzemen les contrasenyes xifrades dels usuaris per garantir l’accés al sistema. Per motius de seguretat, aquest arxiu només el pot editar el superusuari i només el poden llegir els usuaris que pertanyen al grup del superusuari.

L’arxiu /etc/shadow emmagatzema la informació en files que contenen les dades següents:

nom_us:clau:ult_canvi:pue_canvi:ha_de_canvi:avís:cad:desha:reservat
  • nom_us: és el nom que l’usuari utilitza per identificar-se en el sistema.
  • clau: aquest camp correspon a la contrasenya xifrada de l’usuari anterior.
  • ult_canvi: són els dies que han transcorregut des de l’1 de gener de 1970 fins al dia que es va canviar la contrasenya per última vegada. Serveix per calcular quant de temps fa que no es canvia la contrasenya.
  • ha_de_canvi: són els dies que han de passar perquè un usuari pugui canviar la seva contrasenya.
  • avís: aquest camp determina el nombre de dies d’antelació amb els quals s’avisarà un usuari perquè canviï la contrasenya abans que caduqui.
  • cad: aquest camp especifica el nombre de dies que han de transcórrer des que la contrasenya ha expirat fins que es deshabilita.
  • desha: nombre de dies, des de l’1 de gener de 1970, que fa que el compte està deshabilitat.
  • reservat: camp reservat per al sistema.

Eines de gestió d’usuaris

Els sistemes GNU/Linux incorporen una sèrie d’eines, tant per línia d’ordres com gràfiques, per gestionar els usuraris i els grups del sistema. Entre les ordres que proporciona el sistema, hi ha les següents:

Per tal d’ingressar en el sistema amb un usuari, podeu utilitzar les ordres amb nom_usuari o login nom_usuari.

  • useradd, adduser, groupadd, addgroup: aquestes ordres permeten al superusuari crear usuaris i grups nous en el sistema. Depenent de la distribució amb la qual treballem, aquestes ordres funcionen igual o no. En l’Ubuntu hi ha diferències entre aquestes ordres. Les ordres adduser i addgroup són més completes, ja que realment són scripts de Perl que utilitzen les ordres useradd i groupadd per crear usuaris i grups. De fet, les ordres adduser i addgroup us permeten crear tots els paràmetres (la contrasenya, el directori de l’usuari…) dels usuaris i els grups alhora.
  • usermod, groupmod: són ordres que es fan servir per modificar la informació sobre els usuaris i els grups respectivament. Només les pot utilitzar l’usuari root.
  • userdel, deluser, groupdel, delgroup: permeten al superusuari esborrar usuaris i grups del sistema. El funcionament també depèn de cada distribució, com en el cas de les ordres de creació. L’ordre userdel -r eliminareu també la carpeta de l’usuari.
  • passwd: ordre que es fa servir per establir o actualitzar la contrasenya dels usuaris que hi ha en el sistema.
  • users: aquesta ordre s’utilitza per imprimir els noms dels usuaris que actualment estan connectats a la màquina.
  • groups: ordre que es fa servir per veure els usuaris que hi ha en el sistema.
  • id: ordre que mostra l’usuari amb el qual s’ha ingressat en el sistema i els grups als quals pertany aquest usuari.
  • chage: ordre que permet modificar les dades d’expiració de les paraules de pas dels usuaris.

L’Ubuntu Desktop també proveeix una interfície gràfica senzilla per gestionar els usuaris. Hi podeu accedir mitjançant la cerca de Usuaris (o dins el menú Paràmetres) i ho podeu veure a la figura.

Figura Gestió d’usuaris

Perfils d’usuari

En la majoria de sistemes en xarxa interessa que els usuaris es puguin presentar en més d’una estació de treball i que aquesta connexió sigui independent del lloc, de manera que el treball en una estació o una altra sigui transparent. A més, pot interessar a l’administrador tenir la possibilitat de forçar l’ús de determinats programes o restringir els canvis en l’aparença de la interfície gràfica a certs grups d’usuaris. D’aquesta manera, els sistemes operatius GNU/Linux incorporen utilitats que associen a cada compte d’usuari o grup un perfil concret.

Els perfils d’usuari permeten configurar l’entorn de treball personalitzat de cada usuari. Permeten definir elements com l’entorn d’escriptori, la configuració de xarxa, les impressores…

Hi ha diferents tipus de perfils d’usuari:

  • Perfil d’usuari local, es crea la primera vegada que un usuari inicia una sessió a la màquina i s’emmagatzema en el disc dur local. Totes les modificacions efectuades en aquest tipus de perfil són específiques de l’equip concret en què s’han efectuat.
  • Perfil d’usuari mòbil, està orientat a l’autenticació en xarxa mitjançant servidors. Aquest tipus de perfil el crea l’administrador del sistema i s’emmagatzema en un servidor. El perfil es descarrega a l’equip local quan l’usuari inicia la sessió.

Per entendre millor com funcionen els perfils d’usuaris i els fitxers implicats en la configuració, cal veure primer els tipus d’intèrprets d’ordres que podeu trobar en els sistemes GNU/Linux i els fitxers que s’executen per a cada tipus. Generalment, la majoria de distribucions GNU/Linux utilitzen per defecte l’intèrpret d’ordres bash. Durant el procés d’arrencada del sistema, s’executa una sèrie d’scripts amb l’objectiu de crear un entorn d’usuari. Entre aquests scripts hi ha els que activen els terminals de consola i l’entorn gràfic. En activar aquests serveis s’invoca un intèrpret d’ordres (shell).

Configuració de sistema (per-system basis)

Segons l’estàndard FHS (Filesystem Hierachy Standard), els fitxers de configuració que afecten tot el sistema (per-system basis) han de ser en la carpeta /etc. Passa el mateix amb els perfils. Aquests fitxers de configuració globals contenen les configuracions per defecte per a tots els usuaris del sistema. Cal tenir en compte, però, que les configuracions de cada usuari poden sobreescriure les configuracions globals.

Configuració distribucions

Cal tenir en compte que els sistemes GNU/Linux són altament configurables (el fet de disposar del codi font permet una configuració/adaptació a mida sense límits) i que, per tant, és possible que hi hagi sistemes que tinguin els directoris home dels usuaris en altres carpetes del sistema.

FHS és una norma que defineix els directoris principals i els seus continguts en el sistema operatiu GNU/Linux i altres sistemes de la família Unix.

El més habitual és que els fitxers de configuració globals només els puguin editar l’administrador del sistema (usuari root) o els usuaris que tinguin permisos per administrar el sistema.

Configuració d'usuari (per-user basis)

Els fitxers que són propietat dels usuaris del sistema són en la carpeta /home. Dins d’aquesta carpeta cada usuari sol ser el propietari de la carpeta /home/nom_usuari. Per exemple, l’usuari Pere és propietari de la carpeta següent: /home/pere.

Com que els fitxers de la carpeta home d’un usuari són propietat seva, l’usuari els pot llegir, modificar i, fins i tot, eliminar.

Per raons de seguretat, els fitxers de configuració solen ser fitxers ocults, és a dir, comencen per “.” (punt). Per veure aquests fitxers, cal utilitzar el paràmetre -a de l’ordre ls.

La home sovint es referencia amb el símbol ~.

Cal tenir en compte que els usuaris poden modificar els fitxers de la seva home. Així doncs, no podeu fer “configuracions obligatòries” mitjançant aquests fitxers. També cal pensar que aquests fitxers normalment s’executen després dels fitxers de configuració de sistema i que, per tant, poden sobreescriure les configuracions de sistema.

Fitxers ocults

Utilitzar fitxers ocults té dos objectius. En primer lloc, amagar fitxers que normalment l’usuari no modifica directament, ja que ho fan les aplicacions. En segon lloc, fa més difícil que l’usuari modifiqui aquests fitxers per error. Se suposa que només l’usuari que sap què fa pot modificar directament aquests fitxers.

Si voleu establir un perfil comú d’usuari per defecte, podeu manipular el directori /etc/skel. En el moment de crear un usuari nou, el contingut es copiarà al directori home de l’usuari nou. Cal tenir en compte que els canvis fets en els fitxers de la carpeta /etc/skel només s’apliquen als usuaris nous, no als usuaris que ja hi són.

Per exemple, si creem un usuari nou anomenat ioc, en crear el seu compte es crearà un directori nou anomenat /home/ioc, que serà una còpia del directori /etc/skel.

Altres mecanismes d’autenticació en els sistemes GNU/Linux

A banda de l’autenticació tradicional, els sistemes GNU/Linux permeten fer servir altres mecanismes d’autenticació. De la gestió i la configuració dels mecanismes d’autenticació diferents del mecanisme tradicional per a les aplicacions en els sistemes GNU/Linux, se n’encarrega el sistema Linux PAM. A banda, també podem dur a terme l’autenticació a través d’un servidor LDAP, mitjançant la configuració de l’NSS.

PAM ('pluggable autentication module')

El mecanisme més utilitzat per les aplicacions per a l’autenticació d’usuaris es diu PAM (pluggable autentication module) i el podeu definir com a:

El PAM és un mecanisme que les aplicacions fan servir per a l’autenticació d’usuaris. No és un model d’autenticació en si, sinó un mecanisme que proporciona una interfície entre les aplicacions d’usuari i els diferents mètodes d’autenticació. D’aquesta manera, intenta solucionar un dels problemes clàssics de l’autenticació d’usuaris: el fet que una vegada que s’ha definit i implantat un mecanisme d’autenticació determinat en un entorn, sigui difícil canviar-lo.

El PAM està compost per un paquet de llibreries compartides que permeten especificar la manera com les diverses aplicacions autenticaran els usuaris.

La utilització del PAM comporta una sèrie d’avantatges. Per exemple, permet utilitzar sistemes d’autenticació diferents del mecanisme tradicional d’autenticació dels sistemes GNU/Linux, fitxer /etc/passwords, sense necessitat de canviar el disseny de les aplicacions. És a dir, podeu comunicar les nostres aplicacions amb els mètodes d’autenticació que voleu d’una manera transparent. També permet desenvolupar programes amb independència de l’esquema d’autenticació. Utilitza mòduls d’autenticació en temps d’execució i així no ha de tornar a compilar per canviar l’esquema d’autenticació.

Com mostra l’esquema de la figura, els fitxers de configuració del Linux PAM especifiquen quin serà el mecanisme d’autenticació per a cada servei o aplicació del sistema. Per tant, no cal modificar el codi del sistema ni de cap aplicació.

Un esquema d’autenticació defineix la manera com un usuari determinarà la seva identitat.

Figura Esquema PAM

Dins el directori /etc/pam.d podeu configurar la manera com cada element s’haurà d’autenticar, els serveis o les aplicacions que requereixen autenticació en el sistema. Per no haver de repetir la configuració per a cada servei, hi ha una sèrie d’arxius comuns, el nom dels quals comença per common. Els arxius de configuració de cada servei fan referència a aquests arxius comuns mitjançant una línia @include amb el nom de l’arxiu. Utilitzar aquesta línia té el mateix resultat que copiar el text de l’arxiu al qual fan referència en el fitxer que la conté. Els arxius comuns són common-auth, common-account, common-session i common-password.

Passem a explicar-ne la funcionalitat i la sintaxi. Tots quatre arxius estan formats per línies que determinen una sèrie de regles d’actuació. Cada línia executarà un mòdul que s’encarregarà de l’autenticació. Aquestes regles estan formades per un conjunt de camps amb el format següent:

type control module-path module-arguments


1. Camp type. El camp type especifica l’àmbit al qual afectarà la regla. Els possibles valors són el següents:

  • account: permet determinar qüestions que no són purament d’autenticació, sinó que estan més relacionades amb la verificació dels comptes d’usuaris. Per exemple, comprovar si la contrasenya ha expirat, comprovar si un compte d’usuari té permès accedir a un servei… Les regles d’aquest tipus les trobem en el fitxer common-account.
  • auth: proporciona el mecanisme d’autenticació, és a dir, com determinem que l’usuari és qui diu que és. Normalment, aquesta comprovació es fa amb un login i una paraula de pas, però no totes les autenticacions han de ser d’aquest tipus. Per exemple, es poden fer autenticacions basades en maquinari, com targetes intel·ligents o dispositius biomètrics. Només caldria afegir els mòduls adequats per a cada dispositiu. També s’encarrega de l’assignació de grups. Les regles d’aquest tipus les trobem en el fitxer common-auth.
  • password: proveeix els mecanismes necessaris per actualitzar la contrasenya de l’usuari. Per exemple, especifica el tipus de xifratge que s’aplicarà a la paraula de pas, sha512, md5… Les regles d’aquest tipus les trobem en el fitxer common-password i depenen en gran manera de les que s’especifiquen en el fitxer common-auth.
  • session: ofereix la possibilitat de fer tasques abans i després que l’usuari s’autentiqui. Per exemple, muntar un directori, activar logins… Les regles d’aquest tipus les trobem en el fitxer common-session.

2. Camp control. Determina què cal fer un cop l’execució sigui correcta o incorrecta. Hi ha dues sintaxis per a aquest camp: una de senzilla, d’un camp, i una altra que especifica més d’un camp dins de claudàtors [ ]. Per a la sintaxi bàsica, els possibles valors que pot tenir aquest camp són els següents:

  • requisite: si el mòdul falla, es denega l’accés a l’usuari immediatament.
  • required: si el mòdul falla, es denega l’autenticació, però es continua l’execució de la resta de mòduls abans de tornar el control a l’aplicació.
  • sufficient: el resultat del mòdul s’ignora si falla. Si és un èxit, només serà un èxit de tota la pila, és a dir, si cap mòdul required ha fallat.
  • optional: s’ignora el resultat del mòdul. Només és necessari perquè l’autenticació sigui un èxit.

3. Camp module-path. Especifica el nom del mòdul que és en el directori /lib/security o el camí absolut, és a dir, el nom del directori més el del mòdul, com, per exemple, /lib/security/pam_unix.so.

4. Camp module-arguments. Permet determinar els arguments que es passaran al mòdul. Els arguments varien segons el mòdul. Així doncs, veieu com a mostra la sintaxi del fitxer common-auth. Per exemple:

   $cat /etc/pam.d/common-auth
   # here are the per-package modules (the "Primary" block)
   auth  [success=1 default=ignore]	pam_unix.so nullok_secure
   # here's the fallback if no module succeeds
   auth	requisite			pam_deny.so
   # prime the stack with a positive return value if there isn't one already;
   # this avoids us returning an error just because nothing sets a success code
   # since the modules above will each just jump around
   auth	required			pam_permit.so
   # and here are more per-package modules (the "Additional" block)
   auth	optional			pam_smbpass.so migrate
   # end of pam-auth-update config

Autenticació LDAP

Una vegada conegut el concepte i el funcionament dels serveis de directori i els mètodes d’autenticació en els sistemes GNU/Linux, veureu com podeu implementar un mecanisme d’autenticació per mitjà de xarxa en aquests sistemes (domini), en què un conjunt d’equips interconnectats s’autentiquen per mitjà d’un servidor LDAP. Aquesta autenticació permetrà iniciar una sessió de treball en cada màquina i que les aplicacions i els serveis de cada equip es puguin validar de manera transparent mitjançant usuaris i grups que hi hagi en un servidor LDAP.

El procés de configuració per autenticar una estació de treball GNU/Linux en un servidor OpenLDAP el podeu dividir en quatre fases:

  1. Crear o importar els usuaris que es vulgui amb el format adequat al servidor OpenLDAP per poder fer l’autenticació satisfactòriament. Això ho podeu fer amb els fitxers LDIF o des d’una interfície gràfica com el PhpLdapAdmin.
  2. Substituir les bases de dades d’usuaris locals dels fitxers /etc/passwd, /etc/groups, /etc/shadow per una base de dades centralitzada amb l’OpenLDAP. Per aconseguir-ho, heu de configurar l’NSS (name service switch) per mitjà del fitxer de configuració /etc/nsswitch.conf.
  3. Configurar les aplicacions per autenticar-se amb l’OpenLDAP. S’aconsegueix mitjançant el PAM.

Configuració de l'NSS ('name service switch')

El pas següent en el procés de configuració de l’autenticació del sistema és la configuració de l’NSS. Vegeu en què consisteix exactament.

L’NSS proporciona una interfície per configurar diferents bases de dades en què s’emmagatzemen els comptes d’usuaris i claus, com /etc/passwd, /etc/group, /etc/shadow, /etc/host o LDAP, i accedir-hi. Per tant, us permet reemplaçar els fitxers bàsics de configuració d’usuaris GNU/Linux per altres bases de dades que ja hi ha. La idea és que el sistema es pugui configurar sense haver de tocar el codi font.

La configuració de l’NSS es fa per mitjà de l’arxiu /etc/nsswitch.conf. Aquest arxiu està format per una sèrie de línies amb crides a bases de dades. En cada línia s’indica quina és l’ordre per resoldre una consulta per a una base de dades específica, en la qual s’emmagatzemen els noms d’usuari, grups, equips…

Les bases de dades amb les quals treballa l’NSS són les següents:

  • passwd: paraules de pas dels usuaris.
  • group: grups d’usuaris.
  • shadow: paraules de pas al fitxer shadow dels usuaris.
  • ethers: números Ethernet, interfícies de xarxa.
  • hosts: noms de màquina i números.
  • netgroup: usuaris i màquines de xarxa.
  • networks: noms i números de xarxes.
  • protocols: noms i números de protocols.
  • rpc: noms i números de crides remotes a procediments.
  • services: serveis de xarxes.
  • aliases: àlies de correu electrònic, utilitzats per Sendmail.

Les bases de dades que us interessen per a l’autenticació són les de passwd, group i shadow. En el fitxer /etc/nsswitch.conf trobareu les línies següents:

     passwd:    files
     group:     files
     shadow:    files

En cada línia del fitxer /etc/nsswitch.conf, les paraules que hi ha al costat de cada base de dades indiquen diferents serveis de bases de dades en què el sistema buscarà les dades dels usuaris, els grups i les contrasenyes per autenticar l’entrada en el sistema. D’aquesta manera, podeu indicar, introduint serveis de bases de dades l’un darrere l’altre, l’ordre de les bases de dades que ha de llegir el sistema GNU/Linux per fer l’autenticació.

Els serveis suportats per defecte són els següents:

  • files: fa referència a fitxers emmagatzemats en el directori /etc del sistema.
  • compat: inclou només els fitxers passwd, groups i shadow emmagatzemats en el directori /etc del sistema, els quals són compatibles amb l’estil de signes + i – del NIS.
  • db: fa referència a bases de dades en format Berkeley.
  • dns: s’utilitza per indicar que els hostes utilitzen el DNS.
  • hesiod: utilitza hesiod name service. Aquest servei emmagatzema la informació d’alguns fitxers com /etc/passwd o /etc/groups en servidors DNS.
  • nis: utilitza el mapa NIS.
  • nisplus: fa servir la taula NIS plus.

NIS

El NIS és un protocol de servei directori. Segueix una arquitectura client-servidor i el seu objectiu és distribuir i compartir informació en una xarxa d’ordinadors. S’utilitza per mantenir informació centralitzada d’usuaris, però també es pot fer servir per a noms de màquina (DNS), correus electrònics aliats i altres bases de dades basades en text. L’avantatge principal és que és fàcil i ràpid de configurar. D’altra banda, el problema principal del NIS és que no és un protocol “gaire” segur i és millor fer servir altres sistemes més segurs com el Kerberos o l’LDAP. Val a dir, també, que és una solució de gestió d’usuaris de domini que cada cop s’utilitza menys (a favor d’altres tecnologies com l’Active Directory o l’LDAP) i que és una solució poc flexible i poc escalable.

Configuració LDAP al client

Amb tota la informació que heu vist fins ara, ja podeu començar a configurar el vostre client per tal que sigui capaç d’autenticar-se amb un servidor LDAP on hi teniu un domini creat. En aquest manual veureu la configuració fent servir la distribució Ubuntu Desktop 20.04.

Podeu seguir la configuració amb aquest vídeo:

Com habitualment, abans de començar qualsevol instal·lació, actualitzeu els repositoris de la vostra màquina:

sudo apt update

Instal·lació i configuració del client

La configuració comença fent login amb una sessió com a root en la màquina virtual que voleu configurar com a client LDAP.

En Ubuntu, necessitareu ajustar el comportament dels serveis NSS i PAM per cada client. Per fer-ho cal instal·lar els següents paquets:

  • libpam-ldap: que facilitarà l’autenticació amb LDAP als usuaris que utilitzin PAM.
  • libnss-ldap: permetrà que NSS obtingui d’LDAP informació administrativa dels usuaris (Informació dels comptes, dels grups, informació de la màquina, els àlies…
  • nss-updatedb: base de dades local amb la informació de l’usuari i grup al directori LDAP.
  • libnss-db: inclou extensions per utilitzar bases de dades de xarxa.
  • nscd: és un dimoni que ofereix una memòria cau per a moltes de les peticions més freqüents del servei de noms.
  • ldap-utils: facilita la interacció de LDAP des de qualsevol màquina de la xarxa.

La comanda per instal·lar tots els paquets a la vegada és:

sudo apt install libpam-ldap libnss-ldap nss-updatedb libnss-db nscd ldap-utils

Quan executeu l’ordre d’instal·lació, us aniran apareixent una sèrie de menús (debconf) en què cal configurar les dades corresponents al vostre servidor OpenLDAP.

El primer menú que us apareix, com el de la figura, demana el nom o l’adreça IP del servidor OpenLDAP sobre el qual voleu autenticar-vos. En el vostre cas seria la IP de l’Ubuntu Server on hi teniu creat el domini. És important modificar la capçalera i deixar-ho amb

ldap://

.

Figura Entrada de la IP del servidor LDAP

A continuació, com es veu en la figura, haureu d’especificar el DN (nom distingit) de la base (arrel) del servidor OpenLDAP a partir de la qual cercareu les dades per a la validació. En el vostre cas és el nom del domini LDAP que teniu creat al vostre servidor.

Figura Entrada del DN

Continueu i us preguntarà quina versió de l’LDAP voleu fer servir. Seleccioneu la versió 3 (la versió 2 ja no és recomanada). Veieu-ho a la figura

Figura Versió LDAP

El procés de configuració mitjançant els diferents menús també configura el PAM. Així, en el menú següent us preguntarà si voleu que les aplicacions que canvien les claus per mitjà del PAM es comportin com si ho fessin de manera local. Contesteu que sí, tal com mostra la figura:

Figura Entrada del comportament de les contrasenyes

A continuació, us preguntarà si voleu autenticar-vos per accedir al directori de l’OpenLDAP. Contesteu que no, tal com mostra la figura:

Figura Entrada de l’autenticació LDAP

En l’opció següent del menú, com veieu en la figura, haureu d’introduir el compte d’administrador del servidor OpenLDAP. Per fer-ho, heu de repetir tot el DN de la base i afegir-hi el cn (common name) del superusuari o l’administrador. Aquest compte es farà servir quan es canviï la contrasenya d’administrador. Assegureu-vos que és el mateix que es va configurar al servidor (habitualment es fa servir admin).

Figura Entrada del compte d’administrador LDAP

La finestra següent, mostrada en la figura, sol·licita que introduïu la contrasenya amb la qual l’administrador accedeix al servidor OpenLDAP.

Figura Entrada del password de l’administrador

Si us heu equivocat durant el procés o voleu tornar a configurar-ho, podeu llençar la següent ordre:

dpkg-reconfigure ldap-auth-config

Una vegada instal·lats i configurats els paquets libnss-ldap i libpam-ldap, us caldrà modificar el fitxer /etc/nsswitch.conf per tal de finalitzar el primer pas. El fitxer original es mostra a la figura, i el fitxer modificat es mostra a la figura

Figura Fitxer original nsswitch.conf

Hi feu la següent modificació:

     passwd:  files ldap
     group:   files ldap
     shadow:	files ldap
  
     hosts:   files dns
Figura Fitxer modificat nsswitch.conf

D’aquesta manera, li esteu indicant l’ordre que el sistema GNU/Linux ha de fer servir per fer l’autenticació. Aquest ordre determina que primer ha de consultar els fitxers locals i, si no hi troba la informació que busca, ha de consultar el directori LDAP. Aquesta és la manera més recomanable de fer l’autenticació.

El següent apartat de configuració s’encarregarà de resoldre els dos passos finals perquè el client pugui utilitzar els comptes d’usuari creats en el servidor LDAP.

D’una banda, haureu d’actualitzar la memòria cau local amb la informació d’usuaris i grups corresponents a LDAP. Per aconseguir-ho, fareu servir la següent ordre, que podeu veure a la figura amb la resposta esperada:

sudo nss_updatedb ldap
Figura Actualització NSS

Si heu obtingut el resultat done pels usuaris i grups, la cosa haurà anat bé, en cas contrari, repetiu la configuració assegurant-vos que heu entrat bé totes les dades, i que la configuració IP és correcte. Aquesta configuració l’haureu de revisar al fitxer /etc/ldap.conf, i ha de quedar com es veu la figura, tenint en compte que la IP que es mostra ha de ser la IP del vostre Ubuntu Server, i el nom del domini el que tenim instal·lat.

Figura Revisió configuració LDAP al client

Podeu comprovar com els usuaris i grups ja s’han importat del servidor LDAP amb la comanda getent, la qual us mostrarà els usuaris i grups donats d’alta a la base de dades LDAP. En la figura es comprova com els usuaris donats d’alta al domini LDAP ja són visibles des del client.

getent passwd
getent group
Figura Consulta d’usuaris LDAP

L’últim punt de configuració serà actualitzar la configuració de les polítiques d’autenticació predeterminades de PAM, el que aconseguiu amb la següent comanda:

sudo pam-auth-update

La finestra de configuració que us saltarà us demanarà quins dels mòduls disponibles voleu instal·lar. Per defecte els marcareu tots, en especial el que apareix desmarcat i el qual permet crear el directori personal de cada usuari dins de /home. Per marcar-ho ho fareu amb la tecla d’espai. Veieu-ho a la figura.

Figura Autenticació PAM

Segons com hàgiu configurat l’usuari, és possible que se us demani que canvieu el password dels usuaris LDAP la primera vegada. Per poder canviar passwords des dels clients, editareu el fitxer /etc/pam.d/common-password i editareu l’entrada que comença per password [success=1 eliminant la part final d’aquesta entrada. El resultat final el podeu veure a la figura.

Figura Configuració PAM

El sistema ja està preparat per autenticar-se amb un servidor LDAP. Si reinicieu la màquina, podreu entrar amb els diferents usuaris donats d’alta a la base de dades LDAP del servidor. En aquest punt hi ha tres possibles escenaris segons la vostra distribució GNU/Linux:

  1. A la pantalla de login apareixen tots els usuaris locals i del domini LDAP. En aquest cas, cadascú podrà triar el seu usuari. Aquest és l’exemple menys habitual, ja que si hi ha molts usuaris es fa complicat trobar-ne un.
  2. A la pantalla de login només apareixen els usuaris locals i el botó Altres usuaris o No esteu a la llista? o similar. No apareixen els usuaris LDAP. Aquest és el cas d’Ubuntu, on haureu de clicar sobre aquest botó i escriure el nom d’usuari LDAP. El sistema recordarà els usuaris que hagin fet login i els mostrarà els propers inicis de sessió. Aquest exemple el podeu veure a la figura.
  3. A la pantalla de login només apareixen els usuaris locals, i no hi ha cap botó per escriure el nom dels altres usuaris. Aquest és el cas de LinuxMint. Per activar l’entrada manual dels usuaris LDAP, cal editar el fitxer /etc/lightdm/lightdm.conf.d/70-linuxmint.conf, i afegir la següent línia al final del document: greeter-show-manuallogin=true. Un cop reiniciat el sistema ja tindreu l’opció d’escriure nous noms d’usuari.
Figura Login amb els usuaris LDAP

La primera vegada que entreu amb un usuari LDAP, us crearà la seva carpeta a /home.

També podeu provar els nous usuaris des d’una consola. Per exemple, mitjançant l’ordre su (su=switch user - canviar d’usuari) podreu canviar a un usuari que sigui en el directori LDAP. Si tot funciona bé, automàticament demanarà la contrasenya per validar l’usuari. Ho podeu veure a la figura.

Figura Login amb els usuaris LDAP des del terminal
Anar a la pàgina anterior:
Exercicis d'autoavaluació
Anar a la pàgina següent:
Activitats