viernes, 2 de septiembre de 2011

Como usar tu rostro para iniciar sesión en ubuntu

Aprovechando que hoy configuré pam_usb para iniciar sesión usando una usb, me decidí a documentar algo que hace rato tengo en mi laptop: el modulo pam_face_authentication por medio del cual podemos iniciar sesión usando nuestro rostro. Inspirado por un post de mi amigo ahioros (Reconocimiento Facial Arch Linux), busqué y encontré como instalar dicho modulo en ubuntu, aquí dejo el tutorial oficial en el sitio del proyecto. Los pasos que yo seguí son los siguientes:

1. En una terminal ejecutamos los siguientes comandos:

sudo add-apt-repository ppa:antonio.chiurazzi
sudo apt-get update
sudo apt-get install pam-face-authentication


2. editamos el archivo /etc/pam.d/common-auth

# nano /etc/pam.d/common-auth
Y añandimos la linea "auth sufficient pam_face_authentication.so enableX" entre la línea que define el pam_usb.so y "auth [success=2 default=ignore] pam_unix.so nullok_secure" Para que nos quede como se muestra a continuación:
...

# here are the per-package modules (the "Primary" block)
auth    sufficient      pam_usb.so
auth    sufficient      pam_face_authentication.so enableX
auth    [success=2 default=ignore]      pam_unix.so nullok_secure

...
Como pueden notar tengo colocado el modulo pam_usb arriba, luego pam_face_authentication y luego los que por defecto vinieron en ubuntu. De este modo primero se intenta la validación por usb, si esta es exitosa se inicia la sesión sino se intenta con el reconocimiento facial y finalmente el sistema solicita la contraseña si todo lo demás falla.

Es todo por el momento. Hasta la proxima.

Como usar la usb para iniciar sesion en ubuntu

Como ya es costumbre mía estaba leyendo en internet sobre consejos de seguridad y encontré una lista de 20 consejos para mejorar la seguridad del openssh en un servidor, el consejo que más me llamó la atención fue habilitar el "two-factor authentication", que es básicamente crear una llave RSA y mover la llave privada a un usb, entonces cuando llamas al comando ssh con la opción -i para decirle cual llave privada usar. Después de pensarlo un rato me pregunté ¿podré configurar esto del two-factor authentication en mi Ubuntu de uso personal (en este caso mi laptop)? Investigué un poco y para mi sorpresa no solo es posible sino bastante fácil, así que aquí dejo los pasos y las referencias:

Pasos a seguir:
1. Instalamos los programas necesarios:
sudo apt-get install pamusb-tools libpam-usb

2. Conectamos una USB a la computadora

3. Agregamos el USB a la configuración del PAM:

$ sudo pamusb-conf --verbose --add-device=my-usb
Inspecting /org/freedesktop/Hal/devices/storage_serial_*******************************
 Invalid: Device does not contain any volume
Inspecting /org/freedesktop/Hal/devices/storage_serial_SanDisk_Cruzer_Blade_*************************
 Valid
Please select the device you wish to add.
* Using "SanDisk Cruzer Blade (*****************************************)" (only option)

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

Name  : my-usb
Vendor  : SanDisk
Model  : Cruzer Blade
Serial  : *****************************************
UUID  : AAAA-9999

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

4. Agregamos el usuario que podrá usar el usb (my-usb) para ingresar.

$ sudo pamusb-conf --add-user myuser --verbose
Which device would you like to use for authentication ?
* Using "my-usb" (only option)

User  : myuser
Device  : my-usb

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

5. Configuramos el sistema para que permita el inicio de sesión usando el modulo pam_usb:
Tenemos que editar el archivo common-auth

sudo nano /etc/pam.d/common-auth 
Buscamos la línea que dice auth required pam_unix.so nullok_secure y agregamos la siguiente línea: auth sufficient pam_usb.so. Aquí dejo un ejemplo de como quedó mi archivo /etc/pam.d/common-auth
auth    sufficient      pam_usb.so
auth    required        pam_unix.so nullok_secure
Nota: realmente importante, por favor tener mucho cuidado al editar este archivo pues si lo dejan mal terminaran con un sistema al que no podrá ingresar, el post original recomiendan dejar una consola con permisos de administrador y el archivo abierto pues en caso de que algo salga mal puedan arreglarlo.

Probar que funciona: Al momento de redactar este tutorial no he verificado cerrar mi sesión e ingresar otra vez usando la usb, pero si ejecute la siguiente prueba indicada en el post original y me funcionó bien:
$ su myuser
* pam_usb v0.4.2
* Authentication request for user "myuser" (su)
* Device "my-usb" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.


Alternativa, Requerir tanto el usb como una contraseña: De acuerdo con el post original si deseamos que ambos, la contraseña y el usb sean requeridos para ingresar debemos modificar el archivo /ect/pam.d/common-auth para que quede de la siguiente forma:
auth    required      pam_usb.so
auth    required        pam_unix.so nullok_secure
Y al probarlo de la misma forma antes mencionada debemos ver algo como lo siguiente:
$ su ubuntu-user
* pam_usb v0.4.2
* Authentication request for user "ubuntu-user" (su)
* Device "my-usb" is connected (good).
* Performing one time pad verification...
* Access granted.
Password:
Donde como pueden ver se valida la presencia del usb y luego se solicita la contraseña.

Alternativa, Bloquear/Desbloquear el equipo cuando se remueve/reconecta la usb:  Modificamos el archivo /etc/pamusb.conf, específicamente la sección user, en dicha sección debe estar ya creada y con una entrada indicando el dispositivo que el usuario requiere para ingresar, solo debemos agrergar dos entradas más de modo que quede más o menos como el siguiente ejemplo:
 
           
                  my-usb
           
          gnome-screensaver-command -l 
          gnome-screensaver-command -d 
 
Nota: si no usas gnome reemplaza el comando gnome-screensaver-command por algo que si te funcione.

Conclusión Esta forma de ingresar me trae algunas ideas sobre como se podría en una empresa o institución eliminar la necesidad de usar contraseñas o agregar una capa más de seguridad. Se imaginan llegando a su puesto de trabajo y colocando una usb en la pc y luego empezar a trabajar sin tener que hacer más nada. Hasta la próxima. Referencias: http://askubuntu.com/questions/10524/usb-drive-login-token-system http://linuxconfig.org/linux-authentication-login-with-usb-device

Actualización 3-sep-2011:  después de salir y volver a ingresar pude comprobar que la validación por usb funciona bien en el inicio de sesión.

Actualización 7-ene-2012: tristemente el proyecto pamusb parece estar muerto, incluso ya eliminaron el paquete de Debían y  Ubuntu :(