[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]
Secondo la tradizione dei sistemi Unix, l'identificazione di un utente avviene attraverso una parola d'ordine, annotata in modo cifrato nel file /etc/passwd
, oppure nel file /etc/shadow
se è attiva la gestione delle password shadow. L'introduzione delle password shadow ha introdotto la possibilità di maggiori controlli sulla validità dell'utenza, in particolare definendo dei tempi di validità per le parole d'ordine e per le utenze stesse.
Tuttavia, il sistema delle password shadow rimane ancorato alla gestione di parole d'ordine, mentre i metodi di identificazione potrebbero essere differenti. L'esigenza di definire un sistema più generalizzato per la gestione dei metodi di autenticazione ha portato alla realizzazione del sistema PAM (Pluggable authentication modules), con il quale, attraverso le librerie PAM è possibile definire e configurare la politica di accesso in base al contesto.
Per mettere in pratica questo sistema, i programmi che in qualche modo si occupano di mettere a disposizione un servizio di autenticazione devono essere predisposti per l'utilizzo di queste librerie. In generale, un sistema Unix in cui è attivata la gestione PAM, configurato in modo standard, si comporterà nello stesso di un altro sistema che ne sia sprovvisto. In altri termini, la configurazione standard del sistema PAM è quella che ricalca la tradizione dei sistemi Unix.
In questo capitolo si fa riferimento alla realizzazione del sistema PAM per GNU/Linux, ovvero Linux-PAM. (1)
L'aspetto più importante del sistema PAM è la modularità, costituita da diversi file di libreria, competenti ognuno per un tipo differente di servizio di autenticazione. Quando si gestisce il sistema PAM, questi file sono indispensabili al funzionamento del sistema, pertanto non possono essere collocati al di sotto della directory /usr/
.(2) La collocazione normale di questi file è così la directory /lib/security
. A titolo di esempio, nella directory si potrebbero vedere i file seguenti:
pam_access.so pam_ldap.so pam_rhosts_auth.so pam_unix_acct.so pam_deny.so pam_limits.so pam_rootok.so pam_unix_auth.so pam_env.so pam_listfile.so pam_securetty.so pam_unix_passwd.so pam_filter.so pam_mail.so pam_shells.so pam_unix_session.so pam_ftp.so pam_mkhomedir.so pam_stress.so pam_userdb.so pam_group.so pam_motd.so pam_tally.so pam_warn.so pam_issue.so pam_nologin.so pam_time.so pam_wheel.so pam_lastlog.so pam_permit.so pam_unix.so
Inizialmente, la configurazione del sistema PAM dipendeva dal file /etc/pam.conf
. Attualmente la configurazione è suddivisa in più file, contenuti nella directory /etc/pam.d/
e il file /etc/pam.conf
rimane vuoto o commentato completamente. In tal modo, ogni servizio di autenticazione ha un proprio file nella directory /etc/pam.d/
, facilitando anche la gestione dei pacchetti di applicazioni, che non devono condividere la configurazione in un solo file.
I file di configurazione contenuti nella directory /etc/pam.d/
sono file di testo normali, in cui le righe vuote e quelle bianche sono ignorate, così come sono ignorate quelle che iniziano con il simbolo #. Per il resto, si tratta di record con la struttura seguente:
tipo livello_di_controllo modulo_pam [opzioni_del_modulo]
Il listato 56.1 rappresenta l'esempio di come potrebbe apparire il file /etc/pam.d/login
, che serve a configurare il servizio di autenticazione attraverso il programma login.
auth requisite pam_securetty.so auth required pam_nologin.so auth required pam_env.so auth required pam_unix.so nullok account required pam_unix.so session required pam_unix.so session optional pam_lastlog.so session optional pam_motd.so session optional pam_mail.so standard noenv password required pam_unix.so nullok obscure min=4 max=8 |
Il primo campo serve a definire il tipo di contesto a cui si fa riferimento, attraverso alcune parole chiave ben definite.
auth
Rappresenta un contesto di autenticazione, nell'ambito del quale si deve verificare l'identità l'utente e che non siano stabilite delle limitazioni riferite alla sua identità.
account
Fa riferimento allo stato dell'utenza, che può risultare attiva, scaduta, inattiva o disabilitata, solitamente secondo le informazioni provenienti dal file /etc/shadow
.
password
Fa riferimento alla parola d'ordine, pertanto ha senso solo quando il tipo di autenticazione ne prevede l'uso. In questo contesto, a titolo di esempio, è possibile fare riferimento a un controllo sulla sua validità, secondo quanto contenuto nel file /etc/shadow
, così come è possibile richiedere una verifica sul rispetto di alcune regole elementari per una buona parola d'ordine.
session
Questo contesto permette di definire delle azioni da compiere nel momento dell'accesso, oppure al momento della sua conclusione. Osservando l'esempio che è stato proposto, si può intendere intuitivamente la richiesta di informare l'utente sull'ultimo accesso, di mostrare il messaggio del giorno e di informare sulla presenza di messaggi di posta elettronica.
Ogni modulo PAM può essere visto come una funzione che restituisce un valore. Sono possibili tre casi: SUCCESS, corrispondente a una verifica completata come richiesto, FAILURE, corrispondente a una verifica fallita, IGNORE, corrispondente a un risultato indefinibile. Il secondo campo consente di definire come deve essere preso in considerazione l'esito della verifica fatta dal modulo corrispondente. Anche in questo caso si usa una parola chiave, come descritto nell'elenco seguente.
required
Rappresenta un controllo indispensabile, attraverso il quale si pretende di ottenere un risultato SUCCESS, o al limite IGNORE. Infatti, un risultato FAILURE si tradurrebbe in una mancata autenticazione, indipendentemente dall'esito degli altri controlli. Tuttavia, l'insuccesso nell'autenticazione non conclude immediatamente la procedura, in modo da non consentire all'utente di comprendere dove si sia verificato il problema.
requisite
Rappresenta un controllo indispensabile, attraverso il quale si pretende di ottenere un risultato SUCCESS, o al limite IGNORE. Infatti, un risultato FAILURE si tradurrebbe in una mancata autenticazione, indipendentemente dall'esito degli altri controlli. L'insuccesso fa concludere immediatamente la procedura di autenticazione.
sufficient
Rappresenta un controllo sufficiente. In pratica, se prima di questo controllo non si sono verificati problemi, un esito SUCCESS conclude la procedura con un'autenticazione corretta. Al contrario, un esito FAILURE viene trattato come equivalente a un risultato indeterminato.
optional
Rappresenta un controllo opzionale, nel quale un esito FAILURE viene trattato come un risultato indeterminato.
In generale, un risultato indeterminato non annulla l'autenticazione; tuttavia, quando tutte le verifiche generano un risultato indeterminato, non si può concedere l'accesso. In questo senso, un tipo di verifica opzionale può servire per ottenere un controllo che consenta l'accesso in mancanza di altri esiti determinati.
I record di questi file di configurazione vengono analizzati nell'ordine in cui appaiono. |
Il terzo campo rappresenta il nome del modulo, ovvero il file. Questo nome può essere completo di percorso assoluto, oppure può essere indicato senza tale informazione, se la sua collocazione è quella predefinita. Il quarto campo è costituito dalle opzioni da passare al modulo, separate tra loro da uno o più spazi.
Tra i vari file di configurazione è importante definirne uno denominato other
, che viene utilizzato quando per quel particolare servizio di autenticazione non ne è stato previsto uno specifico. L'esempio che si vede nel listato 56.2 rappresenta il contenuto di questo file quando si vuole garantire un sistema minimo di autenticazione, secondo i canoni tradizionali.
auth required pam_unix.so account required pam_unix.so password required pam_unix.so session required pam_unix.so |
Per verificare che ciò sia vero, si può provare a spostare temporaneamente gli altri file di configurazione della directory /etc/pam.d/
in un'altra collocazione, lasciando al suo posto il file /etc/pam.d/other
.
In alternativa, si può fare in modo che non ci siano altre possibilità di autenticazione, al di fuori di quando definito dai file di configurazione specifici. Per questo, basta che il file /etc/pam.d/other
contenga le righe che si vedono nel listato 56.3.
auth required pam_deny.so account required pam_deny.so password required pam_deny.so session required pam_deny.so |
A seconda delle circostanze, alcuni moduli possono annotare nel registro del sistema l'esito della loro verifica. In generale, è prevista l'opzione debug per abilitare queste annotazioni, salvo quando ciò è implicito, che dovrebbe essere riconosciuta dalla maggior parte dei moduli. Queste annotazioni possono aiutare l'amministratore a comprendere dove ci possono essere dei problemi di configurazione. A titolo di esempio, si può osservare l'estratto seguente:
Oct 21 18:07:30 dinkel PAM_unix[591]: check pass; user unknown Oct 21 18:07:30 dinkel PAM_unix[591]: authentication failure; (segue)
LOGIN(uid=0) -> tizio for login service Oct 21 18:07:33 dinkel login[591]: FAILED LOGIN (1) on `tty3' (segue)
FOR `UNKNOWN', Authentication service cannot retrieve authentication info.
In questo caso si può osservare che l'utente tizio ha tentato di accedere attraverso il servizio di autenticazione login, senza che per lui sia prevista un'utenza, pertanto, già il nominativo-utente tizio risulta sconosciuto.
Oltre alle opzioni fornite nei record dei file di configurazione dei servizi di autenticazione, nella directory /etc/pam.d/
, alcuni moduli possono richiedere una configurazione particolare. Questi file ulteriori hanno solitamente un nome corrispondente a quello dei moduli, senza il prefisso pam_
e senza l'estensione .so
, con l'aggiunta dell'estensione .conf
, collocati nella directory /etc/security/
. Per esempio, il file /etc/security/access.conf
si riferisce al modulo pam_access.so
.
In condizioni normali, tali file di configurazione ulteriori, sono vuoti, oppure sono commentati completamente, rimanendo a disposizione per la definizione di funzionalità particolari.
Andrew G. Morgan, The Linux-PAM system administrators' guide
<http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html>
daniele @ swlibero.org
1) Linux-PAM licenza in stile BSD che può trasformarsi in GNU GPL
2) La gerarchia che parte dalla directory /usr/
tipica, potrebbe essere contenuta in un disco diverso da quello che contiene quella principale; pertanto, se all'avvio ci sono delle difficoltà e non si può montare la gerarchia /usr/
, si rischia di non poter usare il sistema perché mancano le librerie PAM.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome moduli_pam.html
[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]