Capitolo 16. Autenticazione con PAM

Sommario

16.1. Struttura di un file di configurazione PAM
16.2. Configurazione PAM per sshd
16.3. Configurazione dei moduli PAM
16.4. Ulteriori informazioni

Estratto

I moduli di autenticazione aggiungibili, PAM, vengono utilizzati da Linux nel processo di autenticazione per costituire il livello che collega utente e applicazione. I moduli PAM sono disponibili in tutto il sistema e disponibili per tutte le applicazioni. Nel presente capitolo viene descritto il meccanismo di autenticazione modulare e la sua configurazione.

Gli amministratori di sistema e i programmatori hanno spesso l'esigenza di limitare l'accesso ad alcune aree del sistema o impedire l'utilizzo di alcune funzioni di un'applicazione. Senza il PAM, le applicazioni devono essere adattate in presenza di ogni nuovo meccanismo di autenticazione, come LDAP o SAMBA. Tuttavia tale processo è impegnativo dal punto di vista del tempo ed esposto a errori. Un modo per evitare questi svantaggi è quello di separare le applicazioni dal meccanismo di autenticazione e di delegare l'autenticazione a moduli a gestione unificata. In presenza di una richiesta di un nuovo schema di autenticazione, sarà sufficiente adattare o sviluppare un modulo PAM appropriato al programma in questione.

Ogni programma affidato al meccanismo PAM dispone di un proprio file di configurazione nella directory /etc/pam.d/nome_programma. Questi file definiscono i moduli PAM utilizzati per l'autenticazione. Inoltre, esistono dei file di configurazione globali per la maggior parte dei moduli PAM, sotto /etc/security, che definiscono il comportamento preciso di questi moduli; ad esempio pam_env.conf, pam_pwcheck.conf, pam_unix2.conf e time.conf). L'applicazione che utilizza un modulo PAM in realtà invoca una serie di funzioni PAM, che a loro volta elaborano le informazioni del file di configurazione e restituiscono il risultato all'applicazione invocante.


16.1. Struttura di un file di configurazione PAM

Ciascuna riga del file di configurazione PAM contiene un massimo di 4 colonne:

<Tipo di modulo> <Flag di controllo> <Percorso del modulo> <Opzioni>
  

I moduli PAM vengono elaborati in modalità stack. Il tipo di modulo varia a seconda dello scopo; ad esempio, un modulo verifica la parola d'ordine, un altro verifica l'ubicazione da cui si accede al sistema e un altro ancora legge le impostazioni specifiche all'utente. PAM è costituito da 4 diversi tipi di modulo:

auth

Lo scopo di questo tipo di modulo è verificare l'autenticità dell'utente. Questa operazione viene di norma svolta tramite richiesta di una parola d'ordine, ma può essere effettuata anche tramite chip o verifiche biometriche (impronte digitali o iride).

account

Questo tipo di modulo verifica se l'utente dispone dell'autorizzazione generale per utilizzare il servizio richiesto. Ad esempio, una tale verifica deve essere svolta per accertarsi che nessuno esegua un login con nome utente e parola d'ordine scaduti.

password

Lo scopo di questo tipo di modulo è quello di abilitare la modifica di un token di autenticazione. Nella maggior parte dei casi, il token è una parola d'ordine.

session

Questo tipo di modulo è responsabile della gestione e configurazione delle sessioni utente. Queste vengono aperte prima e dopo l'autenticazione per registrare i tentativi di login nei file di log del sistema e configurare l'ambiente specifico dell'utente (conti e-mail, home directory, limiti del sistema, ecc.).

La seconda colonna contiene dei flag di controllo per pilotare il comportamento dei moduli avviati:

required

Un modulo con un flag simile deve essere elaborato correttamente prima che possa avere luogo l'autenticazione. Se un modulo con flag required restituisce un errore, vengono elaborati tutti gli altri moduli con lo stesso flag prima che il sistema invii all'utente un messaggio riguardo il fallito tentativo di autenticazione.

requisite

Anche i moduli con questo flag devono essere elaborati correttamente in modo analogo a quelli con flag required. Tuttavia, questo modulo restituisce immediatamente l'eventuale errore senza proseguire l'elaborazione di ulteriori moduli. In caso di elaborazione corretta, gli altri moduli vengono elaborati in successione analogamente a come avviene per i moduli con flag required. Il flag requisite può essere utilizzato come filtro di base per verificare l'esistenza di determinate condizioni essenziali per la corretta autenticazione.

sufficient

Dopo la corretta elaborazione di un modulo con flag simile, l'applicazione invocante riceve un messaggio immediato riguardo la riuscita e l'elaborazione di ulteriori moduli non avviene, a patto che non vi siano stati errori di precedenti moduli con flag required. L'errore di un modulo con flag sufficient non ha conseguenze dirette, nella misura in cui tutti i moduli successivi vengono elaborati nell'ordine.

optional

L'errore o riuscita di un modulo con un tale flag non ha nessuna conseguenza diretta. Risulta utile per i moduli destinati solo alla visualizzazione di messaggi (ad esempio per segnalare all'utente l'arrivo di posta) senza ulteriore elaborazione.

include

In presenza di questo flag, il file specificato come argomento viene inserito in questa ubicazione.

Il percorso del modulo non deve essere specificato in modo esplicito, a patto che il modulo si trovi nella directory di default /lib/security (per le piattaforme a 64 bit supportate da SUSE Linux, la directory è /lib64/security). L'opzione presente nella quarta colonna può essere debug (abilita le funzioni di debug) o nullok (consente l'utilizzo di parole d'ordine vuote).