14.4. Esempi di file di configurazione PAM

Di seguito è riportato un file di configurazione PAM di esempio:

#%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 retry=3
password  required  /lib/security/pam_unix.so shadow nullok use_authtok
session   required  /lib/security/pam_unix.so

La prima riga è un commento, come indicato dal carattere # all'inizio della stessa.

Le righe da due a quattro contengono tre moduli da usare per l'autenticazione del login.

auth      required  /lib/security/pam_securetty.so

Questa riga si assicura che se l'utente sta provando a collegarsi come root, la tty che sta utilizzando sia elencata nel file /etc/securetty, se tale file esiste.

auth      required  /lib/security/pam_unix.so shadow nullok

Questa riga chiede all'utente una password, che poi verifica usando le informazioni archiviate in /etc/passwd e, se questo file esiste, /etc/shadow. Il modulo pam_unix.so rileva e utilizza automaticamente le password shadow archiviate in /etc/shadow per autenticare gli utenti. Consultate la Sezione 6.5 per maggiori informazioni sulle password shadow.

L'argomento nullok specifica al modulo pam_unix.so di accettare una password vuota.

auth      required  /lib/security/pam_nologin.so

Questa è la fase finale di autenticazione. Controlla se il file /etc/nologin esiste. Se nologin esiste e l'utente non è root, l'autenticazione non va a buon fine.

NotaNota Bene
 

In questo esempio, tutti e tre i moduli auth vengono controllati, anche se il primo modulo auth non supera la verifica. Questa strategia impedisce all'utente di sapere perché l'autenticazione non è permessa. Se conoscesse il motivo, l'utente riuscirebbe a capire come irrompere nel sistema.

account   required  /lib/security/pam_unix.so

Questa riga effettua, se necessario, una verifica dell'account. Per esempio se le password shadow sono state attivate, il modulo pam_unix.so verifica se l'account è scaduto o se l'utente non ha modificato la password nel periodo stabilito.

password  required  /lib/security/pam_cracklib.so retry=3

Se la password è scaduta, il componente del modulo pam_cracklib.so ne richiede una nuova. Quindi verifica la nuova password per vedere se può essere facilmente indovinata da un programma che ricostruisce le password. Se la verifica non va a buon fine, offre all'utente altre due possibilità per creare una password meno facile, in base all'argomento retry=3.

password  required  /lib/security/pam_unix.so shadow nullok use_authtok

Questa riga specifica che se il programma modifica la password dell'utente, dovrebbe utilizzare il componente password del modulo pam_unix.so per farlo. Succede solo se la porzione auth del modulo pam_unix.so ha stabilito che la password deve essere cambiata — per esempio se una password shadow è scaduta.

L'argomento shadow specifica al modulo di creare password shadow durante l'aggiornamento della password dell'utente.

L'argomento nullok specifica al modulo di consentire all'utente di modificare la password da una password vuota, altrimenti questa viene considerata come un blocco dell'account.

L'argomento finale di questa riga, use_authtok, fornisce un buon esempio di come utilizzare una struttura a stack per i moduli PAM. Questo argomento specifica al modulo di non richiedere all'utente una nuova password. Deve invece accettare qualsiasi password passata dal modulo precedente. In questo modo tutte le nuove password devono passare il controllo pam_cracklib.so per verificare la sicurezza delle password prima di accettarle.

session required /lib/security/pam_unix.so

La riga finale specifica che il componente del modulo di sessione pam_unix.so viene usato per gestire la sessione. Questo modulo registra il nome utente e il tipo di servizio nel file /var/log/messages all'inizio e alla fine di ogni sessione. Può essere supportato da altri moduli di sessione per ottenere una migliore funzionalità.

Nel file di configurazione nell'esempio successivo viene illustrato l'uso del modulo auth per il programma rlogin.

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

Per prima cosa, pam_nologin.so verifica se /etc/nologin esiste. In caso positivo, può collegarsi solo l'utente root.

auth      required    /lib/security/pam_securetty.so

Il modulo pam_securetty.so impedisce quindi i login di root su terminali non sicuri. In questo modo tutti i tentativi rlogin di root sono disabilitati per ragioni di sicurezza.

SuggerimentoSuggerimento
 

Se dovete collegarvi in modo remoto come root, usate OpenSSH. Per maggiori informazioni sul protocollo SSH, consultate il Capitolo 18.

auth      required    /lib/security/pam_env.so

Questa riga carica il modulo pam_env.so, che imposta le variabili d'ambiente specificate in /etc/security/pam_env.conf.

auth      sufficient  /lib/security/pam_rhosts_auth.so

Il modulo pam_rhosts_auth.so quindi autentica l'utente per l'uso di .rhosts nella sua home directory. Se va a buon fine, PAM considera immediatamente che l'autenticazione abbia avuto un esito positivo. Se pam_rhosts_auth.so non riesce ad autenticare l'utente, il tentativo di autenticazione non riuscito viene ignorato.

auth      required    /lib/security/pam_stack.so service=system-auth

Se il modulo pam_rhosts_auth.so non riesce ad autenticare l'utente, il modulo pam_stack.so esegue una regolare autenticazione della password.

L'argomento service=system-auth indica che l'utente deve ora sottoporsi all'autenticazione PAM per l'autorizzazione del sistema in /etc/pam.d/system-auth.

SuggerimentoSuggerimento
 

Se non volete che venga visualizzato il prompt per inserire la password quando securetty fallisce, potete cambiare il modulo pam_securetty.so da required a requisite.