Chi di voi non ha una pennina usb con capacità ridotta e non sa cosa farsene?
Chi vorrebbe mantenere la password di un utente ma non doverla digitare sempre?
Se entrambe le domande vi incuriosiscono seguite questo breve howto.
La risposta risiede in un piccolo pacchetto presente nei repository: pam_usb.
Una volta scaricato ed installato sono pochi i passi che ci separano dalla conclusione.
Inseriamo la nostra pennetta usb e diamo il comando
pamusb-conf --add-device PENNA
dove PENNA sarà il nome che verrà utilizzato da pam_usb per indicare la periferica seguito da "y" ed invio
Please select the device you wish to add.
* Using "SanDisk Cruzer (SanDisk_Cruzer_432032052D920ADB-0:0)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sdh1 (UUID: 9C35-59CF)" (only option)
Name : PENNA
Vendor : SanDisk
Model : Cruzer
Serial : SanDisk_Cruzer_432032052D920ADB-0:0
UUID : 9C35-59CF
Save to /etc/pamusb.conf ?
[Y/n] y
Nel caso siano presenti più dispositivi usb avremo la possibilità di scegliere quella più adatta ai nostri scopi seguito sempre da "y" ed invio.
Please select the device you wish to add.
0) SanDisk Cruzer (SanDisk_Cruzer_432032052D920ADB-0:0)
1) Generic USB SD Reader (Generic_USB_SD_Reader_00000000000006-0:1)
[0-1]: 0
Which volume would you like to use for storing data ?
* Using "/dev/sdh1 (UUID: 9C35-59CF)" (only option)
Name : PENNA
Vendor : SanDisk
Model : Cruzer
Serial : SanDisk_Cruzer_432032052D920ADB-0:0
UUID : 9C35-59CF
Save to /etc/pamusb.conf ?
[Y/n] y
Ora diamo il comando
pamusb-conf --add-user utente
dove utente sarà logicamente l'utente che usufruirà dell'autenticazione pam con usb.
Poichè lo stiamo impostando ex novo, l'unica periferica USB configurata precedentemente sarà la sola scelta possibile.
Which device would you like to use for authentication ?
* Using "PENNA" (only option)
User : utente
Device : PENNA
Save to /etc/pamusb.conf ?
[Y/n] y
Nel caso in cui due o più penne fossero impostate, pam_usb ci darà la possibilità scegliere quale penna associare all'utente.
Which device would you like to use for authentication ?
0) HW_KEY
1) PENNA
[0-1]: 1
User : utente
Device : PENNA
Save to /etc/pamusb.conf ?
[Y/n] y
Ora non ci resta che aggiungere come prima riga nel file /etc/pam.d/system-auth
Così facendo verrà dapprima interpellato pam_usb. Se l'utente non fosse presente o non ci fosse la penna usb delegata a tale compito, sarà comunque possibile autenticarsi alla vecchia maniera.
Controlliamo la configurazione con il nostro editor.
vi /etc/pamusb.conf
<configuration> <defaults> <option name="debug">false</option> <option name="one_time_pad">true</option> </defaults> <devices> <device id="HW_KEY"> <vendor>Generic</vendor> <model>USB SD Reader</model> <serial>Generic_USB_SD_Reader_00000000000006-0:1</serial> <volume_uuid>552a5103-a8b1-437c-9c00-31d542f195d1</volume_uuid> <option name="probe_timeout">15</option> </device> </devices> <users> <user id="tiger"> <device>HW_KEY</device> <agent event="lock">xcalc</agent> <agent event="unlock">xcalc</agent> </user> </users> </configuration>
Nel file di configurazione ho aggiunto alcune opzioni: debug e one_time_pad. La prima impostata su true serve ad ottenere maggiori informazioni per il debug. Una volta che il tutto funziona è meglio impostarla su false. La seconda opzione impostata è one_time_pad (letteralmente "blocco monouso"). Con l'OTP, ad ogni autenticazione, viene generata una nuova chiave per l'autenticazione successiva, in modo che risulti più difficile per un attaccante determinare tale chiave.
Le due opzioni nella sezione user sono gli eventi impostati quando la penna viene connessa e disconnessa.
Le ultime due opzioni indicate vengono usate dal demone pamusb-agent che, se avviato dovrebbe fare quanto indicato. Purtroppo non sono riuscito a farlo funzionare. Se qualcuno riesce me lo faccia sapere.
Ora non ci resta che loggarci con l'utente impostato. Chiede la pw? Se tutto è andato come doveva la risposta è no!