6.10 La libreria PAM

La libreria Linux-PAM (Linux Pluggable Authentication Modules) o più semplicemente PAM (v. http://www.kernel.org/pub/linux/libs/pam) è un’insieme di moduli o shared library (librerie condivise)19 che permettono all’amministratore del sistema di scegliere il metodo per l’autenticazione degli utenti. In questo modo è possibile cambiare il meccanismo di autenticazione senza dover necessariamente ricompilare nessun’applicazione. La maggior parte dei sistemi GNU/Linux utilizzano tale libreria per l’autenticazione degli utenti.

È comunque necessario che le applicazioni che effettuano l’autenticazione degli accessi al sistema siano state adattate per funzionare con Linux-PAM.

In generale, un’applicazione che gestisce l’autenticazione degli utenti deve essere realizzata (compilata) per uno specifico meccanismo di autenticazione, per esempio nei sistemi Unix-like tradizionali l’applicazione richiede l’inserimento di una password che viene verificata con quella memorizzata nello user account del sistema relativo all’utente in questione.

Sfortunatamente, l’incremento della velocità di calcolo delle macchine e l’introduzione delle reti hanno reso questo meccanismo di autenticazione, una volta sicuro, vulnerabile agli attacchi.

Con la libreria PAM si separa lo sviluppo del software che effettua l’autenticazione dal meccanismo di autenticazione stesso. Questo avviene per mezzo di una libreria di funzioni che un’applicazione può utilizzare per richiedere l’autenticazione di un utente. La libreria PAM si compone dei seguenti file20

La libreria PAM è configurata tramite il file /etc/pam.conf (o una serie di file di configurazione contenuti nella directory /etc/pam.d - questo approccio è quello più recente) che fornisce le direttive per l’autenticazione degli accessi al sistema. I moduli PAM sono contenuti generalmente nella directory /lib/security e sono oggetti caricabili dinamicamente (v. man page dlopen(3)).

In genere l’applicazione che effettua la procedura di accesso al sistema esegue i seguenti passi:

  1. Verifica che l’utente sia veramente chi dice di essere (autenticazione) - in genere questo viene efettuato richiedendo la password dell’utente e verificando che questa coincida con quella memorizzata nel relativo user account sul sistema;
  2. Fornisce all’utente il servizio richiesto (in genere lancia in esecuzione una shell con i privilegi dell’utente).

Il passo 1 è quello delegato alla libreria PAM, che si prende quindi l’onere di verificare l’identità dell’utente (autenticazione) e di fornire il risultato all’applicazione che rimane l’interfaccia con l’utente.


pict
Figura 6.2: Schema di funzionamento della procedura di login con la libreria PAM.

L’applicazione (v. fig. 6.2) si intrerfaccia con la libreria PAM e non è necessario che conosca il meccanismo di autenticazione. La libreria PAM consulta il contenuto del file di configurazione appropriato e carica i moduli necessari.

Sono i moduli che si preoccupano di mettere in atto il meccanismo di autenticazione. Il dati richiesti all’utente e le relative risposte, sono scambiati tra l’applicazione ed i moduli attraverso un opportuno meccanismo di dialogo fornito dalla libreria PAM.

L’associazione tra il meccanismo di autenticazione e l’applicazione che necessita di autenticazione è effettuata con specifiche direttive nell’opportuno file di configurazione della libreria PAM.


  6.10.1 Configurazione
   6.10.1.1 Configurazione di default
   6.10.1.2 Problemi di configurazione