ABSOLUTELY NO WARRANTY | free software

Login sin password con pam-usb usando un pendrive

Author: OSiUX
url:osiux@osiux.com.ar
Date: 26/02/2009
url:http://blog.osiux.com/login-sin-passwords-con-pam-usb

Si estás cansado de tipear tu password para acceder al equipo, cada vez que usas sudo o para activar el protector de pantallas con contraseña, una solución extremadamente simple es usar un pendrive usb como llave de seguridad.

Si usas debian o algún derivado estos son los paquetes:

root@branca:~# apt-cache search pam | grep usb
libpam-usb - PAM module for authentication with removable USB block devices
pamusb-tools - helper tools for the pam-usb module

Instalar ambos paquetes:

root@branca:~# aptitude install libpam-usb pamusb-tools

Conectar el pendrive y verificar que se detecte correctamente:

root@branca:~# lsusb
Bus 005 Device 004: ID 13fe:1d00 Kingston Technology Company Inc. DataTraveler 2

Agregar el pendrive como dispositivo con un nombre:

root@branca:~# pamusb-conf --add-device k2g
Please select the device you wish to add.
* Using "Kingston DataTraveler 2.0 (Kingston_DataTraveler_2.0_5B7411B0A9E7-0:0)" (only option)

Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: 494F-00D6)" (only option)

Name : k2g
Vendor : Kingston
Model : DataTraveler 2.0
Serial : Kingston_DataTraveler_2.0_5B7411B0A9E7-0:0
UUID : 494F-00D6

Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Agregar el usuario asociado al pendrive:

root@branca:~# pamusb-conf --add-user osiris
Which device would you like to use for authentication ?
* Using "k2g" (only option)

User : osiris
Device : k2g

Save to /etc/pamusb.conf ?
[Y/n] Y
Done.

Chequear que la autenticación funcione:

root@branca:~# pamusb-check osiris
* Authentication request for user "osiris" (pamusb-check)
* Device "k2g" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.

Definir el método de autentificación:

root@branca:~# vi /etc/pam.d/common-auth

auth sufficient pam_usb.so
auth required pam_unix.so nullok_secure

Verificar archivo de configuración global:

root@branca:~# vi /etc/pamusb.conf

<?xml version="1.0" ?>
<configuration>
<devices>
<device id="k2g">
<vendor>
Kingston
</vendor>
<model>
DataTraveler 2.0
</model>
<serial>
Kingston_DataTraveler_2.0_5B7411B0A9E7-0:0
</serial>
<volume_uuid>
494F-00D6
</volume_uuid>
</device></devices>
<users>
<user id="osiris">
<device>
k2g
</device>
<option name="quiet">true</option>
<agent event="lock">gnome-screensaver-command --activate</agent>
<agent event="unlock">gnome-screensaver-command -deactivate</agent>
</user></users>
</configuration>

La sección agent event es usada para bloquear el equipo con sólo quitar el pendrive y se activa el screensaver, luego para activarlo nuevamente es necesario conectar el pendrive. Para esto es necesario que el agente este corriendo:

osiris@branca:~$ pamusb-agent
pamusb-agent[10148]: pamusb-agent up and running.
pamusb-agent[10148]: Watching device "k2g" for user "osiris"
pamusb-agent[10148]: Device "k2g" has been removed, locking down user "osiris"...
pamusb-agent[10148]: Running "gnome-screensaver-command --activate"
pamusb-agent[10148]: Locked.
pamusb-agent[10148]: Device "k2g" has been inserted. Performing verification...
pamusb-agent[10148]: Executing "/usr/bin/pamusb-check --quiet --config=/etc/pamusb.conf --service=pamusb-agent osiris"
pamusb-agent[10148]: Authentication succeeded. Unlocking user "osiris"...
pamusb-agent[10148]: Running "gnome-screensaver-command -deactivate"

Es posible segurizar aun más el acceso de varias maneras, información detallada en http://pamusb.org.