Usare una penna usb per autenticarsi

Sab, 24/04/2010 - 15:52

Usare una penna usb per autenticarsi

Inviato da koko82 0 commenti

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.

Da questo momento in poi userò la mia penna come prova. Logicamente voi non troverete il mio UUID, la mia partizione e le mie impostazioni. Le allego solo per maggior chiarezza.

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

[root@mandriva ~]# pamusb-conf --add-device PENNA
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.

[root@mandriva ~]# pamusb-conf --add-device PENNA
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.

[root@mandriva ~]# pamusb-conf --add-user utente
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.

[root@mandriva ~]# pamusb-conf --add-user 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

auth sufficient pam_usb.so

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>
&nbsp; <defaults>
&nbsp;&nbsp;&nbsp; <option name="debug">false</option>
&nbsp;&nbsp;&nbsp; <option name="one_time_pad">true</option>
&nbsp; </defaults>
 
&nbsp; <devices>
&nbsp;&nbsp;&nbsp; <device id="HW_KEY">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <vendor>Generic</vendor>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <model>USB&nbsp; SD Reader</model>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <serial>Generic_USB_SD_Reader_00000000000006-0:1</serial>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <volume_uuid>552a5103-a8b1-437c-9c00-31d542f195d1</volume_uuid>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <option name="probe_timeout">15</option>
&nbsp;&nbsp;&nbsp; </device>
&nbsp; </devices>
 
&nbsp; <users>
&nbsp;&nbsp;&nbsp; <user id="tiger">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <device>HW_KEY</device>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <agent event="lock">xcalc</agent>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <agent event="unlock">xcalc</agent>
&nbsp;&nbsp;&nbsp; </user>
&nbsp; </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!


In: