PAM - Introduzione

PAM, acronimo per Pluggable Authentication Modules, e' un insieme di librerie che consentono di definire il modo in cui le applicazioni devono autenticare gli utenti. Essa consente di apportare modifiche al sistema di autenticazione senza le necessita' di modificare le applicazioni in questione.
La libreria e' gestita localmente tramite il file di configurazione /etc/pam.conf, od una serie di files per i diversi programmi, presenti nella directory /etc/pam.d . I diversi shared objects da utilizzare sono invece posti sotto /lib/security .
Personalmente, anziche' avere un unico file di configurazione, preferisco mantenere tutto separato, e quindi gli esempi presentati saranno sempre riferiti alla situazione con diversi files di configurazione in /etc/pam.d .
In questo caso ogni file dovra' avere il nome corrispondente al servizio: ad esempio il file di configurazione per ssh sara' /etc/pam.d/ssh, quello per su /etc/pam.d/su e cosi' via. Nel caso per un programma non esista il rispettivo file in pam.d esso utilizzera' la configurazione di default, definita da /etc/pam.d/other.
All'interno di ognuno di questi files viene definito lo stack di autenticazione ovvero la sequenza dei moduli da utilizzare, con le condizioni che debbono essere soddisfatte per autenticare l'utente.
Le linee in cui vengono richiamati i diversi moduli devono avere la seguente struttura :

    tipo   flag   modulo   argomenti
    
Tipo indica il tipo di modulo, tra i quattro disponibili:    

- auth: si occupa degli aspetti relativi all'autenticazione dell'utente;
- account: aspetti dell'account non direttamente legati all'autenticazione, ad esempio consentire l'accesso in base all'ora, le risorse disponibili ecc;
- session: relativo alle operazione da eseguire prima e dopo che all'utente venga fornito il servizio, ad esempio mostrare il motd dopo il login;
- password: necessario per l'aggiornamento dei token di autenticazione associati all'utente;

Flag indica come PAM deve comportarsi a seconda dell'esito favorevole o meno del modulo indicato. I valori ammissibili sono:

- required: in caso di fallimento per il modulo con questo control flag, all'utente non viene concesso l'accesso all'applicazione, dopo avere comunque elaborato la rimanente parte dello stack;
- requisite: in caso di fallimento il controllo viene direttamente ritornato all'applicazione, senza elaborare la restante parte dello stack;
- sufficient: in caso di successo del modulo con tale flag, verra' consentito l'accesso all'utente se nessun precedente modulo con flag required ha avuto esito sfavorevole;
- optional: come il nome lascia intendere questo flag di controllo indica moduli «opzionali», ovvero il cui esito non abbia conseguenze nel consentire o negare l'accesso all'applicazione;

Modulo consente di specificare lo shared object da utilizzare od il suo percorso completo. Se il primo carattere specificato per questo campo e' uno /, PAM cerchera' in /lib/security il modulo col nome indicato.

Argomenti e' costituito da una lista di token che debbono essere passati come parametri al modulo quando viene invocato. In caso vengano specificati parametri errati essi verranno ignorati dal modulo, che pero' registrera' un avvertimento tramite syslog. Inoltre, in caso un argomento debba comprendere degli spazi esso deve essere chiuso tra parentesi quadre.

A titolo esemplificativo, si consideri la configurazione di /etc/pam.d/other. Probabilmente sarebbe una buona idea cercare di rendere il piu' restrittivo possibile il comportamento definito da esso, poiche' dovrebbe intervenire in quelle situazioni per cui non e' gia' previsto un apposito file. Alla luce di cio' other potrebbe essere definito nella maniera seguente:

    auth        required        pam_deny.so
    auth        required        pam_warn.so
    account     required        pam_deny.so
    account     required        pam_warn.so
    password    required        pam_deny.so
    password    required        pam_warn.so
    session     required        pam_deny.so
    session     required        pam_warn.so

Tutti gli elementi dello stack hanno flag di controllo required, quindi l'esito dell'azione di ogni modulo dovra' avere esito positivo, oppure la richiesta del servizio fallira'. dopo l'elaborazione della parte residua dello stack.
Per tutti i quattro contesti auth, account, password e session vengono richiamati i moduli pam_deny e pam_warn. Il primo di essi non fa altro che negare l'accesso alla risorsa. Esso, pero', non riporta alcuna informazione nei log di sistema, a differenza di pam_warn, che registra via syslog l'utente, l'host di provenienza, il servizio richiesto ecc.
Per le applicazioni che la utilizzeranno, quindi, questa configurazione, quindi, non avra' l'effetto di non consentire alcun tipo di accesso, oltre a loggare i tentativi effettuati.

Privacy Policy