Categories: Linux

Autenticazione Modulare con Linux-PAM

Sin dalla nascita dei primi sistemi UNIX l’autenticazione si basava su una password che l’utente doveva inserire nel sistema per poi essere confrontata con una crittografata nel file /etc/passwd, questo metodo di autenticazione permetteva di avere la certezza dell’identità dell’utente per corrispondenza tra le due password. Successivamente  con l’incremento della velocità di elaborazione dei computer e la larga diffusione delle reti, rese questo sistema vulnerabile e non più applicabile. La limitazione di questo metodo consiste nella necessità di aggiornare tutti i programmi ogni volta che il sistema di autenticazione veniva modificato, PAM ( Pluggable Authentication Modules ) è un sistema di librerie condivise che consente all’amministratore di scegliere il metodo di autenticazione degli utenti da parte delle applicazioni.
Linux-PAM permette di sviluppare programmi indipendenti dal metodo, questi si avvalgono dei moduli di autenticazione che dipendono dalle impostazioni locali del sistema e che sono, quindi, configurabili dall’amministratore. L’applicazione può essere configurata localmente attraverso il file di configurazione /etc/pam.conf oppure con una serie di moduli posti nella directory /etc/pam.d che si avvalgono di una serie di moduli posti di solito nella directory /usr/lib/security. I moduli nei file di configurazione gestiscono quattro operazioni:

  • authentication management o gestione dell’autenticazione
  • account management o gestione dell’accesso
  • session management o gestione della sessione
  • password management o gestione delle password

Per quanto riguarda il metodo di configurazione di file in una directory, il più utilizzato, il nome dei file di configurazione per ogni servizio PAM ereditano il nome del servizio stesso, avremo quindi ftpd, rlogind, su, ecc. Esiste tuttavia un nome di servizio speciale OTHER riservato ai meccanismi non esplicitamente configurati, cioé per i quali non esiste un file di configurazione nella directory. Ciascun file di configurazione è costituito da linee del tipo:

tipo_di_modulo flag_di_controllo percorso_del_modulo argomenti

Esistono quattro tipi di modulo ciascuno associato alle quattro operazioni citate in precedenza:

  • auth – stabilisce l’identità dell’utente richiedendo una password all’applicazione.
  • account – non esegue autenticazione, ma gestisce l’accesso, usato per permettere o inibire l’autorizzazione ad un servizio.
  • session – si occupa delle operazioni da compiere prima o dopo che sia dato un servizio all’utente, per esempio registrare log, mounting di directory od altro di questo tipo.
  • password – si occupa di aggiornare l’oggetto di autenticazione associato all’utente, può essere la password oppure un’operazione matematica. Solitamente esiste uno di questi moduli per ciascun auth basato su domanda e risposta.

I flag di controllo specificano come la libreria PAM dovrà reagire al successo o fallimento di un modulo a cui è associata. Il formato più semplice prevede l’uso di una delle seguenti parole chiave:

  • required – indica che il modulo deve avere successo per la riuscita della pila di moduli dello stesso tipo.
  • requisite – differisce dal precedente in quanto al fallimento del modulo il controllo viene affidato all’applicazione.
  • sufficient – il successo di questo modulo è giudicato sufficiente perché la libreria Linux-PAM stabilisca che questo tipo di modulo ha avuto successo.
  • optional – indica che il modulo non è critico per il successo o fallimento della pila.

Il percorso del modulo indica il nome del percorso del file oggetto dinamicamente caricabile, mentre gli argomenti sono una lista di elementi passati al modulo quando viene invocato, tra le più comuni abbiamo: debug per registrare informazioni di debugging, no_warn per non mandare segnali di allerta all’applicazione, use_first_pass, try_first_pass ed altri.
Veniamo ad un esempio concreto:

# /etc/pam.d/ftp
auth sufficient /usr/lib/security/pam_ftp.so
auth required /usr/lib/security/pam_unix.so use_first_pass
auth required /usr/lib/security/pam_listfile.so \
     onerr=succeed item=user sense=deny file=/etc/ftpusers

Il modulo pam_ftp gestisce solo operazioni di authentication management, in particolare intercetta il nome e la password dell’utente, essendo con flag sufficient, il successo di tale modulo consente di ignorare i moduli auth seguenti. Il modulo pam_unix si avvale delle librerie standard di sistema per ottenere le informazioni per l’autenticazione, di solito contenute in /etc/passwd o /etc/shadow. L’uso di use_first_pass inibisce la richiesta  della password e forza l’uso di quella ottenuta con il modulo pam_ftp. Il modulo pam_listfile cerca un’istanza contenuta nell’opzione item ( in questo caso user ) nel file /etc/ftpusers negando sense=deny l’autorizzazione ( in pratica tutti gli utenti contenuti nel file non possono autenticarsi ).
Se il sistema sul quale si lavora è costituito da un solo utente, l’uso di PAM non sembra offrire grossi vantaggi, però su di un server Linux ci sono diversi servizi in cui PAM può svolgere un ruolo egregio, in particolare mediante l’uso dei moduli. Purtroppo non tutti i programmi sono compatibili con PAM, ma occorre aggiungere il supporto e tale opportunità è possibile solo avendo a disposizione i sorgenti del programma stesso, cosa che in Linux, essendo open source, è decisamente probabile.

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago