Actualmente me estaba preguntando como lograr un poco más de seguridad en mi sistema de autenticación de GNU/Linux, pero a la vez dar un poco de versatilidad al asunto; llegado al caso, me planteé que un Pendrive debería almacenar los datos de mi usuario, y así, al insertar el pendrive en mi equipo, el sistema detecte que soy yo y me permita ingresar a mi cuenta; al principio me reía imaginándome lo loco que estaba (xd y sigo estando, gracias a Dios jajajaja), sin embargo, cuando me puse a investigar, me percaté de que en realidad ya existía un paquete nativo de GNU/Linux que me permitiera hacerlo; ahora bien, vamos a ver como hacerlo.
Lo primero ha sido buscar un poco sobre "pam-usb".
$sudo aptitude search pam-usb
Esto me permite conocer que existe un paquete
llamado "libpam-usb", lo que me lleva directamente a leer
la descripción del paquete.
$sudo aptitude show libpam-usb
PAM es un módulo para autenticación usando
dispositivos USB; trabaja con cualquier módulo de autenticación
como su, así como también cualquier manejador como GDM o KDM.
Aunque en la descripción del paquete se nos indica
que podemos obtener mayor información en la URL www.pamusb.org/,
vale acotar que he intentado ingresar varias veces y el Sitio Web
parece no estar en funcionamiento.
Procedemos a instalar el paquete
$sudo aptitude install libpam-usb
Configuración
Luego de instalar el paquete, tenemos el poder, solo
debemos saber usarlo, ya que si no lo configuramos, solo seremos un
tonto con poder, y en mi experiencia personal, eso es más peligroso
jajaja.
Primero, colocamos el pendrive en el equipo, es
importante recalcar que teniendo este pendrive, tendriamos acceso
ilimitado a la permisología del usuario que le configuremos, así
que no les recomiendo dar la permisología del usuario root, (esto no
sería muy sano).
Luego de haber insertado el pendrive en el equipo,
usaremos el comando que nos permite añadir el dispositivo USB a la
tabla de pamusb.
$sudo pamusb-conf --add-device Rait3-USB
Vale acotar que el primer pendrive con el que
intenté, no lo detectó el módulo, la máquina lo montaba y el
pendrive funcionaba correctamente, sin embargo el módulo no lo
detectaba, (no todo es perfecto, ¿no?); la pregunta del siglo, ¿qué
hice?, simple, cambié de pendrive y el siguiente si me proporcionó
una salida como la siguiente.
$sudo pamusb-conf --add-device Rait3-USB
Please select the device you wish to add.
* Using "Kingston (136C0932618F)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sdb1 (UUID: 37AD-8A2F)" (only option)
Name: Rait3-USB
Vendor: Kingston
Model: DataTraveler 2.0
Serial: 50E549XXXXXXXXXXXX815354
UUID: 37XX-XX2F
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Vale acotar que este comando debe utilizarse para
cada pendrive que se desee utilizar.
Ahora procederemos a configurar el usuario que hará
uso de ese dispositivo en su método de autenticación.
$ sudo pamusb-conf --add-user Rait3
Which device would you like to use for authentication ?
* Using "myusb" (only option)
User : Rait3
Device : Rait3-USB
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Ahora ya está configurado para que el usuario Rait3
inicie sesión en este equipo, sin embargo, procederé a verificar
que eso funcione, para ello hacemos uso del siguiente comando.
$sudo pamusb-check Rait3
*Authentication request for user "Rait3" (pamusb-check)
*Device "Rait3-USB" is connected (good).
*Performing one time pad verification...
*Regenerating new pads...
* Access granted.
Listo, ya está configurado y por ahora, el equipo
permite el inicio de sesión por dos métodos, (1) con la clave, (2)
con el pendrive.
Se procede a editar el archivo
/etc/pam.d/common-auth
$nano /etc/pam.d/common-auth
Se debe verificar que la línea auth posea
sufficient o required, dependiendo de lo que se desee; toma en cuenta
que required hace un doble chequeo, obligando así a tener el
pendrive Y la contraseña, mientras que sufficient indica que es
"suficiente" tener uno de los dos para poder loguearse.
auth sufficient pam_usb.so
Copyleft Rait3 - 2015