Table of Contents
Abstract
PAM (ingl. Pluggable Authentication Modules) viene utilizzato sotto Linux per realizzare l'autenticazione tra utente e applicazione. I moduli PAM sono disponibili centralmente e possono essere invocati da ogni applicazione. Nel presente capitolo indicheremo come configurare il processo di autenticazione ed illustreremo il modo di funzionamento del modulo.
A volte amministratori di sistema e sviluppatori desiderano limitare l'accesso a determinate aree di sistema o l'utilizzo di una determinata funzionalità di una determinata applicazione. Senza PAM ciò vorrebbe dire adattare continuamente le applicazioni ai nuovi schemi di autenticazione (ad es. LDAP o Samba). Questo modo di procedere richiede tante tempo ed è esposto ad errori. Se però il processo di autenticazione si svolge indipendentemente dall'applicazione e viene delegato a dei moduli centralizzati, si aggira questa difficoltà. Quando si vorrà applicare un nuovo schema di autenticazione, sarà sufficiente intervenire sul modulo PAM da cui l'applicazione otterrà le nuove indicazioni.
Per ogni programma che ricorre a PAM vi è un file di configurazione sotto /etc/pam.d/<servizio>. In questo file si determinano i moduli PAM da utilizzare ai fini dell'autenticazione degli utenti. La maggior parte dei file di configurazione generali dei moduli PAM sotto /etc/security determinano il comportamento dei moduli (esempi: pam_env.conf, pam_pwcheck.conf, pam_unix2.conf, time.conf etc. …). Una applicazione che ricorre ad un modulo PAM invoca un determinato set di funzioni PAM che elabora delle informazioni dei diversi file di configurazione ed inoltra il risultato alla applicazione richiedente.
Un rigo del file di configurazione PAM è composto al massimo di quattro colonne:
<Tipo_di_modulo> <Flag_di_controllo> <Percorso_del_modulo> <Opzioni>
Sono una serie di moduli PAM, detto anche stack (pila) di moduli, ad essere elaborati. I diversi moduli hanno funzioni diverse: un modulo si occupa della verifica della password, un altro verifica l'origine di un accesso ed un altro ancora si occupa delle impostazioni di sistema specifiche dell'utente.
Esistono quattro tipi diversi di moduli PAM:
I moduli di questo tipo verificano l'autenticità dell'utente. La verifica si può basare sulla richiesta tradizionale della password, ma si può anche trattare di metodologie più avanzate come chip card o verifica di una caratteristica biometrica (impronta digitale, scansione dell'iride).
I moduli di questo genere controllano se l'utente ha il permesso di utilizzare il servizio da lui richiesto. In tal modo gli utenti con un account non più valido, ovvero scaduto, non potranno più accedere ai servizi.
Questo modulo viene usato per modificare il metodo di autenticazione, che il più delle volte è rappresentato da una password.
I moduli di questo tipo servono all'amministrazione e configurazione della sessione utente. Questi moduli vengono inizializzati prima e dopo l'autenticazione, per protocollare i tentativi di login e per assegnare un ambiente all'utente (accesso alle e-mail, directory home, limiti etc.)
La seconda colonna contiene i flag di controllo tramite i quali chiamare in causa i moduli desiderati:
Il modulo deve essere stato elaborato correttamente per proseguire nel processo di autenticazione. In caso contrario prima che l'utente riceve un avviso del tentativo di autenticazione fallito, vengono elaborati tutti gli altri moduli del tipo required
Come per i moduli required, anche questi moduli devono essere elaborati in modo corretto ai fini dell'autenticazione. Se qualcosa non va per il verso giusto, l'utente viene avvisato immediatamente e fermato il processo di elaborazione dei moduli. Se tutto procede bene vengono elaborati gli altri moduli come con required. Questo flag può essere impostato come semplice filtro per verificare se sono date determinate condizioni irrinunciabili per una autenticazione corretta.
Se un modulo di questo tipo viene elaborato correttamente il programma che ha invocato i moduli di questo tipo riceve un relativo messaggio e non vengono elaborati gli altri moduli, se con i moduli required è andato tutto per il verso giusto. Se un modulo sufficient non è stato elaborato correttamente, si prosegue semplicemente con l'elaborazione dei moduli successivi.
Non fa differenza se si ha una elaborazione è stato coronata dal successo o meno; questa caratteristica viene utilizzata in prima linea con moduli che ad esempio indicano solo se un utente abbia ricevuto una e-mail.
Il percorso del modulo non viene indicato esplicitamente, se i moduli si trovano nella directory standard /lib/security (o rispettivamente sotto /lib64/security con piattaforme a 64 bit supportate da ). Come quarta registrazione è possibile passare ancora una opzione al modulo come ad esempio debug (modo debug) o nullok (sono consentite password vuote).