Autenticazione via token con PAM USB: differenze tra le versioni
Riga 39: | Riga 39: | ||
È possibile anche disabilitarlo solo per alcuni utenti e solo per alcuni servizi. | È possibile anche disabilitarlo solo per alcuni utenti e solo per alcuni servizi. | ||
Ora ''pamusb'' è configurato, resta da modificare soltanto il comportamento dei file di configurazione di PAM affinché il modulo sia richiamato | Ora ''pamusb'' è configurato, resta da modificare soltanto il comportamento dei file di configurazione di PAM affinché il modulo sia richiamato. | ||
Se si desidera conoscerne il funzionamento si consideri il seguente | Con privilegi di amministratore e il nostro editor preferito creiamo il file ''/usr/share/pam-configs/usb'', seguendo una delle policy presentate nelle sezioni successive. | ||
=== Creazione di un profilo === | |||
Se si desidera conoscerne il funzionamento si consideri il seguente profilo per il file creato | |||
<pre>Name: USB authentication | <pre>Name: USB authentication | ||
Riga 62: | Riga 66: | ||
Modalità di autenticazione che prevede la richiesta di password soltanto se il token USB non è inserito. È possibile permetterla soltanto a un insieme limitato di utenti, visto che il fallimento dell'autenticazione via USB non compromette l'autenticazione, ma porta solo alla richiesta della password. | Modalità di autenticazione che prevede la richiesta di password soltanto se il token USB non è inserito. È possibile permetterla soltanto a un insieme limitato di utenti, visto che il fallimento dell'autenticazione via USB non compromette l'autenticazione, ma porta solo alla richiesta della password. | ||
Questo il | Questo il profilo da creare: | ||
<pre>Name: USB authentication | <pre>Name: USB authentication | ||
Riga 77: | Riga 81: | ||
{{Warningbox | Tutti gli utenti dovranno essere aggiunti a una pendrive USB - root compreso se abilitato! - o non potranno più autenticarsi al sistema, dato che la password non sarà più sufficiente. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | {{Warningbox | Tutti gli utenti dovranno essere aggiunti a una pendrive USB - root compreso se abilitato! - o non potranno più autenticarsi al sistema, dato che la password non sarà più sufficiente. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | ||
Il | Il profilo sarà: | ||
<pre>Name: USB authentication | <pre>Name: USB authentication | ||
Riga 93: | Riga 97: | ||
{{Warningbox | Tutti gli utenti dovranno essere aggiunti a una pendrive USB - root compreso se abilitato! - o non potranno più autenticarsi al sistema, dato che la password non verrà proprio richiesta. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | {{Warningbox | Tutti gli utenti dovranno essere aggiunti a una pendrive USB - root compreso se abilitato! - o non potranno più autenticarsi al sistema, dato che la password non verrà proprio richiesta. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | ||
Il | Il profilo: | ||
<pre>Name: USB authentication | <pre>Name: USB authentication | ||
Riga 110: | Riga 114: | ||
{{Warningbox | L'utente root deve essere aggiunto a una pendrive o non potrà più autenticarsi al sistema, dato che la password da sola non sarà sufficiente. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | {{Warningbox | L'utente root deve essere aggiunto a una pendrive o non potrà più autenticarsi al sistema, dato che la password da sola non sarà sufficiente. In caso di problemi per bypassare il modulo l'unico modo sarà durante l'avvio, scegliendo la modalità singolo utente messa a disposizione da ''grub''.}} | ||
Profilo risultante: | |||
<pre>Name: USB authentication | <pre>Name: USB authentication |
Versione delle 08:59, 24 nov 2011
Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.
Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template. |
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
L'autenticazione a un servizio del sistema, che si tratti del login a una console o un display manager oppure di una qualunque operazione per cui siano necessari determinati privilegi (su, sudo, ecc... ), è gestita in maniera centralizzata dalla libreria PAM e solitamente effettuata mediante la richiesta di una parola chiave segreta (password) associata all'utente.
PAM presenta tuttavia un'architettura molto flessibile, che può essere estesa da altri moduli software. In particolare libpam-usb consente l'autenticazione via token grazie a una pendrive su porta USB, sulla quale verrà conservata una one-time password aggiornata a ogni nuova autenticazione. Il modulo una volta installato può essere configurato in modo sia da rappresentare un ulteriore requisito per l'autenticazione, sia da sostituire la richiesta di password per una maggiore comodità.
L'uso combinato di due diverse forme di autenticazione è molto diffuso in ambienti professionali dove la sicurezza ricopre un'importanza critica, e l'uso di libpam-usb e di una comune chiavetta USB possono rappresentare una soluzione molto economica e alla portata di tutti.
Per maggiori dettagli riguardo PAM e libpam-usb rimando all'articolo di pmate e Aki uscito nel numero 4 dell'e-zine. In questa guida vedremo solo come cambiare il comportamento di tutto ciò che si appoggia a tale libreria, in modo consistente anche in presenza di aggiornamenti del sistema o uso di altri moduli, senza mai modificare direttamente i file nella directory /etc/pam.d, anche se così si rinuncia a una maggiore possibilità di personalizzazione.
Installazione
Per iniziare è sufficiente installare due pacchetti:
# apt-get install libpam-usb pamusb-tools
L'unico altro requisito è la disponibilità di una penna USB, nella quale verranno salvate le password richieste per l'autenticazione nella sessione successiva. Si può utilizzare la stessa per più utenti, anche se la cosa ha senso unicamente se a tali utenti del sistema corrisponde un unico utente fisico, e anche per più utenti di più sistemi, purché con hostname diverso (e per cui ancor più vale la stessa considerazione).
Configurazione
Inserire la pendrive nella porta USB e darle un nome che ci consenta di identificarla, inserendolo al posto di NOME:
# pamusb-conf --add-device="NOME"
Verrà richiesta una conferma e si potrà scegliere una qualunque tra le memorie USB collegate, che sarà aggiunta al file /etc/pamusb.conf.
Aggiungere gli utenti del sistema che si desidera autenticare tramite il dispositivo, ripetendo il seguente comando per ciascuno di loro (con il relativo nome utente al posto di NOME_UTENTE):
# pamusb-conf --add-user="NOME_UTENTE"
Nuovamente verrà richiesta una conferma, e in caso si siano aggiunte più chiavette si potrà scegliere quale associare all'utente scelto. Per una guida passo-passo alla configurazione si veda al solito l'e-zine.
Se si desidera disabilitare l'output, che in caso di autenticazione via console o terminale rende chiaro se il modulo USB è stato autenticato o meno, modificare i defaults nel file /etc/pamusb.conf, aggiungendoci la riga con quiet:
<defaults> <quiet>true</quiet> </defaults>
È possibile anche disabilitarlo solo per alcuni utenti e solo per alcuni servizi.
Ora pamusb è configurato, resta da modificare soltanto il comportamento dei file di configurazione di PAM affinché il modulo sia richiamato.
Con privilegi di amministratore e il nostro editor preferito creiamo il file /usr/share/pam-configs/usb, seguendo una delle policy presentate nelle sezioni successive.
Creazione di un profilo
Se si desidera conoscerne il funzionamento si consideri il seguente profilo per il file creato
Name: USB authentication Default: yes Priority: 257 Auth-Type: Primary Auth: sufficient/required pam_usb.so
dove:
- la prima riga serve per l'identificazione;
- Default indica se il modulo di default è abilitato (l'impostazione manuale effettuata con pam-auth-update ha priorità su quella di default, ma se non si cambia nulla verrà mantenuta questa) e lo imposteremo sempre su yes;
- Priority determina l'ordine in cui verrà caricato il modulo, seguendo un ordinamento decrescente. Considerando che pam_unix.so che si occupa dell'autenticazione locale mediante richiesta di password ha priorità 256, 257 andrà bene se si vuole che venga richiamato prima il modulo pamusb mentre 255 altrimenti. In questa guida verrà usato quasi sempre 257;
- Auth-Type può essere Primary o Additional. Nel primo caso viene eseguito solo se l'autenticazione non è già stata provvista da un altro modulo (purché sufficiente), nel secondo a prescindere ma non contribuirà all'esito dell'autenticazione. Le priorità tra i due tipi sono risolte separatamente e per i nostri usi andrà sempre bene Primary;
- infine Auth indica se considerare l'autenticazione del modulo sufficiente (con sufficient) se tutti quelle con priorità maggiore non falliscono, oppure se considerarla un requisito necessario (con required) e richiama il modulo pam_usb.so (eventualmente passandoci anche dei parametri). È la parte più importante e quella che siamo interessati a modificare.
Alternative mode
Modalità di autenticazione che prevede la richiesta di password soltanto se il token USB non è inserito. È possibile permetterla soltanto a un insieme limitato di utenti, visto che il fallimento dell'autenticazione via USB non compromette l'autenticazione, ma porta solo alla richiesta della password.
Questo il profilo da creare:
Name: USB authentication Default: yes Priority: 257 Auth-Type: Primary Auth: sufficient pam_usb.so
Additional mode
Modalità che prevede la richiesta contemporanea di password e l'inserimento della penna USB.
Il profilo sarà:
Name: USB authentication Default: yes Priority: 257 Auth: required pam_usb.so
Unique mode
Modalità che prevede soltanto l'autenticazione via token USB.
Il profilo:
Name: USB authentication Default: yes Priority: 511 Auth-Type: Primary Auth: requisite pam_usb.so sufficient pam_permit.so
Si è impostata una priorità molto maggiore, visto che deve sostituire ogni altra forma di autenticazione locale (che devono avere priorità inferiore a 512). La riga requisite richiede l'uso di token USB e la procedura di autenticazione si interrompe se questa fallisce. L'ultima riga è quindi eseguita soltanto se ciò non accade e, dato che pam_permit.so è un modulo che permette sempre l'accesso, l'esecuzione di tutte le altre regole dello stack è saltata.
Custom mode
Modalità personalizzata, che consente l'uso di una modalità Alternative o Additional a seconda dell'utente. Quella qui presentata richiede entrambe le forme di autenticazione per root, mentre una qualsiasi per gli altri utenti.
Profilo risultante:
Name: USB authentication Default: yes Priority: 257 Auth-Type: Primary Auth: [success=1 default=ignore] pam_succeed_if.so uid > 0 [success=1 default=bad ] pam_usb.so sufficient pam_usb.so
pam_succeed_if.so è un modulo che ha successo unicamente se la condizione è soddisfatta, e chiaramente uid è uguale a zero soltanto per l'utente root, mentre è maggiore per tutti gli altri. Al posto di sufficient e required si è impostata una policy più complessa, e per un'analisi più dettagliata si rimanda alla pagina di manuale (man pam.d), nella quale in caso di fallimento del modulo non succede niente (default=ignore) ma se la condizione è soddisfatta vengono saltate un certo numero di righe (success=N).
Quindi un utente normale soddisferà la prima condizione (uid > 0) e salterà una riga (success=1), eseguendo direttamente l'ultima che coincide con la Alternative mode. Al contrario root leggerà la seconda riga, corrispondente alla policy per la Additional mode; infatti in caso di successo salterà la terza riga e passerà ai moduli di priorità inferiore (la richiesta di password) mentre in tutti gli altri casi l'autenticazione fallirà (default=bad). Impostare default=die in luogo di default=bad se si vuole far capire all'utente che il fallimento è dovuto alla mancata autenticazione USB.
Salvare la configurazione
Per rendere effettive le modifiche, una volta scelta la policy più adatta per le nostre esigenze o creata una personalizzata, sarà sufficiente eseguire il seguente comando:
# pam-auth-update
Se è deselezionata, spuntare la casella di "USB authentication", lasciare le altre come sono e confermare su "Ok". Verranno rigenerati i file con prefisso "common-" nella directory /etc/pam.d, richiamati da (quasi) tutti gli altri file di configurazione.
Test di funzionamento
Per controllare se abbiamo fatto giusto, usiamo pamusb-check e il nome utente da verificare al posto di NOME_UTENTE:
# pamusb-check NOME_UTENTE
Se abbiamo disabilitato l'output non restituirà niente a schermo, controlliamo allora il suo valore di uscita (0 significa tutto ok, qualunque altro valore che l'autenticazione è fallita) eseguendo questo comando subito dopo il precedente, dato che restituisce il valore di ritorno dell'ultimo comando eseguito:
echo $?
Proviamo tutti gli utenti, e in particolare root se utilizziamo una modalità diversa dall'Alternative.
Disattivazione
È sufficiente eseguire pam-auth-update e deselezionare il modulo "USB authentication":
# pam-auth-update
Poi dare l'Ok.
Disinstallazione
Per eliminare i pacchetti installati dal sistema è prima necessario rimuovere il file /usr/share/pam-configs/usb che è stato creato in fase di configurazione e aggiornare PAM, in modo che pamusb non sia più richiamato nelle prossime autenticazioni:
# rm /usr/share/pam-configs/usb # pam-auth-update
Soltanto poi sarà possibile disinstallarlo dal sistema:
# apt-get remove pamlib-usb pamusb-tools
Per eliminare tutte le configurazioni:
# apt-get purge pamlib-usb pamusb-tools
Infine per completare l'opera di pulizia del sistema si può eliminare manualmente anche la directory .pamusb nella home di tutti gli utenti aggiunti a questo modulo.
Fonti e link aggiuntivi
- Sito ufficiale del modulo pamusb
- Articolo sull'e-zine n. 4 di debianizzati
- Blog di Muflone
- Wiki di configurazione di un modulo PAM