lunes, 27 de abril de 2015

Autenticación con Pendrive en GNU/Linux Debian




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