Uso de Yubikey Neo para iniciar sesión 2FA y pantalla de bloqueo

13

Quiero usar mi Yubikey Neo para iniciar sesión en Ubuntu 14.04. Además, sería conveniente que la pantalla se bloqueara automáticamente cada vez que desconecte el Yubikey.

smiddy84
fuente

Respuestas:

11

Primero, necesitamos configurar el Yubikey para la respuesta al desafío. Yubico proporciona un buen manual para Linux en https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html

Ahora debería poder usar su yubikey para la autenticación al iniciar sesión. Falta una pieza conveniente: el bloqueo automático de la pantalla cuando se quita el Yubikey.

Adapte un poco el HowTo de los foros de Yubico ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ) para que coincida con LightDM en 14.04 y el Yubikey Neo.

En primer lugar, cree un nuevo archivo con los comandos para bloquear la pantalla cuando el Yubikey no esté presente:

sudo nano /usr/local/bin/yubikey

Escriba lo siguiente en el archivo:

#!/bin/bash 
# Double checking if the Yubikey is actually removed, Challenge-Response won't trigger the screensaver this way.

if [ -z "$(lsusb | grep Yubico)" ]; then
        logger "YubiKey Removed or Changed"
        # Running the LightDM lock command
        export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
        /usr/bin/dm-tool lock
fi

Las mayores diferencias con el archivo original es el uso de la herramienta dm (para bloquear la pantalla con lightdm) y el término de búsqueda Yubico, ya que Yubikey Neo está registrado con „Yubico.com“ en lsusb.

Cierra y guarda el archivo. Además, tenemos que hacer que el archivo sea ejecutable:

sudo chmod +x /usr/local/bin/yubikey

A continuación, tenemos que encontrar las propiedades del Yubikey para una asignación adecuada.

Para esto, el descriptor USB debe estar activado. Los detalles se pueden encontrar en el foro de Yubico .

En una nueva terminal, escriba el comando

udevadm monitor --environment --udev

Ahora usted (des-) conecta su yubikey y obtiene una lista de ID. Buscando

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

Se utilizarán en el archivo udev para el reconocimiento de Yubikey.

Insinuación: la ID del proveedor cambia si reconfigura el dispositivo (por ejemplo, con CCID)

Además, cree un archivo con

sudo nano /etc/udev/rules.d/85-yubikey.rules

y escriba lo siguiente

# Yubikey Udev Rule: running a bash script in case your Yubikey is removed 
ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0010", ENV{ID_SERIAL_SHORT}=="0001711399", RUN+="/usr/local/bin/yubikey"

Cambie la identificación de acuerdo con su clave. Nota: ¡Puede agregar más yubikey simplemente copiando y pegando la línea con otros ID!

Cierra y guarda el archivo. Finalmente, el servicio udev tiene que recargar las reglas:

sudo udevadm control --reload-rules
sudo service udev reload
smiddy84
fuente
He intentado esto en 14.04 y no había, ID_SERIAL_SHORTasí que simplemente me salté.
Paweł Prażak
Sé que este hilo es antiguo, pero sigue siendo el mejor resultado al buscar. Eliminar ID_SERIAL_SHORT es peligroso ya que elimina el identificador único de su clave. Suponiendo, por supuesto, que también desea crear un script para desbloquear. Si ID_SERIAL_SHORT no está allí, es probable que no haya habilitado los marcadores correctos con la herramienta de personalización.
Índice
0

También puede agregar matar a todos los TTY usando pkill -KILL -t:

if [ -z "$(lsusb | grep Yubico)" ]; then
    logger "YubiKey Removed or Changed"
    # Running the LightDM lock command
    export XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0" 
    /usr/bin/dm-tool lock

    ACTIVE_TTY=$(who | awk '{ print $2 }' | grep tty | uniq)
    echo $ACTIVE_TTY | xargs -I {} pkill -KILL -t {}
fi

También parece haber un problema con los permisos de archivo de lightdm, para resolverlo:

sudo chown lightdm:root /etc/yubico/[user]-[number]
Paweł Prażak
fuente