# [TIP] Autologin con stick USB

## otaku

Questo tip spiega come configurare pam in modo da autenticarsi tramite una chiave su una penna usb, o qualsiasi dispositivo di memorizzazione USB

Pagina originale

Innanzi tutto si inizia con l'installare pam_usb:

```
emerge pam_usb
```

Ora si creerà la chiave sulla penna usb:

```
usbadm keygen <mountpoint della stick USB> <username> 2048
```

Si potrà accedere a tutti i programmi che si appoggiano a pam modificando opportuni file di configurazione;

nel tip originale vengono riportati i seguenti programmi:

su

sudo

kdm/gdm

login

Per impostare i programmi che useranno questa autenticazione hardware è sufficiente modificare i relativi file in /etc/pam.d;

inseriremo quindi all'inzio di ogni file:

```
auth       sufficient   pam_usb.so !check_device
```

per un autenticazione opzionale

```
auth       required   pam_usb.so !check_device
```

per un autenticazione obbligatoria

Sul mio notebook ho usato iveman M~ e HAL 0.5.4 anche lui M~ e funziona tutto egregiamente, all'avvio inserisco la chiave, digito il mio nome utente in gdm ed eseguo il login senza alcuna password; cosa molto utile quando

ci si ritrova ad avere password complesse e qualche birra di troppo in corpo, magari in ambienti poco luminosi hehehe  :Wink: 

ci si vuol dare un tono con gli amici windowsiani  :Very Happy: 

si ha poco tempo e bisogna digitare in fretta

varie ed eventuali...

Ieri sera l'ho trovata simpatica come cosa, speriamo si riveli anche utile  :Wink: 

----------

## Tiro

lo provo subito!!!!!!!!!!!  :Smile: 

----------

## Onip

grande TIP, appena ho tempo lo provo

----------

## ogeidix

I miei + grossi complimenti !

era un po' che mi ripromettevo di perdere un po' di tempo su

qualcosa del genere, Grazie Mille !

:: ogeidix

PS: ora il prox passo è al posto di una pennina usb uno stick bluetooh

(con led e pulsante "accetto cedere pwd" )

----------

## federico

Senza il dispositivo e' possibile loggarsi in qualche modo ?

Se perdo la chiave per dire o qualcosa del genere?

Fede

----------

## codadilupo

in genere puoi attaccare l'HD a un'altra macchina e ripigliarti i dati... sempre che tu non abbia anche crittato il filesystem  :Wink: 

Ricordo che FonderiaDigitale aveva usato una cosa di questo tipo (USB+crittazione) per il portatile.

Coda

----------

## otaku

 *federico wrote:*   

> Senza il dispositivo e' possibile loggarsi in qualche modo ?
> 
> Se perdo la chiave per dire o qualcosa del genere?
> 
> Fede

 

bash richiede comunque una password per il login, così nessuno può entrare da remoto (a meno che non sia permesso da {x,g,k}dm)

il login può essere fatto sia con pass e chiave o unicamente con la chiave.. anche se la prima mi sembra la più appropriata... per un notebook almeno

----------

## gutter

 *federico wrote:*   

> Senza il dispositivo e' possibile loggarsi in qualche modo ?
> 
> 

 

Si, puoi sempre specificare di autenticarti con la chiave e alternativamente con una password.

----------

## X-Drum

https://forums.gentoo.org/viewtopic-t-207124-highlight-pamusb.html

----------

## Atomikramp

l'articolo è molto interessante....

ma secondo me sarebbe + utile dover digitare la password anzichè lo username

poichè per convenzione lo username è pubblico ma è la password ad essere segreta

lo smarrimento del token da parte dell'utente potrebbe compromettere seriamente la sicurezza dei dati contenuti sul profilo

se invece il token rappresentasse lo username e poi si dovesse digitare la password per confermare il login allora la sicurezza sarebbe maggiore

in quanto sarebbe necessario possedere il token, ma bisognerebbe conoscere anche la password

il principio in questo caso sarebbe simile a quello dei bancomat per intenderci.

----------

## X-Drum

puoi adoperare pam_usb anche a tale scopo

----------

## federico

Cavoli ma sapete che non riesco a farlo funzionare?  :Sad: 

Ho emerso pam_usb e in qualche modo il mio sistema monta automaticamente la chiavetta in /mnt/chiavetta quando la inserisco. Da root ho dato

```

altair ~ # usbadm keygen /mnt/chiavetta/ blackman 2048

[!] Directory /home/blackman/.auth/ not found, creating one...

[!] Directory /mnt/chiavetta//.auth/ not found, creating one...

[!] Generating 2048 DSA key pair for blackman@altair

[!] Extracting private key...

[+] Private key extracted.

[+] Private key successfully written.

[!] Writing public key...

[+] Public key successfully written.

```

e poi ho modificato il file /etc/pam.d/su in questo modo

```

#%PAM-1.0

auth       required     pam_usb.so !check_device

auth       sufficient   pam_rootok.so

# If you want to restrict users begin allowed to su even more,

# create /etc/security/suauth.allow (or to that matter) that is only

```

Ho aperto una console di utente, ho dato su, e mi da sempre errore. Ho provato a cambiare required con sufficient e funziona con e senza chiavetta (al che mi domando a cosa serva...) mentre con required non va mai, ne' con ne' senza (noto che la chiavetta non lampeggia, forse neanche vi accede il sistema).

Ho controllato che i files di autorizzazione fossero stati creati correttamente e fossero leggibili da utente e da root, e mi pare tutto ok, mi domando sinceramente come cavolo fa pam_usb a sapere su quale dispositivo deve andare a leggere i dati...

Fede

----------

## otaku

serve anche

```
usbadm keygen /mnt/chiavetta/ root 2048
```

----------

## federico

 *otaku wrote:*   

> serve anche
> 
> ```
> usbadm keygen /mnt/chiavetta/ root 2048
> ```
> ...

 

Sembra non bastare a risolvere il problema, vedo se riesco a capire come funziona sto sistema, e da cosa dipende il fatto che lui legga o meno le pass sul dispositivo..

----------

## FonderiaDigitale

 *otaku wrote:*   

>  cosa molto utile quando
> 
> ci si ritrova ad avere password complesse e qualche birra di troppo in corpo, magari in ambienti poco luminosi hehehe 
> 
> ci si vuol dare un tono con gli amici windowsiani 
> ...

 

aggiungerei

si e' in ambienti ostili, o sul lavoro, e non si vuol farsi vedere digitando password

non si e' sicuri che non siano presenti keyloggers sulla macchina su cui si sta scrivendo

----------

## X-Drum

 *FonderiaDigitale wrote:*   

> 
> 
> [*]si e' in ambienti ostili, o sul lavoro, e non si vuol farsi vedere digitando password

 

esatto, quoto ho iniziato ad usarlo per questo motivo

----------

## neon

Grazie a http://www.pamusb.org/ e' possibile utilizzare chiavi DSA conservate su semplici pendrive USB per effettuare l'autenticazione con PAM sul proprio sistema.

1) Installazione

Tutto quello di cui abbiamo bisogno lo possiamo trovare in portage:

```
* sys-auth/pam_usb 

     Available versions:  ~0.3.1 ~0.3.2

     Installed:           none

     Homepage:            http://www.pamusb.org/

     Description:         A PAM module that enables authentication using an USB-Storage device (such as an USB Pen) through DSA private/public keys.
```

il pacchetto e' masked quindi bisogna aggiungerlo in /etc/portage/package.keywords

```
# login con chiavi DSA da usb

sys-auth/pam_usb
```

Ora possiamo emergere il pacchetto:

```
# emerge pam_usb
```

2) Creare le chiavi necessarie

Assicuratevi che il vostro pendrive sia montato ed accessibile dal vostro utente. Il mio e' montato in /mnt/pendrive con un FS vfat ed ha come device /dev/sda1

Per creare le chiavi utilizzate:

```
$ usbadm keygen [/path/della/dir/del/pendrive/] [user] [bits]

[!] Directory /home/[user]/.auth/ not found, creating one...

[!] Directory [/path/della/dir/del/pendrive/]/.auth/ not found, creating one...

[W] Cannot chown u(0) g(0) the directory [/path/della/dir/del/pendrive/]/.auth/

[!] Generating 1024 DSA key pair for [user]@[host]

[!] Extracting private key...

[+] Private key extracted.

[+] Private key successfully written.

[!] Writing public key...

[+] Public key successfully written.
```

Dove user e' il vostro utente e bits e' la grandezza della chiave che volete generare. Il warning di chown e' normale su di un filesystem vfat, se il vostro filesystem supporta i permessi non dovreste riceverlo.

ATTENZIONE: la directory .auth deve trovarsi nella root del pendrive e non in una sottocartella perche' e' li' che verra' cercata al login.

3) Modalita' di pam_usb

Vi ricordo che pam_usb puo' funzionare in 3 modalita':

Unique: Puoi effettuare il login solamente utilizzando

il tuo pendrive USB, se non e' presente non e' possibile effettuare il login.

Alternative: Inserire il pen drive e' sufficiente ad effettuare il login.

Se non e' presente viene presentato il solito prompt per effettuare il

login manuale.

Additional: Per effettuare il login bisogna inserire il pen drive e

successivamente digitare la password al prompt.

In particolare io spiego come usarlo in come Alternative ma modificando i file in /etc/pam.d/ in maniera simile a come indicato qui non dovrebbe essere troppo difficile configurarlo diversamente.

4) Sistemiamo il nostro /etc/pam.d/

Creiamo un file di log:

```
# touch /var/log/pam_usb.log
```

Editiamo /etc/pam.d/system-auth in modo da inserire la seguente riga:

```
auth       sufficient   pam_usb.so !check_device force_device=/dev/sda1 fs=vfat debug=1 log_file=/var/log/pam_usb.log
```

in questa posizione:

```
auth       required     pam_env.so

auth       sufficient   pam_usb.so !check_device force_device=/dev/sda fs=vfat debug=1 log_file=/var/log/pam_usb.log

auth       sufficient   pam_unix.so likeauth nullok

[...]

```

!check_device serve a far funzionare pam_usb con i kernel 2.6 (anche se la nuova versione 0.3.3 non in portage non ha bisogno di questa opzione)

force_device=/dev/sda1 indica il device da usare

fs=vfat il tipo di filesystem del pendrive

Le altre due sono abbastanza esplicative, se non volete logging potete anche toglierle

5) Fine

Ora dovreste essere in grado di loggarvi semplicemente inserendo il pendrive ed immettendo il vostro nome utente al login.

Non sono al corrente di quanto questo metodo possa essere sicuro, personalmente lo utilizzo per comodita' e soprattutto perche' lo volevo provare  :Wink: 

Resta una simpatica alternativa al lettore di impronte digitali.

edit: Dimenticavo, volendo si potrebbe configurare udev in modo da riconoscere il proprio pendrive ed assegnargli una particolare device (per evitare che con 2 pendrive connessi ci possano essere problemi)

bye

----------

## Luca89

Io farei un merge con questa qua, visto che trattano dello stesso argomento. Così si ha una guida più completa senza doppioni.

----------

## neon

 :Sad: 

e dire che prima di farla avevo cercato pam_usb sul forum non trovando quella discussione... mannaggia...

----------

## simone-27

Ma....sono l unico che dando:

```
usbadm keygen [/path/della/dir/del/pendrive/] [user] [bits]
```

riceve un bel:

```
bash: usbadm: command not found
```

 :Question:   :Question:  Grazie...

----------

## Kernel78

 *simone-27 wrote:*   

> Ma....sono l unico che dando:
> 
> ```
> usbadm keygen [/path/della/dir/del/pendrive/] [user] [bits]
> ```
> ...

 

No, penso che lo dia anche a tutti quelli che non hanno installato pam_usb  :Laughing:  

```
# qlist pam_usb

/etc/hotplug.d/default/pamusb.hotplug

/etc/pam.d/usbhotplug

/etc/pam_usb/handlers/xlock.sh

/etc/pam_usb/hotplug.conf

/lib/security/pam_usb.so

/usr/bin/usbhotplug

/usr/bin/usbadm

/usr/share/doc/pam_usb-0.3.2/AUTHORS.bz2

/usr/share/doc/pam_usb-0.3.2/README.bz2

/usr/share/doc/pam_usb-0.3.2/Changelog.bz2

/usr/share/man/man1/usbadm.1.bz2

```

----------

## simone-27

ma pam_usb è installato!!!

```
localhost simone # emerge -s pam_usb

Searching...

[ Results for search key : pam_usb ]

[ Applications found : 1 ]

*  sys-auth/pam_usb

      Latest version available: 0.4.0

      Latest version installed: 0.4.0

      Size of files: 31 kB

      Homepage:      http://www.pamusb.org/

      Description:   pam_usb provides hardware authentication for Linux using ordinary USB Flash Drives.

      License:       GPL-2

```

A quanto pare nella versione 0.4.0 non c'è più!!!

```
localhost simone # qlist pam_usb

/usr/bin/pamusb-check

/usr/bin/pamusb-conf

/usr/bin/pamusb-agent

/usr/share/doc/pam_usb-0.4.0/QUICKSTART

/usr/share/doc/pam_usb-0.4.0/CONFIGURATION

/usr/share/doc/pam_usb-0.4.0/UPGRADING

/usr/share/doc/pam_usb-0.4.0/FAQ

/usr/share/doc/pam_usb-0.4.0/ChangeLog.bz2

/usr/share/man/man1/pamusb-conf.1.bz2

/usr/share/man/man1/pamusb-agent.1.bz2

/usr/share/man/man1/pamusb-check.1.bz2

/etc/pamusb.conf

/lib/security/pam_usb.so

```

----------

## Kernel78

Hai provato a leggerti questi file

```
/usr/share/doc/pam_usb-0.4.0/QUICKSTART

/usr/share/doc/pam_usb-0.4.0/CONFIGURATION

/usr/share/doc/pam_usb-0.4.0/UPGRADING

/usr/share/doc/pam_usb-0.4.0/FAQ

/usr/share/doc/pam_usb-0.4.0/ChangeLog.bz2 
```

non dicono nulla a riguardo ?

----------

## simone-27

si trovato...dicono di fare cosi:

```
pamusb-conf --add-device /dev/sdf1 

pamusb-conf --add-user simone
```

e poi di testare se tutto è andato a buon fine con:

```
pamusb-check simone
```

che mi restituisce i siguenti errori:

```
* Authentication request for user "simone" (pamusb-check)

* Device "/dev/sdf1" is connected (good).

* Performing one time pad verification...

* Verification match, updating one time pads...

* Unable to change owner of the pad: Operation not permitted  <===questo

* Unable to update pads.  <===questo

* Access granted.
```

a che sono dovuti?  :Embarassed: 

----------

## 102376

è possibile fare il login direttamente da kdm??? senza usare la shell??

----------

## 102376

figata ho trovato spulciando in rete http://pam.0xdef.net/doc.html

autentificazione tramite il cellulare presumo. carino

oppure tramite impronta digitale

sys-auth/pam_bioapi [ Masked ]

      Latest version available: 0.2.1-r1

      Latest version installed: [ Not Installed ]

      Size of files: 186 kB

      Homepage:      http://www.qrivy.net/~michael/blua/

      Description:   PAM interface for biometric auth

      License:       GPL-2

----------

## lavish

Fatto il merge dell'howto scritto da neon con il precedente  :Wink: 

----------

## X-Drum

 *zocram wrote:*   

> figata ho trovato spulciando in rete http://pam.0xdef.net/doc.html
> 
> autentificazione tramite il cellulare presumo. carino
> 
> 

 

yes, autenticazione tramite cellulare e bluetooth (in genere)

c'è un ebuild sull'overlay sunrise se vuoi provarlo, lo hanno da poco aggiunto.

----------

## l1q1d

Scusate c'è un modo per farlo anche via lettore di mmc/sd?

Avendo io il lettore integrato, nn mi viene caricato come sd* ma come /dev/mmc*, è possibile farlo lo stesso?

----------

