Implementació de dominis LDAP
Inicialment, quan muntem una xarxa informàtica amb pocs nodes, podem establir un esquema, en què cadascun dels nodes té les mateixes funcionalitats, sense cap tipus de jerarquia. Això s’anomena xarxa d’igual a igual, i conforma el que podem designar com a grup de treball.
En aquest esquema de funcionament de la xarxa, la informació no està centralitzada, i cadascun dels nodes té uns usuaris amb les preferències corresponents. D’aquesta manera, hi ha la possibilitat que un usuari determinat pugui accedir a un dels nodes de la xarxa, però que no ho pugui fer des d’altres.
A més a més, pot ser que aquesta xarxa es vagi ampliant amb nous usuaris i nous equipaments, els quals s’hauran de connectar a un ordinador determinat, amb uns usuaris concrets, cosa que en complica molt la gestió.
És evident que, davant d’això, cal una gestió centralitzada dels usuaris i dels recursos dels ordinadors que formen part de la xarxa d’àrea local. Ha de realitzar aquesta tasca un ordinador en concret que farà la funció de servidor de domini.
Un domini és un conjunt d’ordinadors que estan connectats en xarxa entre ells, i que formen part d’una estructura jerarquitzada que permet gestionar d’una manera centralitzada en un servidor l’accés a un conjunt de recursos per part dels usuaris i equips que en formen part.
Mitjançant aquesta filosofia, s’augmenta d’una manera significativa la fiabilitat i disponibilitat dels recursos del domini, i l’accés als recursos d’un determinat usuari del domini és independent de l’ordinador des del qual vol accedir a aquests recursos.
Dominis LDAP
LDAP és una especificació oberta que permet una implementació d’un domini mitjançant sistemes operatius lliures, i també propietaris. Podem obtenir implementacions lliures de LDAP; per exemple, OpenLDAP, que pot funcionar en sistemes operatius lliures com ara GNU/Linux.
Sistemes operatius diferents de LDAP tenen una implementació diferent dels dominis, com, per exemple, l’Active Directory de Windows Server.
OpenLDAP
El programari OpenLDAP és una implementació basada en codi obert, del Protocol d’Accés Lleuger a Directori.
Estructura client-servidor
Per poder crear un domini, cal implementar una estructura en forma de client-servidor. Això vol dir que hi ha d’haver un o més nodes de la xarxa (generalment, ordinadors amb un sistema operatiu orientat a la xarxa), que funcionin d’una manera ininterrompuda i que, mitjançant una base de dades, permeten els recursos de la xarxa. Aquests ordinadors s’anomenen servidors.
Els servidors gestionen i permeten l’accés a aquests recursos dels clients que s’hi connecten. Per tal de permetre l’accés a algun recurs de la xarxa, el client ha d’estar donat d’alta en una base de dades desada en el servidor de domini.
Quan els clients volen accedir a un determinat recurs del domini, s’han d’identificar mitjançant un compte d’usuari i una contrasenya, o des d’un compte d’equip específic, que estarà emmagatzemat en el servidor, i que, per tant, no dependrà del client concret des del qual es vulgui identificar l’usuari.
L’accés als recursos del domini és independent de l’ordinador físic des del qual es duu a terme la connexió: només depèn de l’usuari del domini amb el qual es vol fer aquest accés.
El protocol LDAP
LDAP és un acrònim anglès de lightweight directory access protocol; és a dir, ‘protocol d’accés a directori lleuger’. És un protocol del tipus client-servidor que permet llegir i editar directoris a través d’una xarxa que funciona sobre el protocol TCP/IP. Un directori és un conjunt de registres. Per exemple: una llista telefònica ordenada alfabèticament en què cada persona i organització té un telèfon i una adreça associats.
En el cas dels dominis, LDAP serveix per accedir a un servei de directori (com ara un servidor de domini amb usuaris, equips i recursos); la darrera versió és la 3.
Protocol X.500
És el protocol d’accés a directori (DAP), que segueix la norma ISO/IEC 9594. És el precursor de LDAP i permet una manera de desenvolupar un directori de persones en una organització, perquè pugui formar part d’un directori global disponible per qualsevol persona d’arreu del món per mitjà d’Internet.
Inicialment, el 1993, va ser desenvolupat per la Universitat de Michigan per tal de reemplaçar el protocol DAP (que es feia servir per accedir als serveis de directori X.500 d’OSI), integrant-lo d’una manera adequada a les xarxes TCP/IP. Des del 1995, DAP es va convertir en un LDAP autosuficient, de manera que es pot utilitzar per altres coses a banda d’accedir als directoris del tipus X.500.
De fet, LDAP defineix el mètode d’accés a les dades en el servidor a nivell del client, i no la manera com s’emmagatzema aquesta informació. LDAP dóna a l’usuari un conjunt de mètodes que permeten:
- Connectar-se.
- Desconnectar-se.
- Cercar informació.
- Comparar informació.
- Inserir entrades.
- Canviar entrades.
- Esborrar entrades.
A més a més, en la seva versió actual (la 3), LDAP ofereix encriptació via protocol SSL, i mecanismes d’autenticació per tal d’accedir a la informació emmagatzemada a la base de dades d’una manera segura.
LDAP presenta la informació en forma d’una estructura d’arbre jeràrquica, anomenada DIT (directory information tree, ‘arbre d’informació de directori’). En aquest arbre, la informació anomenada entrades o DSE (directory service entry, ‘entrada de servei de directori’), és representada en forma de branques. La branca localitzada a l’arrel és l’entrada arrel. Cada entrada en el directori LDAP està relacionada amb un objecte real o abstracte; per exemple, una persona, un ordinador, paràmetres, etc.
Cada entrada està formada per una col·lecció de parells de valors (o claus), anomenada atributs. D’aquesta manera es permet distingir cada objecte que consta en l’arbre. Hi ha dos tipus d’atributs:
- Atributs normals: són els habituals, com ara el nom, el cognom…), que serveixen per distingir l’objecte.
- Atributs operacionals: atributs als quals només pot accedir el servidor per tal de manipular les dades del directori (per exemple, modificar dades).
Cadascuna de les entrades està indexada per un DN (distinguished name, ‘nom distingit’), de manera que es pot identificar aquest element d’una manera unívoca. Per crear un DN, prenem el nom de l’element anomenat RDN (relative distinguished name, ‘nom distingit relatiu’), i hi afegim el nom sencer de l’entrada pare. La identificació unívoca d’una entrada depèn de la utilització correcta de parells de valors o claus. El conjunt de claus que es fa servir normalment són les següents:
- uid (userid): és un identificador únic per a cada usuari.
- cn (common name): és el nom d’usuari.
- givenname: és el nom de la persona.
- sn (surname): és el cognom de la persona.
- o (organitzation: és l’organització o companyia a la qual pertany aquesta persona.
- u (organizational unit): és el departament de l’organització o companyia on treballa aquesta persona.
- mail: és l’adreça de correu electrònic personal.
A més a més d’aquestes claus, n’hi pot haver d’altres sempre que siguin necessàries. Amb tot això, un exemple de DN (‘nom distingit’), prendria la forma:
uid=jeapil,cn=pillou,givenname=jean-francois
El RDN (‘nom distingit relatiu’) seria:
uid=jeapil
En general, els usuaris en un domini LDAP tindran un nom distingit que consistirà en el seu uid, més el nom del domini més l’extensió d’aquest.
La col·lecció d’objectes i definicions d’atributs que un servidor LDAP pot gestionar s’anomena esquema. Això fa possible definir si un atribut pot tenir un valor o més, o fer que aquest sigui obligatori o opcional.
LDAP ens dóna tot un conjunt de funcions (o procediments) per tal de dur a terme consultes en les dades desades en el servidor, com per exemple cercar, modificar i eliminar entrades en el directori.
En la taula, es mostren les operacions principals que es poden dur a terme amb LDAP:
| Operació | Descripció |
|---|---|
| Abandon | Abandonar l’operació prèvia enviada al servidor. |
| Add | Afegir una entrada al directori. |
| Bind | Iniciar una nova sessió en el servidor LDAP. |
| Compare | Comparar les entrades en un directori en funció dels criteris. |
| Delete | Esborrar una entrada d’un directori. |
| Extended | Dur a terme operacions esteses. |
| Rename | Canviar el nom d’una entrada. |
| Search | Cercar entrades en un directori. |
| Start TLS | Fer servir l’extensió de seguretat TLS (transport layer security, ‘seguretat de capa de transport’) de la versió 3 per obtenir una connexió segura. |
| Unbind | Aturar la sessió en el servidor LDAP. |
LDAP també ens dóna un format d’intercanvi de dades (LDIF: lightweight data interchange format), que permet exportar i importar dades des d’un directori o cap a aquest fent servir un fitxer de text simple. La majoria de servidors LDAP suporten aquest format, fet que permet un grau d’interoperabilitat molt gran entre ells.
La sintaxi d’aquest format és la següent:
[<id>] dn: <nom distingit> <attribut>: <valor> <attribut>: <valor> ...
Exemple de LDAP
dn: cn=John Doe,dc=example,dc=com cn: John Doe givenName: John sn: Doe telephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: john@example.com manager: cn=Barbara Doe,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top
on
- dn: és el nom distingit de l’entrada (nom complet, com si fos un directori absolut si parléssim de fitxers). No és cap atribut ni forma part de l’entrada.
- cn=John Doe: és l’entrada RDN (‘nom relatiu distingit’).
- dc=example, dc=com: són els noms distingits de l’entrada pare, on dc significa ‘component de domini’ (domain component).
- La resta de línies són atributs en aquesta entrada, que habitualment fan servir cadenes mnemotècniques per tal de recordar més fàcilment el significat: “cn” per ‘nom comú’, “dc” per ‘component de domini’, “mail” per ‘correu electrònic’ i “sn” per ‘cognom’.
En aquest fitxer l’identificador (id) és opcional; és un nombre enter positiu que permet identificar cada entrada a la base de dades.
En relació amb aquest tipus de fitxers LDIF, cal tenir en compte que:
- Cada nova entrada ha d’estar separada de l’anterior mitjançant una línia buida.
- Es pot definir un atribut que ocupi diverses línies sempre que a partir de la segona línia es comenci amb un espai en blanc o una tabulació.
- Es poden definir diversos valors per un atribut repetint la cadena de caràcters nom: valor en línies separades.
- Quan el valor conté un caràcter especial (no imprimible, espai en blanc o dos punts), l’atribut ha d’anar seguit per :: si el valor és codificat en base 64.
Un servidor emmagatzema un subarbre que comença a partir d’una entrada específica (per exemple, “dc=example, dc=com”), i tots els seus fills. els servidors també poden tenir referències a altres servidors, de manera que un intent d’accés a “ou=department, dc=example, dc=com” pot resultar en un redireccionament a un altre servidor que conté aquesta part de l’arbre de directori. Si és així, el client pot contactar amb l’altre servidor.
Alguns servidors suporten encadenament; és a dir, un servidor pot contactar amb un altre i retornar el resultat al client.
Normalment, LDAP no defineix cap ordre en concret. Així, un servidor pot tornar valors d’un atribut, els atributs d’una entrada i les entrades trobades a partir d’una operació de cerca en qualsevol ordre.
Dominis, subdominis
Per entendre el funcionament de l’autenticació d’usuaris en xarxes GNU/Linux cal conèixer el significat del concepte domini/subdomini i la traducció d’aquest concepte en sistemes GNU/Linux.
També és imprescindible saber com funciona el sistema de gestió d’usuaris i grups en els sistemes GNU/Linux i el procés de configuració de l’autenticació d’usuaris en una xarxa formada per xarxes GNU/Linux.
El terme domini pot fer referència a dos conceptes:
- Domini d’Internet.
- Domini local, d’administració de sistemes.
Un domini d’Internet és una estructura jeràrquica de noms separats per punts que, per mitjà dels servidors de noms de domini, permet determinar la ubicació (adreça IP) d’un equip connectat a Internet.
Cada nom de l’estructura determina un servidor DNS que coneix l’adreça IP de l’equip amb el nom anterior en l’estructura (excepte el primer nom que determina el node en qüestió). L’objectiu, juntament amb el servei de noms de domini, és traduir les adreces IP dels nodes actius de la xarxa en paraules més fàcils de recordar per a les persones.
Des del punt de vista de l’administració de sistemes, un domini local constitueix un conjunt d’equips interconnectats en una xarxa local que comparteixen informació administrativa centralitzada (usuaris, grups, contrasenyes…). Aquesta informació es fa servir per poder autenticar-se i crear un entorn inicial de treball per als usuaris que, segons els permisos que tinguin, podran accedir als recursos que proporciona el sistema.
L’autenticació per mitjà de la xarxa en sistemes GNU/Linux requereix fonamentalment la disponibilitat d’almenys un o diversos ordinadors que emmagatzemin físicament aquesta informació i que la comuniquin a la resta de màquines connectades en xarxa, quan calgui, mitjançant un esquema client-servidor.
Per exemple, quan un usuari vol iniciar una sessió en qualsevol ordinador client del grup d’autenticació (domini), aquest ordinador haurà de validar les dades de l’usuari en el servidor i obtenir del mateix servidor tota la informació necessària per poder crear el context inicial de treball per a l’usuari.
Un subdomini és un nivell de classificació jeràrquica dels noms de domini, definits amb finalitats administratives o organitzatives. Es podria considerar com un domini de segon nivell. Normalment, es tracta d’una sèrie de caràcters o d’una paraula, que s’escriu a l’esquerra del domini i separat per un punt.
A nivell d’Internet es pot dir que el subdomini s’utilitza per referir-se a una adreça web que treballa com un annex (o lloc relacionat) d’un domini principal. Per exemple, un subdomini es pot representar de la manera següent:
http://subdomini.domini-principal.com/ http://www.domini-principal.org/subdomini/
Dintre de l’estructura del servidor es reflecteix com un directori, el qual conté la informació per mostrar.
Els subdominis són definits per les mateixes empreses que realitzen l’allotjament del servei web. Es pot tractar tant de la mateixa empresa interessada com d’una empresa especialitzada a oferir serveis d’hostatge (hosting) per a tercers. En aquest últim cas, hi pot haver unes certes limitacions, tant pel nombre de subdominis permesos com pel tipus de servei que ofereixen. Per exemple, hi ha empreses que regalen un subdomini en el moment de registrar un bloc amb ells, o d’altres ofereixen serveis d’hostatge gratuït.
A nivell local, un subdomini seria una subdivisió d’un domini amb finalitats organitzatives, per tal de facilitar la gestió i administració del domini principal. Podem pensar que un subdomini és equivalent a un departament dins d’una empresa gran.
Disseny del domini
Dissenyar un domini implica fer una planificació anticipada de la forma que tindrà. Habitualment, els dominis es representen en forma d’arbre (si més no, la implementació d’aquests mitjançant el protocol LDAP). Per tant, abans de començar, hem de pensar quina forma tindrà aquest arbre, és a dir, si hi haurà subdominis, quines branques tindrà, quins usuaris i quins grups d’usuaris contindrà.
En qualsevol cas, a l’inici del disseny, l’administrador haurà de pensar en quins departaments ha de dividir el domini, i quins usuaris corresponen a cadascun d’aquests departaments.
Per tal d’entendre i seguir les explicacions d’aquests materials, haurem de fixar un disseny concret, que serà el que haurem de tenir en ment per tal d’implementar-lo, i seguir totes les passes necessàries per implementar-lo. És impossible de seguir amb la implantació d’un domini, si no tenim enllestit aquest domini, o si més si no tenim un esboç dels elements principals de què ha de constar.
En un domini creat emb LDAP, tenim una sèrie d’elements que són prefixats:
- Usuari administrador (cn=admin): és l’usuari amb drets d’administració que pot crear, eliminar i modificar els usuaris i els grups del domini.
- Unitat organitzativa People (ou=People): aquesta unitat organitzativa inclou tots els usuaris individuals del domini, que es distingeixen els uns dels altres mitjançant el seu identificador (uid).
- Unitat organitzativa Groups (ou=Groups): aquesta unitat organitzativa inclou tots els grups d’usuaris. És molt important agrupar els usuaris en funció de característiques semblants, per tal de simplificar-ne la gestió. Així, podem agrupar els usuaris en funció dels drets i dels permisos d’accés a objectes del domini. Cal dir que els grups del domini s’han de crear abans que els usuaris individuals, perquè d’aquesta manera simplifiquem el procés de creació d’usuaris. Un cop s’han creat els grups del domini, quan creem l’usuari, el podem assignar directament a un determinat grup sense haver de fer cap altre pas posterior. Si quan creem els usuaris no s’han creat els grups d’usuaris prèviament, hauríem de crear aquests grups posteriorment, i després hauríem d’editar les propietats dels usuaris un per un, per tal d’assignar-los a un grup concret.
Dins dels elements que no són prefixats, haurem d’escollir:
- Nom del domini: és un nom distingit, format pel nom pròpiament dit, i la seva extensió. Crearem un domini amb el nom meudomini i extensió org, per tant, el nom distingit del domini serà dc=meudomini, dc=org.
- Nom del grup d’usuaris: escollirem com a nom del grup usuaris, i el nom distingit corresponent serà cn=usuaris, ou=Groups, dc=meudomini, dc=org.
- Nom d’usuari : per tal que el domini tingui un mínim de funcionalitat, i puguem realitzar alguna prova, haurem de crear com a mínim un usuari del domini. Aquest usuari tindrà com a nom usuari, i penjarà de la unitat organitzativa People. El seu nom distingit complet serà uid=usuari, dc=meudomini, dc=org.
Seguint aquestes orientacions, podeu veure l’esquema dels objectes mínims del domini en forma d’arbre en la figura.
Anàlisi dels requeriments
A l’hora de dissenyar un domini, com a mínim, hem d’especificar:
- Extensió del domini: que correspon en el model ldap a un component de domini. Aquesta extensió pot tenir el valor .com, .org, etc. i l’indiquem mitjançant dc=com, dc=org, etc.
- Nom del domini: també correspon a un component del domini. Pot tenir el valor que vulguem; en qualsevol cas, ha de començar amb un caràcter, i ha de tenir un cert significat. Per exemple, pot ser: meudomini, dominiexemple, etc. i l’indiquem mitjançant dc=meudomini, dc=dominiexemple, etc.
- La unitat organitzativa People: contindrà tots els usuaris individuals del sistema, i s’indica mitjançant ou=People.
- Els usuaris del sistema, que en la representació gràfica, són fills de la unitat organitzativa People. Cadascun dels usuaris s’ha d’identificar unívocament mitjançant un identificador d’usuari. Per exemple, en el protocol LDAP, un usuari anomenat pepet s’indicaria de la manera següent: uid=pepet.
- La unitat organitzativa Group: conté unitats organitzatives que serveixen per agrupar els usuaris del sistema mitjançant grups. En la implementació LDAP s’anomena ou=Group.
- Els grups d’usuari del sistema: en la representació gràfica, són fills de la unitat organitzativa Group. Cadascun dels grups d’usuaris s’identifica unívocament amb un nom de grup. Per exemple, el grup d’usuaris desenvolupadors s’identificaria mitjançant un nom comú (cn) de la forma cn=desenvolupadors.
A més de tots aquests requeriments de planificació, també tenim una sèrie de requeriments de maquinari i programari:
Requeriments de maquinari
Qualsevol ordinador pot fer de servidor, però és convenient que si emmagatzema informació important tingui maquinari tolerant a errors, com ara fonts d’alimentació redundant o sistemes de discos en RAID
- Sistema operatiu: un sistema operatiu que suporti la implementació de LDAP. Si ens fixem en la implementació OpenLDAP, aleshores ens pot servir qualsevol distribució de GNU/Linux. En el nostre cas utilitzarem Ubuntu Server 10.04 LTS.
- Ordinador servidor: és necessari un ordinador que suporti el sistema operatiu de xarxa. En el cas d’Ubuntu Server 10.04 LTS, si no utilitzem un entorn gràfic, els requeriments mínims del sistema són els que podem veure en la taula.
- Ordinadors clients: han d’estar connectats mitjançant una xarxa al servidor. Per tal de facilitar-ne la configuració, és convenient que el seu sistema operatiu sigui el mateix que el del servidor (Ubuntu 10.04 LTS), si bé es poden utilitzar altres distribucions de GNU/Linux i, fins i tot, és possible fer servir ordinadors que funcionin amb sistemes operatius de la família Windows.
En cas que utilitzem com a sistema operatiu dels clients Ubuntu 10.04 (edició d’escriptori), hi ha els requeriments que es mostren en la taula. Podem observar que els requeriments de l’edició d’escriptori són força més elevats que la versió de servidor, suposant que el servidor només s’hi instal·li l’intèrpret de ordres en mode text. - Altres elements necessaris per crear la xarxa: commutadors (switches), encaminadors (routers), armaris, cablejat, etc.
| Element | Requeriment |
|---|---|
| Processador (x86) amb el joc d’instruccions i686 | 300 MHz |
| Memòria RAM | 128 MB (megabytes) |
| Disc dur (o espai lliure) | 1 GB (gigabyte) |
| Resolució monitor | VGA (640 x 480 píxels) |
| Element | Requeriment |
|---|---|
| Processador (x86) amb el joc d’instruccions i686 | 1 GHz |
| Memòria RAM | 512 MB (megabytes) |
| Disc dur (o espai lliure) | 5 GB (gigabytes) |
| Resolució monitor | VGA (1024×768) |
Implementació
Per tal d’implementar el domini de LDAP, suposarem que ja tenim instal·lat un sistema Ubuntu Server 10.04 LTS i que en coneixem la contrasenya d’administració. Cal recordar que, per fer tots aquests passos, ens cal ser usuari administrador del sistema, cosa que podem aconseguir obrint una consola del sistema, i executar l’ordre:
usuari@ubuntu-server~$sudo bash [sudo] password for usuari : root@ubuntu-server~#
Un cop hem iniciat l’intèrpret d’ordres com a usuari administrador (root), podrem fer tots els passos necessaris per implementar el domini mitjançant LDAP. Suposarem que volem crear un domini anomenat meudomini.org, i que la contrasenya de l’administrador és 123456. Vegem tot seguit els passos que hem de dur a terme:
1. Instal·lem el servidor:
apt-get install slapd ldap-utils
2. Instal·lem uns quants fitxers d’esquema:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
3. Establim la contrasenya de l’LDAP (en l’exemple posem 123456):
slappasswd -h {CRYPT}:
New password: 123456
Re-enter new password: 123456
{CRYPT}aLJLqqUipInfk
Algorismes d'encriptació
Un algorisme d’encriptació s’utilitza per codificar informació a fi que únicament hi puguin accedir les persones que en coneixen la clau per descodificar-la. Per encriptar les contrasenyes es fan servir diferents algorismes, com ara DES, MD5, SHA, . . .
4. Creem el fitxer config.ldif amb el contingut següent:
dn: cn=config
changetype: modify
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {CRYPT}aLJLqqUipInfk
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess
En la línia que conté olcRootPW hem d’escriure el que retorna la instrucció slappasswd -h {CRYPT}
5. Carreguem aquest fitxer de configuració en el servidor LDAP:
ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
6. Creem el fitxer backend.meudomini.org.ldif amb el contingut següent:
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=meudomini,dc=org
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=meudomini,dc=org
olcRootPW: {CRYPT}aLJLqqUipInfk
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=meudomini,dc=org" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=meudomini,dc=org" write by * read
Hem de tornar a escriure la contrasenya encriptada mitjançant el mètode {CRYPT} en la línia que conté olcRootPW, i hem d’escriure el nom distingit de l’usuari administrador a la línia que conté olcAccess.
389 Directory Server
Les distribucions de GNU/Linux com ara Red Hat, CentOS, i Fedora disposen d’una interfície gràfica per dur a terme les tasques d’instal·lació i administració d’un domini, que s’anomena Red Hat Directory Server (en el cas de Red Hat), i 389 Directory Server en el cas de CentOS i Fedora.
7. Carreguem el fitxer ldif al directori:
ldapadd -Y EXTERNAL -H ldapi:/// -f backend.meudomini.org.ldif
8. Omplim el directori del front-end. Creem el fitxer frontend.meudomini.org.ldif amb el contingut següent:
# Create top-level object in domain
dn: dc=meudomini,dc=org
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: meudomini
description: Domini exemple LDAP meudomini
# Admin user.
dn: cn=admin,dc=meudomini,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: administrador LDAP
userPassword: {CRYPT}aLJLqqUipInfk
dn: ou=people,dc=meudomini,dc=org
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=meudomini,dc=org
objectClass: organizationalUnit
ou: groups
dn: uid=usuari,ou=people,dc=meudomini,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: usuari
sn: usuari
givenName: usuari
cn: usuari
displayName: usuari
uidNumber: 1000
gidNumber: 10000
userPassword: usuari
gecos: usuari
loginShell: /bin/bash
homeDirectory: /home/usuari
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: usuari@meudomini.org
postalCode: 31000
l: Manresa
o: Example
mobile: +34 (0)6 xx xx xx xx
homePhone: +34 (0)9 xx xx xx xx
title: System Administrator
postalAddress:
initials: usuari
dn: cn=meudomini,ou=groups,dc=meudomini,dc=org
objectClass: posixGroup
cn: example
gidNumber: 10000
9. Afegim les entrades al directori LDAP:
ldapadd -x -D cn=admin,dc=meudomini,dc=org -W -f frontend.meudomini.org.ldif
10. Comprovem que el contingut s’ha afegit satisfactòriament fent una cerca:
ldapsearch -xLLL -b "dc=meudomini,dc=org" uid=usuari sn givenName cn dn: uid=usuari,ou=people,dc=meudomini,dc=org sn: usuari givenName: usuari cn: usuari
phpLDAPadmin es pot fer servir des de qualsevol màquina amb qualsevol sistema operatiu que tingui un navegador web, i que estigui connectada en xarxa al servidor.
11. Amb aquest pas ja hem fet la configuració bàsica del domini i n’hem creat els elements mínims. Si ho volem, per facilitar la tasca d’administració podem instal·lar phpladapadmin, mitjançant l’ordre:
apt-get install phpldapadmin
12. Editem el fitxer de configuració, per exemple, amb l’editor nano:
nano /etc/phpldapadmin/config.php
13. Cerquem les línies següents:
$servers->setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
14. Les substituïm per aquestes:
$servers->setValue('server','base',array('dc=meudomini,dc=org'));
$servers->setValue('login','bind_id','cn=admin,dc=meudomini,dc=org');
15. Reiniciem el servidor web apache:
/etc/init.d/apache2 restart
16. Accedim a phpldapadmin iniciant un navegador i escrivint la URL següent a la barra de navegació:
Autenticació amb LDAP
Un cop tenim el servidor LDAP funcionant, podem configurar el client, per tal que els usuaris que hem creat amb LDAP puguin iniciar la sessió en el servidor. El client pot ser el mateix servidor o un altre ordinador connectat a ell mitjançant la xarxa. Per fer això cal seguim els passos següents:
1. Instal·lem els paquets auth-client-config i libnss-ldap que faciliten l’autenticació d’un client Ubuntu en un servidor LDAP. Per fer-ho, hem d’escriure en una consola:
apt-get install libnss-ldap auth-client-config
2. Ens demanarà l’adreça del servidor LDAP. Contestem:
ldapi:///127.0.0.1
Connexió d'altres clients per xarxa
En cas que ens connectem al servidor LDAP mitjançant un client connectat en xarxa, hem de modificar 127.0.0.1, o localhost, per l’adreça IP del servidor; la resta de la configuració és la mateixa que si ho fem localment.
3. Tot seguit escrivim el nom distingit del domini i l’extensió corresponent:
dc=meudomini,dc=org
4. Ens demana quina versió de l’LDAP farem servir; escollim la versió 3.
5. Ens demana si el root local ha de ser administrador de l’LDAP; contestem que sí.
6. Pregunta si necessitem autenticar per accedir a les entrades de la base de dades; contestem l’opció per defecte (no).
7. Ens demana el compte que s’ha de fer servir quan el root canviï una contrasenya. Contestem:
dc=admin,dc=meudomini,dc=org
8. Escrivim la contrasenya de root, i s’acaba la configuració del paquet.
9. Un cop hem configurat libnss-ldap, habilitem el perfil LDAP del paquet auth-client-config LDAP escrivint:
auth-client-config -t nss -p lac_ldap
Podem veure el significat dels paràmetres d’aquesta instrucció en la taula.
| Paràmetre | Significat |
|---|---|
| -t | Només modifica el fitxer /etc/nsswitch.conf. |
| -p | Nom del perfil que s’ha d’habilitar o deshabilitar. |
| lac_ldap | El perfil de auth-client-config que és part del paquet ldap-auth-config |
10. Fent servir la utilitat pam-auth-update configurem el sistema perquè faci servir autenticació via LDAP:
pam-auth-update
11. En el menú de configuració de la utilitat, habilitem com a mínim l’autenticació LDAP.
12. Ens assegurem que tenim habilitat el connector (plug-in) pam_mkhomedir, perquè, quan un usuari s’autentiqui via LDAP, es creï automàticament el seu directori personal (si no, no podrà iniciar la sessió). Per fer-ho, comprovem que el fitxer pam_mkhomedir.so està en el directori /lib/security.
13. Cerquem dins dels fitxers /etc/pam.d/gdm i /etc/pam.d/login les línies que comencen per:
session . . .
I hi afegim la línia:
session required /lib/security/pam_mkhomedir.so skel=/etc/skel umask=0022
Assegurament de l'autenticació mitjançant TLS i SSL
Quan un usuari s’autentiqui en un servidor OpenLDAP, és aconsellable fer-ho amb una sessió encriptada. Això es pot aconseguir utilitzant el protocol TLS (‘capa de transport segura’) i el protocol SSL (‘capa de sòcols segura’). Per a això, hem de seguir una sèrie de passos que detallem tot seguit:
TLS i SSL
secure sockets layer, ‘protocol de capa de connexió segura (SSL) i transport layer security, ‘seguretat de la capa de transport’ (TLS), que n’és el successor, són protocols criptogràfics que proporcionen comunicacions segures en una xarxa, que habitualment és Internet.
1. Primer de tot, hem d’obtenir o crear un certificat. Com que el domini de LDAP (slapd) està compilat utilitzant la llibreria gnutls, és aconsellable fer servir la utilitat certtool per crear aquest certificat. Instal·lem gnutls-bin mitjançant l’ordre següent:
apt-get install gnutls-bin
2. Tot seguit, creem la clau privada per un certificat d’autoritat (CA):
sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"
3. Creem el fitxer /etc/ssl/ca.info que, automàticament, signarà el certificat d’autoritat (CA), amb el contingut següent:
cn = Example Company ca cert_signing_key
4. Creem el certificat d’autoritat autosignat:
certtool --generate-self-signed --load-privkey \ /etc/ssl/private/cakey.pem --template \ /etc/ssl/ca.info --outfile /etc/ssl/certs/cacert.pem
5. Creem una clau privada per al servidor:
sh -c "certtool --generate-privkey > /etc/ssl/private/ldap01_slapd_key.pem"
Per facilitar les coses, cal reemplaçar ldap01 en el nom del fitxer amb el nom de l’amfitrió del servidor.
6. Per tal de signar el certificat del servidor amb el certificat d’autoritat (CA), creem el fitxer /etc/ssl/ldap01.info amb el contingut següent:
organization = Example Company cn = ldap01.meudomini.org tls_www_server encryption_key signing_key
7. Creem el certificat del servidor:
certtool --generate-certificate --load-privkey \ /etc/ssl/private/ldap01_slapd_key.pem \ --load-ca-certificate /etc/ssl/certs/cacert.pem \ --load-ca-privkey /etc/ssl/private/cakey.pem \ --template /etc/ssl/ldap01.info \ --outfile /etc/ssl/certs/ldap01_slapd_cert.pem
8. Un cop tenim un certificat, una clau i un certificat d’autoritat instal·lats, fem servir l’eina ldapmodify per afegir les noves opcions de configuració:
ldapmodify -Y EXTERNAL -H ldapi:/// Enter LDAP Password: dn: cn=config add: olcTLSCACertificateFile olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem - add: olcTLSCertificateFile olcTLSCertificateFile: /etc/ssl/certs/ldap01_slapd_cert.pem - add: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/ssl/private/ldap01_slapd_key.pem modifying entry "cn=config"
Cal modificar el nom dels fitxers ldap01_slap_cert.pem, ldap01_slapd_key.pem i cacert.pem, si els que hem utilitzat són diferents.
9. Tot seguit, editem el fitxer /etc/default/slapd i descomentem (traiem el símbol # del principi de la línia) de l’opció SLAPD_SERVICES:
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
10. Ara, els usuaris d’openldap necessiten accedir al servidor per mitjà del certificat:
adduser openldap ssl-cert chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem sudo chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
Si els fitxers /etc/ssl/private i /etc/ssl/private/server.key tenen permisos diferents, ajustem les instruccions de la manera adient.
11. Per acabar, reiniciem el domini slapd:
/etc/init.d/slapd restart
Fet això, el domini de slapd hauria d’escoltar les connexions LDAPS i ser capaç d’utilitzar STARTTLS durant l’autenticació.
Documentació
Per comprendre i poder mantenir fàcilment el funcionament d’un domini, cal tenir una bona documentació que reflecteixi tots els elements que en formen part.
De fet, els documents que parlen de l’arquitectura d’un domini són uns dels més estesos, però, al mateix temps, sovint no són massa ben entesos ni queda clar què han de contenir.
De vegades, aquests documents no estan ordenats, i es troben en estats d’elaboració diferents: alguns són esborranys, d’altres són complets però no estan actualitzats, d’altres contenen informació no rellevant.
Eines informàtiques
Per realitzar l’esquema del domini podem utilitzar qualsevol programa de creació de dibuixos, com ara l’OpenOffice Draw. Per crear esquemes visuals de la xarxa podem fer servir eines en línia gratuïtes, com, per exemple, Pàgina web Gliffy
En qualsevol cas, a l’hora d’elaborar aquesta documentació ens hem de fixar a qui s’adreça i també ens hem d’assegurar que es pot mantenir actualitzada. Hem de tenir en compte a qui va destinat cada document, i estructurar la documentació de manera adequada. Vegem diferents aspectes que hem de considerar a l’hora d’elaborar-la:
- Les audiències principals a les quals s’adreça la documentació del domini és el seu administrador, i el grup de suport corresponent. En aquest tipus de document es pot utilitzar terminologia tècnica.
- El contingut primari de la documentació són els principis de disseny, les categories, els grups, els usuaris, etc.
- El contingut ha de ser descriptiu, però al mateix temps no s’ha de convertir en una guia d’aprenentatge llarga; no es tracta de documents educacionals.
- Per dur-ne a terme l’elaboració, serà necessària la col·laboració entre diferents departaments de l’organització.
- Els diversos documents que realitzem poden tenir nivells d’especificacions i detall diferents; per tant, no cal que siguin tots iguals.
OCS
http://www.ocsinventory-ng.org/ Open computer and software inventory next generation (‘inventari de maquinari i programari obert de nova generació’) és una aplicació dissenyada per facilitar a un administrador d’una xarxa el manteniment de l’inventari dels ordinadors i el programari instal·lats en aquesta xarxa.
En qualsevol cas, una bona documentació referent a un domini ha de recollir els aspectes següents:
- Un inventari de tot el maquinari instal·lat en el domini. Això inclou les configuracions de maquinari dels diversos clients, com del servidor (microprocessador, memòria RAM, disc dur…). També ha d’incloure tot el maquinari de xarxa com ara encaminadors, commutadors i altres elements (impressores, NAS, projectors, escàners…).
- Un inventari amb tots els sistemes operatius instal·lats i els ordinadors als quals corresponen. La configuració de xarxa corresponent, incloent-hi la IP i el nom de cada amfitrió.
- Un esquema visual de la xarxa, que permet analitzar i planificar millores sobre aquesta xarxa.
- Un inventari del programari instal·lat en el domini, tant en el servidor de domini com en les màquines client. Això hauria d’incloure una llista detallada de tots els sistemes operatius i les aplicacions instal·lades en cada node de la xarxa, i la versió corresponent. D’aquesta manera, l’administrador del domini pot veure si el programari dels clients del domini està actualitzat o no.
- Una llista on constin el nom de tots els elements del domini, amb el nom distingit corresponent. Això inclou el nom del domini, l’extensió, l’usuari administrador, les unitats organitzatives, els usuaris i els grups.
- Un esquema visual en forma d’arbre del domini.
- També cal tenir una llista de totes les contrasenyes actualitzades, documentació que només ha de ser accessible per l’usuari administrador del domini.
Val a dir que, per dur a terme aquesta tasca, disposem d’un conjunt d’eines informàtiques que permeten crear esquemes de xarxes, esquemes visuals genèrics (per crear l’esquema del domini) i programari que permet crear inventaris del maquinari instal·lat a la xarxa d’una manera automatitzada.




