Autenticazione dell'utente con PAM

I programmi che forniscono privilegi devono essere in grado di autenticare gli utenti. Quando entrate in un sistema, una volta inseriti la vostra login e la vostra password, il processo login utilizzerà questi dati per autenticare la vostra connessione - verificherà che voi siate chi dite di essere. Sono possibili altre forme di autenticazione oltre alle password ed è possibile memorizzare le password in modi differenti.

PAM, (Pluggable Authentication Modules), è un modo per permettere all'amministratore di sistema di creare un procedimento di autenticazione senza dover ricompilare i programmi che si occupano dell'autenticazione stessa. Con PAM, controllate come i moduli sono inseriti nei programmi modificando un file di configurazione.

La maggior parte degli utenti di Red Hat Linux non avranno mai bisogno di modificare questo file di configurazione. Quando usate RPM per installare i programmi che richiedono un'autenticazione, verranno fatti automaticamente i cambiamenti necessari per l'autenticazione delle password. Tuttavia, potreste voler personalizzare la vostra configurazione, nel qual caso è necessario che conosciate la struttura dei file di configurazione.

I Moduli PAM

Ci sono quattro tipi di moduli definiti dallo standard PAM.

Questi moduli possono essere inseriti nello stack, in modo da poter essere utilizzati contemporaneamente. Per esempio, rlogin di solito fa uso di almeno due metodi di autenticazione: se ha successo il metodo rhosts, è sufficiente permettere il collegamento; se fallisce, viene effettuata l'autenticazione standard della password.

Nuovi moduli possono essere aggiunti in ogni momento, e le applicazioni compatibili con PAM possono utilizzarli. Per esempio, se avete un nuovo sistema di calcolo della password, potete compilare un modulo per supportarlo (la documentazione sulla scrittura dei moduli è inclusa nel sistema in /usr/doc/pam*), i programmi PAM possono usare il nuovo metodo senza essere ricompilati o modificati in alcun modo.

Servizi

Ogni programma che utilizza PAM definisce il proprio nome di "servizio". Il programma login definisce il tipo di servizio login, ftpd definisce ftp, ecc. Generalmente, il tipo di servizio è il nome del programma usato per accedere al servizio, non il programma usato per fornire il servizio.

I file di configurazione

La directory /etc/pam.d viene utilizzata per i file di configurazione di tutte le applicazioni PAM. (La directory /etc/pam.conf veniva utilizzata nelle precendenti versioni di PAM; anche se il file pam.conf viene letto se non si trova nessuna voce nella directory /etc/pam.d/, il suo utilizzo è sconsigliato). Ogni applicazione (in verità ogni servizio) ha il suo file di configurazione. Potete vedere di seguito un esempio di file:

#%PAM-1.0
auth      required  /lib/security/pam_securetty.so
auth      required  /lib/security/pam_unix.so shadow nullok
auth      required  /lib/security/pam_nologin.so
account   required  /lib/security/pam_unix.so
password  required  /lib/security/pam_cracklib.so
password  required  /lib/security/pam_unix.so shadow nullok use_authtok
session   required  /lib/security/pam_unix.so
        

La prima riga è un commento, come ogni riga che inizia con il carattere # è. Dalla linea due alla quattro vengono specificati i tre moduli da usare per l'autorizzazione di login. La seconda riga assicura che se l'utente sta cercando di connettersi come root, la console tty sulla quale sta operando è elencata nel file /etc/securetty se esiste. La terza riga fa sì che venga chiesta e verificata la password. La terza linea controlla che il file /etc/nologin esista, e se la risposta è affermativa, mostra il suo contenuto e se l'utente non è root, non gli permette l'accesso.

Osservate che tutti e tre i moduli sono controllati anche se il primo fallisce. È una decisione di sicurezza— per non far sapere all'utente perchè la sua autenticazione non è stata accettata, poichè sapendolo avrebbe la possibilità di violare l'autenticazione più facilmente. Potete cambiare questo funzionamento cambiando required in requisite; se un modulo requisite fallisce, PAM fallisce immediatamente senza chiamare altri moduli.

La quinta riga fa sì che venga controllata ogni specifica. Per esempio, se sono state abilitate le shadow password, il modulo pam_pwdb.so controllerà se l'account è scaduto, o se l'utente non ha modificato la sua password durante il periodo che aveva a disposizione per cambiarla.

La sesta riga definisce una serie di test da eseguire quando viene cambiata la password in modo da evitare password semplici che potrebbero essere determinate attraverso un programma di crack delle password basato su un dizionario.

La settima riga (che potrebbe essere spostata) specifica che se il programma di accesso cambia la password utente, dovrebbe utilizzare, il modulo pam_pwdb.so. (Si comporterà in questo modo solo se il modulo auth determina che la password necessita di essere cambiata— cioè, se una shadow password non è scaduta).

L'ottava, e ultima, riga specifica che il modulo pam_pwdb.so viene usato per gestire la sessione. Attualmente questo modulo non compie nessuna operazione, e può essere rimpiazzato con qualsiasi modulo necessario.

Osservate che l'ordine delle righe all'interno del file è importante. Sebbene non sia importante in che ordine sono chiamati i moduli required, sono disponibili altre flag di controllo. Mentre optional è usato raramente, e mai di default su un sistema Red Hat Linux, sufficient e requisite rendono importante l'ordine con cui sono inserirti.

Diamo un'occhiata alla configurazione auth per rlogin:

auth       sufficient   /lib/security/pam_rhosts_auth.so
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
        

Per prima cosa, pam_rhosts_auth.so autentica l'utente, PAM attiva subito rlogin senza che venga attuato nessun controllo della password. Se pam_rhostsauth.so non riesce ad autenticare l'utente, l'autenticazione fallita viene ignorata.

In secondo luogo, pam_securetty.so evita gli accessi di root su terminali insicuri. In poche parole disabilita tutti i tentativi rlogin da parte dell'utente root. Se volete che siano accettati (nel qual caso vi raccomandiamo di non essere connessi ad Internet o dietro un firewall) potete semplicemente rimuovere questa riga.

In terzo luogo, (se pam_rhosts_auth.so fallisce nell'autenticare l'utente), il modulo pam_pwdb.so esegue una normale autenticazione della password.

Infine, pam_nologin.so controlla /etc/nologin, come specificato sopra.

Osservate che se non volete che venga visualizzato il prompt per inserire la password se l'autenticazione fallisce, potete cambiare il modulo pam_securetty.so da required a requisite.

Shadow Password

Il modulo pam_unix.so si accorgerà automaticamente se state usando le shadow password e farà tutte le modifiche necessarie. Per ricevere maggiori informazioni fate riferimento alla la sezione Utility Shadow.

Rexec e PAM

Per ragioni di sicurezza rexec non è abilitato in Red Hat Linux 7.0. Se volete abilitarlo, dovreste commentare una linea nel file /etc/pam.d/rexec. Ecco un esempio del file (il vostro file può essere differente):

#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
        

Per abilitare rexec, la linea pam_nologin.so non deve essere commentata:

#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_stack.so service=system-auth
#auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
        

Dopo aver modificato il file, rexec verrà abilitato.

NotaNota Bene
 

Se il vostro file /etc/pam.d/rexec contiene una linea di riferimento al modulo pam_securetty.so non potrete accedere a rexec come root. Per fare ciò, dovrete anche rivedere la linea di riferimento al modulo pam_securetty.so.

NotaNota Bene
 

Molti file di configurazione sono stati riscritti per semplificare eventuali modifiche, in modo tale che se si necessita di cambiare la configurazione si modifica un solo file. Questo viene permesso dal file pam_stack che vi permette di effettuare delle chiamate dall'interno di un particolare servizio. Controllate la pagina man di pam_stack per maggiori informazioni.

Ulteriori Informazioni

Questa è solo un'introduzione all'utilizzo di PAM. Maggiori informazioni sono incluse sul vostro sistema nella directory /usr/doc/pam*, compresi: la Guida all'amministrazione del sistema, Il manuale per scrivere un modulo, un Manuale per lo sviluppatore , e lo standard PAM, DCE-RFC 86.0. Inoltre, è disponibile ulteriore documentazione sul sito web di Red Hat, su http://www.redhat.com/linux-info/pam/.