Uso do Yubikey Neo para login 2FA e tela de bloqueio

13

Quero usar meu Yubikey Neo para fazer login no Ubuntu 14.04. Além disso, seria conveniente que a tela seja bloqueada automaticamente sempre que eu desconectar o Yubikey.

smiddy84
fonte

Respostas:

11

Primeiro, precisamos configurar o Yubikey para responder a desafios. Um bom manual para Linux é fornecido pelo Yubico em https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html

Agora você deve poder usar seu yubikey para autenticação no login. Uma peça conveniente está faltando: O bloqueio automático da tela quando o Yubikey é removido.

Adaptei um pouco o HowTo nos fóruns do Yubico ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ) para combinar com o LightDM no 14.04 e o Yubikey Neo.

Primeiro, crie um novo arquivo com os comandos para bloquear a tela quando o Yubikey não estiver presente:

sudo nano /usr/local/bin/yubikey

Escreva o seguinte no arquivo:

#!/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

As maiores diferenças no arquivo original são o uso da ferramenta dm (para bloquear a tela com lightdm) e o termo de pesquisa Yubico, já que o Yubikey Neo está registrado com "Yubico.com" no lsusb.

Feche e salve o arquivo. Além disso, temos que tornar o arquivo executável:

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

Em seguida, temos que encontrar as propriedades do Yubikey para uma atribuição adequada.

Para isso, o descritor USB deve estar ativado. Detalhes podem ser encontrados no fórum Yubico .

Em um novo tipo de terminal no comando

udevadm monitor --environment --udev

Agora você (des-) conecta seu yubikey e obtém uma lista de IDs. Procurando por

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

Eles serão usados ​​no arquivo udev para reconhecimento do Yubikey.

Dica: O ID do fornecedor muda se você reconfigurar o stick (por exemplo, com CCID)

Além disso, crie um arquivo com

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

e digite o seguinte

# 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"

Mude o ID de acordo com sua chave. Nota: Você pode adicionar mais yubikey por cópia simples, cole a linha com outros IDs!

Feche e salve o arquivo. Por fim, o serviço udev precisa recarregar as regras:

sudo udevadm control --reload-rules
sudo service udev reload
smiddy84
fonte
Eu tentei isso em 14.04 e não havia, ID_SERIAL_SHORTentão apenas pulei.
Paweł Prażak 14/01/16
Eu sei que este tópico é antigo, mas ainda é o resultado principal na pesquisa. Remover ID_SERIAL_SHORT é perigoso, pois você remove o identificador único da sua chave. Supondo que você também queira criar um script para desbloquear. Se o ID_SERIAL_SHORT não estiver lá, você provavelmente não ativou os sinalizadores corretos com a ferramenta personalizador.
Index
0

Você também pode adicionar matando todos os 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

Também parece haver um problema com as permissões de arquivo de lightdm, para resolvê-lo:

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