Linux: Amministrazione sistema, Documentazione, HowTo, Tutorial, Recensioni, Manuale, Programmi, Software
LinuxGuide.it - Amministrazione Linux, Documentazione, HowTo, Tutorial, Recensioni, FAQ, Guide, News, Open Source...
Amministrazione sistema
 Amministrazione sistema Fondamentis  Fondamentis
 Amministrazione sistema Ambiente di sistema  Ambiente di sistema
 Amministrazione sistema Comandi Linux  Comandi Linux
 Amministrazione sistema Boot loader  Boot loader
 Amministrazione sistema Filesystem  Filesystem
 Amministrazione sistema Backup  Backup
 Amministrazione sistema Gruppi e Utenti  Gruppi e Utenti
 Amministrazione sistema Permessi  Permessi
 Amministrazione sistema Archivi e file compressi  Archivi e file compressi
 Amministrazione sistema Pacchetti (rpm, deb...)  Pacchetti (rpm, deb...)
 Amministrazione sistema Periferiche  Periferiche
 Amministrazione sistema Autenticazione utenti  Autenticazione utenti
 Amministrazione sistema Rete  Rete
 Amministrazione sistema Servizi di Rete (Server)  Servizi di Rete (Server)
 Amministrazione sistema Sviluppo  Sviluppo
 
Tutorial & HowTo
 Tutorial & HowTo Applicazioni  Applicazioni
 Tutorial & HowTo Internet  Internet
 Tutorial & HowTo Rete  Rete
 
FAQ Linux
 FAQ Linux Amministrazione sistema  Amministrazione sistema
 FAQ Linux Reti e rete  Reti e rete
 FAQ Linux Programmi  Programmi
 FAQ Linux X Window System  X Window System
 FAQ Linux Applicazioni  Applicazioni
 FAQ Linux Stampa  Stampa
 FAQ Linux Editoria  Editoria
 FAQ Linux I Caratteri font  I Caratteri font
 FAQ Linux Immagini  Immagini
 FAQ Linux Masterizzazione  Masterizzazione
 FAQ Linux Audio  Audio
 FAQ Linux Programmazione  Programmazione
 FAQ Linux Hardware  Hardware
 
Recensioni
 Recensioni Anno 2008  Anno 2008
 
Software Linux
Software Linux Giochi  Giochi
Software Linux Grafica  Grafica
Software Linux Internet  Internet
Software Linux Multimedia  Multimedia
Software Linux Rete  Rete
Software Linux Server  Server
Software Linux Sicurezza  Sicurezza
Software Linux Sistema  Sistema
Software Linux Sviluppo  Sviluppo
 
News Letter
Per essere sempre aggiornato!
 
 
RSS Feed
News in tempo reale!
 
Seguici su Facebook
Unisciti al nostro Linux Facebook Group
 
Popular tags
 
 
 
 
 
 
 
Home page Amministrazione sistema Servizi di Rete (Server)
Cerca:
 Categoria: Amministrazione sistema > Servizi di Rete (Server)

Linux: LDAP Server con OpenLDAP

 
è stato letto: 2195 volte
voto: 0 / 6
rating:
Vota OK questo articolo Vota KO questo articolo (vota questo articolo)
 
tag: x.500, ldap, openldap, lightweight
 
Condividiamo documentazione, howto, info, news, articoli, manuali linux Condividi questo documento su:
 

OpenLDAP




Introduzione
LDAP (Lightweight Directory Access Protocol) è uno standard aperto ed è un protocollo client-to-server che implementa un servizio di directory, una sorta di elenco telefonico dove per ciascun utente è possibile impostare diverse informazioni: indirizzo di posta elettronica, password cifrata, numeri di telefono, indirizzo, foto, posizione all'interno dell''azienda, etc.
Le informazioni sono organizzate come all'interno di un database con la differenza che le informazioni sono basate su una serie di attributi.
All'interno della 'Directory' ottimizzata per la lettura, le informazioni sono organizzate gerarchicamente ad albero e la gerarchia può essere ispirata per motivi geografici, aziendali o secondo diverse scelte.
LDAP è noto anche come X.500 Lite. X.500, uno standard internazionale per le directory, include numerose caratteristiche interessanti, ma è molto complesso e richiede grandi risorse di elaborazione e uno stack OSI completo. LDAP, al contrario, funziona in modo corretto su ogni PC ed è compatibile con il protocollo TCP/IP.
LDAP può accedere alle directory X.500, ma non supporta tutte le funzioni di X.500.

Configurazione OpenLDAP Server
I pacchetti RPM da installare sono i seguenti:
openldap
openldap-clients
openldap-devel
nss_ldap
openldap-servers


I principali file di riferimento di OpenLDAP sono i seguenti:

/etc/openldap/slapd.conf   (file di configurazione di LDAP)
/etc/openldap/schema        (directory dove sono contenute le strutture dei dati relative alle informazioni da assegnare  ad ogni record)

La directory contenente i databases LDAP è rispettivamente  /var/lib/ldap


Per gestire le voci di un database LDAP si utilizzano i seguenti comandi:

ldapadd         (per popolare il database)
ldapmodify   (per modificare le voci esistenti)
ldapdelete     (per eliminare le voci esistenti)


Esempio di configurazione

Supponiamo di implementare LDAP in un'azienda denominata 'example.com'(organization).
Col seguente comando, andremo a creare una subdir all'interno di /var/lib/ldap che prenderà il nome della nuova organization la quale conterrà i database di 'example.com'

# mkdir /var/lib/ldap/example.com

poi assegneremo utente e gruppo 'ldap' come proprietario della directory example.com

# chown ldap:ldap /var/lib/ldap/example.com

Tale organization è poi suddivisa in gruppi(organization unit o OU) in cui lavorano diversi dipendenti(person), ciascuno con la propria scheda personale; l'amministratore di LDAP è l'utente 'admin' .

L'amministratore di LDAP, è l'unico utente autorizzato a creare, importare ed esportare dati dai databases LDAP. Per questo utente è richiesta una password, possibilmente crittografata.
Possiamo generare una password crittografata semplicemente eseguendo il seguente comando da un terminale:

# slappasswd

Password generata   ->   {SSHA}upTtbZB+WgdP8l57637bab+sFZCExpC/  (non usate questa password!)

Tale password, va impostata sulla direttiva 'rootpw' del file di configurazione slapd.conf


Configurazione del file slapd.conf

Sul file di configurazione /etc/openldap/slapd.conf  dobbiamo aggiungere/modificare le seguenti direttive

database        ldbm
suffix          "dc=example,dc=com"
rootdn          "cn=admin,dc=example,dc=com"
rootpw          {SSHA}upTtbZB+WgdP8l57637bab+sFZCExpC/
directory       /var/lib/ldap/example.com


La riga suffix "dc=... richiama il dominio per il quale il server LDAP fornisce le informazioni

L'entry rootdn "cn=... è il Distinguished Name (DN) per un utente che non ha limitazioni nei controlli di accesso o nei parametri limite amministrativi impostati per le operazioni sulla directory LDAP. L'utente rootdn può essere considerato un utente root per la directory LDAP

L'entry "rootpw {SSHA}..." rappresenta la password dell'utente rootdn di ldap.

La direttiva directory /var/lib/ldap/example.com rappresenta la directory contenente i database di LDAP.

Le entry LDAP vengono inserite sui database mediante l'impiego di appositi file ASCII in formato testo, denominati LDIF(LDAP Data Interchange Format),  all'interno dei quali definiamo le entry e i loro attributi.
I file che importano o esportano dati da un server LDAP, devono essere in formato LDIF.

Un 'entry rappresenta una unità in una directory LDAP, identificata dal proprio e unico Distinguished Name (DN).

Quindi, ogni entry possiede degli attributi, ovvero parti di informazione direttamente associate alla stessa entry. Per esempio, un'azienda denominata example.com, potrebbe essere un'entry LDAP.
Il sito internet, l'indirizzo e-mail, numero di fax, l'indirizzo possono essere gli attributi associati a example.com
Le persone potrebbero essere altre entry nella directory LDAP. Gli attributi legati alle persone sono il numero di telefono, l'indirizzo e-mail  e così via.
Alcuni attributi sono necessari, mentre altri sono facoltativi. Una objectclass evidenzia gli attributi necessari e quelli opzionali. Tutte le definizioni sintattiche degli attributi e le definizioni objectclass si trovano nei vari file schema all'interno della directory /etc/openldap/schema 


LDAPADD - inserimento delle entry sul database LDAP

Creare una Root LDAP entry
Dopo questa breve panoramica, passiamo all'inserimento della prima entry sul database riguardante il DC (Domain Component) example.com ossia la Root LDAP entry

Il file LDIF di example.com si presenta come segue:

dn: dc=example,dc=com
dc: example
description: Root LDAP entry for example.com
objectClass: dcObject
objectClass: organizationalUnit

ou: rootobject


Create un file di testo su cui inserire le righe precedenti, poi, copiatelo all'interno di /etc/openldap ed eseguite il prossimo comando dal terminale.

Attenzione
i caratteri blank o eventuali spazi, potrebbero causare errori durante la procedura di inserimento sul database ldap.

# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /etc/openldap/example.com.LDIF
Enter LDAP Password: ***** [digitate la password dell'amministratore ldap]
adding new entry "dc=example,dc=com"


Creare una Organization Unit (OU) su LDAP.

Poi continuiamo con l'inserimento di una Organization Unit (OU), denominata 'Utenti'; il file LDIF lo chiameremo utenti.example.com.LDIF,
qui un esempio:

dn: ou=Utenti, dc=example,dc=com
ou: Utenti

description: Unità Organizzativa Utenti

objectClass: organizationalUnit


Poi eseguite il prossimo comando da un terminale per creare la nuova OU:

# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /etc/openldap/utenti.example.com.LDIF

Enter LDAP Password:
adding new entry "ou=Utenti, dc=example,dc=com"


Creare un utente su LDAP.

Infine creiamo un utente denominato 'drigattieri' appartente all'Organization Unit(OU) 'Utenti'; la template del file LDIF è la seguente, il nome del file sarà drigattieri.utenti.example.com.LDIF.

dn: uid=drigattieri,ou=Utenti,dc=example,dc=com
uid: drigattieri
cn: drigattieri
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {SSHA}LbnFzcqZwGSd7wvPifk9ft77H/iSiQIO
shadowLastChange: 13209
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/drigattieri


Per generare la password utente crittografata , utilizziamo sempre il tool 'slappasswd'

Per continuare con l'inserimento eseguite il prossimo comando:

# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /etc/openldap/drigattieri.utenti.example.com

Enter LDAP Password:
adding new entry "uid=drigattieri,ou=Utenti,dc=example,dc=com"

Affinchè l'utente drigattieri possa ritrovarsi sulla propria home directory dopo il processo di autenticazione, bisognare creare l'utente in questione sul server LDAP:

# groupadd -g 200 utentildap
# useradd -u 550 -g 200 -h /home/drigattieri


Come migrare gli utenti di sistema sul database LDAP.

Utilizzando uno script perl presente sulla distro Fedora, è possibile convertire un file passwd in un file formato LDIF.

Creiamo un gruppo e un utente di test ed assegnamogli una password:

# groupadd ldapuser
# useradd -g ldapuser user1
# passwd user1


Esportiamo dal file /etc/passwd, il record inerente all'utente user1:

# grep user1 /etc/passwd > /etc/openldap/user1.passwd


Convertiamo il file user1.passwd in user1.LDIF

# /usr/share/openldap/migration/migrate_passwd.pl
/etc/openldap/user1.passwd /etc/openldap/user1.LDIF

Attenzione!
Lo script 'migrate_passwd.pl' imposterà di default tutte le entry sulla OU 'People' col dominio 'padl.com', mentre invece noi vogliamo che i nuovi utenti LDAP appartengano alla OU 'Utenti' e al dominio 'example.com'.

Quindi modificate la prima riga del file /etc/openldap/user1.LDIF
da:  dn: uid=user1,ou=People,dc=padl,dc=com
a:  dn: uid=user1,ou=Utenti,dc=example,dc=com

Se state effettuando una migrazione totale degli utenti di sistema e dunque vi ritrovate parecchie righe da modificare, potete editare il file in VI ed eseguire il seguente comando dal prompt(VI) per sostituire tutte le righe in un colpo solo:
:%s/padl/example/g


LDAPSEARCH - ricerca all'interno del database LDAP.

E' un comando che permette di effettuare la ricerca di attributi all'interno del database LDAP.

Vediamo alcuni esempi utili.

Ricerca del dominio example.com:

#  ldapsearch -x 'dc=example'

Ricerca dell'OU Utenti:

#  ldapsearch -x 'ou=Utenti'

Ricerca di tutte le objectclass che contengono organizationalUnit:

#  ldapsearch -x 'objectclass=organizationalUnit'

Ricerca dell'utente user1:

#  ldapsearch -x 'cn=user1'

Visualizzare tutto il database LDAP:

ldapsearch -x

LDAPMODIFY - AGGIUNGERE / MODIFICARE / RIMUOVERE gli attributi di un'entry ldap.
Per AGGIUNGERE un attributo all'interno di una entry, create un nuovo file LDIF chiamandolo user1-update.LDIF ed aggiungete le seguenti direttive:

dn: uid=user1,ou=Utenti,dc=example,dc=com
changetype: modify
add: description
description: utente ldap


Poi eseguite il comando per apportare la modifica:

#  ldapmodify -x -D "cn=admin,dc=example,dc=com" -W -f /etc/openldap/user1-update.LDIF

adesso verifichiamo la modifica apportata col seguente comando:

#  ldapsearch -x 'cn=user1'


Per MODIFICARE un attributo, configurate il file LDIF nel seguente modo per modificare l'attributo 'description':

dn: uid=user1,ou=Utenti,dc=example,dc=com
changetype: modify
replace: description
description: utente


Poi eseguite il comando:

#  ldapmodify -x -D "cn=admin,dc=example,dc=com" -W -f /etc/openldap/user1-update.LDIF


Per RIMUOVERE un attributo, configurate il file LDIF nel seguente modo per eliminare l'attributo 'description':

dn: uid=user1,ou=Utenti,dc=example,dc=com
changetype: modify
delete: description


Abbiamo visto come aggiungere, modificare ed eliminare l'attributo 'description'. Stessa cosa può essere fatta con altri tipi attributi.


LDAPDELETE per eliminare un'entry dal database ldap.

Risulta piuttosto semplice eliminare una entry ldap dal database. Supponiamo di voler eliminare l'utente 'user1' dal database:

# ldapdelete -vx 'uid=user1,ou=Utenti,dc=example,dc=com'
-D "cn=admin,dc=example,dc=com" -W


Configurazione del Client LDAP.

I seguenti pacchetti RPM sono richiesti su un Client LDAP:
openldap
openldap-clients
openldap-devel
nss_ldap

Su RedHat/Fedora, abbiamo a disposizione diversi tools per la configurazione del client LDAP.
Il tool grafico 'system-config-authentication' permette di configurare velocemente i parametri per connettersi al server LDAP. Basta eseguire il comando da un terminale o selezionare dal menu di Avvio >  Amministrazione, l'icona Autenticazione, selezionare 'abilita il supporto LDAP' e cliccare su 'configura ldap' per specificare il Base DN(dc=example,dc=com) e l'indirizzo IP del server ldap.

Altrimenti, se vogliamo utilizzare il tool testuale, digitare sul terminale 'setup',  poi scegliere 'Authentication Configuration', selezionare il flag 'Use LDAP' nella colonna di sinistra 'User Information', nella colonna di destra 'Authentication' selezionare il flag 'Use LDAP Authentication' e proseguire, infine apparirà una box ove occorre specificare l'indirizzo IP del server ldap e il  'Base DN' che nel nostro esempio è 'dc=example,dc=com'

Oppure, per quelli che vogliono toccare con mano i file di configurazione è possibile editare i file ldap.conf e nsswitch.conf in presenti /etc:
sul file di configurazione ldap.conf, modificare le seguenti direttive:
host 192.168.1.200      #IP Address del server LDAP
base dc=example,dc=com

Infine, sul file nsswitch.conf, specificare l'ordine in cui il sistema deve ricercare gli utenti; prima sui files locali e poi su ldap:

passwd:    files ldap
shadow:    files ldap
group:      files ldap


Dopo aver completato la configurazione del client  possiamo finalmente testare l'autenticazione ldap.

Se il vostro client è avviato in modalità grafica, meglio switchare sulla console 1 per lavorare in modalità testuale, escludendo eventuali problemi di autenticazione via GDM, quindi con la combinazione di tasti [alt] + [f1] passiamo alla console 1 - per ritornare alla console grafica [alt] + [f7]

Se invece vi trovate già in modalità text o runlevel 3, eseguite un logout.

Adesso siamo pronti per effettuare il login con l'utente user1:

Fedora Core release 5 (Bordeaux)
Kernel 2.6.16.19 on an i686

hurricane login: user1
Password:
Last login: Tue Jul 11 17:02:28 from 172.16.84.129
No directory /home/user1!
Logging in with home = "/".
-sh-3.1$

Se avete configurato tutto per bene, dovreste ottenere qualcosa di simile, quindi l'autenticazione su LDAP funziona.
Da notare il messaggio "No directory /home/user1!", significa che non è stata trovata la home directory dell'utente user1.
Per ovviare a questo problema, è possibile far eseguire al client ldap un automount della /home, con AutoFS, via NFS sul Server LDAP, in maniera tale che, ad ogni login, il client possa montare automaticamente la home directory dell'utente autenticato.


Configurazione Server NFS.

Sul Server LDAP, inserite la seguente direttiva all'interno del file /etc/export:

/home *(rw)

Il carattere '*' abilita qualsiasi client ad effettuare il mount della directory, dal punto di vista della security non è consigliato, meglio restringere l'accesso specificando il range IP come nel seguente esempio oppure utilizzare il tcp_wrappers - consultare la sezione Guida NFS per maggiori info:

/home 192.168.0.0/255.255.255.0(rw)


Infine avviate i servizi NFS e Portmap:
#  service portmap start
#  service nfs start


Configurazione Autofs sul client ldap.

Dunque desideriamo che il client, monti in automatico la /home con AutoFS via NFS.
Prima di tutto, occorre rinominare la home directory locale sul client, da '/home' a '/localhome ' in quanto il servizio 'Autofs' crea automaticamente il mount point sulla quale montare la risorsa, quindi la /home non deve esistere sulla '/' dal momento che quest'ultima(home) verrà creata dinamicamente sulla root(/).
Quindi autenticatevi sul client come root e sostituite sul file /etc/passwd la riga '/home' con '/localhome' per consentire agli utenti locali di ritrovare la propria home.

Adesso procediamo con la configurazione del servizio autofs.
Aprite un terminale e configurate il file /etc/auto.master aggiungendo la seguente direttiva:

 /home   /etc/auto.ldaphome --timeout=60

 poi, configurate il file /etc/auto.ldaphome aggiungendo la seguente direttiva:

rw,soft,intr,rsize=8192,wsize=8192 IP_ADDRESS_SERVERLDAP:/home/&


Infine avviate il servizio autofs
#  chkconfig autofs on
#  service autofs start

Se invece non vogliamo utilizzare il servizio Autofs per l'automount, possiamo configurare il client per montare in automatico tutta la directory /home configurando il file /etc/fstab come segue:

ip_address_server_nfs:/home        /home                    nfs    defaults        0 0


Finalmente siamo pronti per effettuare il login  e verificare che il sistema monti in automatico la home dir dell'utente 'user1' via NFS.

Attenzione!
Dal momento che sul client ldap la /home è stata rinominata in /localhome ricordiamo di assegnare il path corretto nel caso in cui si vogliano creare nuovi utenti locali sul client col seguente comando:
useradd -d /localhome/nuovo_utente nuovo_utente

 
 
 
Ultimo aggiornamento: 2009-06-25 11:19:08
 
 
 
 
Lascia un commento
no obbligatorio, non sarà mai mostrato

 
 
»Home | About | Legale | Privacy | Pubblicità | Contatti