Autenticación en 2 pasos en Linux con libpam-u2fSecurityU2FHay muchos dispositivos válidos para esto. en nuestro caso hemos usado un dispositivo Fido U2F USB key ID como el que mostramos abajo.
Este dispositivo a sido probado en Debian 9 y Ubuntu 16.04
Usando claves U2F en Debian
U2F es un estándar abierto para la autenticación de dos factores que puede proporcionar un dispositivo USB barato.
ADVERTENCIA: puede cerrarse su sistema mientras cambia las configuraciones de PAM.
Hay que comprobar que el dispositivo usb al menos es detectado por el sistema al pincharlo, por tanto lo pinchamos y en un terminal ejecutamos:
$ lsusb | grep U2F
Si la detección es correcta, instalamos las librerías necesarias para el funcionamiento del dispositivo con el sistema. Recuerda ser root en Debian y con sudo en Ubuntu
# apt-get install pamu2fcfg libpam-u2f
A continuación creamos nuestra key generando el fichero de configuración necesario. Recuerda tener el usb key pinchado.
$ mkdir -p ~/.config/Yubico
$ pamu2fcfg >> ~/.config/Yubico/u2f_keys
Para comprobar que el dispositivo funciona y comunica con nuestro sistema, ejecutamos la siguiente instrucción como usuario normal para ver que parpadea y nos da la clave publica al pulsar el botón con el comando:
$ pamu2fcfg
Si usa debian 9 no hay que hacer nada mas, pero si usa ubuntu 16.04 al instalar los paquetes, no te crea los rules necesarios
para poder tener acceso al dispositivo /dev/hidrawX que carga al conectar el fido usb key.
Por tanto en nuestro caso hay que hacer un lsusb para ver que dispositivo es y cual es su id de vendor y product.
El nuestro era:
Bus 003 Device 030: ID 096e:0850 Feitian Technologies, Inc.
Por tanto se crea un archivo en /etc/udev/rules.d/60-fido-u2f.rules
con el siguiente contenido:
$ su
# nano /etc/udev/rules.d/60-fido-u2f.rules
KERNEL==»hidraw*», ATTRS{idVendor}==»096e», ATTRS{idProduct}==»0850″, GROUP=»plugdev» MODE=»0660″
Después para no reiniciar la máquina se puede ejecutar:
$ su
udevadm control –reload-rules && sudo udevadm trigger
Si no parpadea, y ejecutando como root si, la rules no esta funcionando correctamente por lo que sea, o el usuario no pertenece al grupo plugdev, por lo que nuestro usuario habría que añadirlo al grupo de la forma:
$ su
# adduser miusuario plugdev
Agregue la siguiente línea al final de /etc/pam.d/xscreensaver o /etc/pam.d/lightdm o /etc/pam.d/sshd dependiendo que servicio queramos que tenga autenticación en 2 pasos.
auth required pam_u2f.so
Posteriormente reiniciamos el sistema y al volver, a pedirte la contraseña de inicio de sesión de escritorio, te pedirá la contraseña habitual que tenga y luego quedará a la espera de autenticar con el segundo paso que en nuestro caso es el dispositivo. En esto momento pulsamos el botón que tiene en la parte trasera del dispositivo usb, y automáticamente entraremos en el sistema. Esto funciona igual por ssh y otros accesos.
Se recomienda no meter la linea anterior (pam_u2f.so) en todos los ficheros que configuración, sino solo en uno de ellos para si no funciona, poner entrar al sistema por otro medio para arreglarlo y luego ir introduciendo esto en todos los servicios que se quiera.
Como usarlo en redes sociales
Para el uso con redes no es necesario cargar nada en pam.d pero si instalar los paquetes.
En nuestro caso ha funcionado de forma directa con el navegador chrome o chromium. Al entrar en la red social y pedirte el segundo paso el dispositivo se activará a la espera de que pulses el botón para que la red social en cuestión acepte tu key.