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

12

Eu quero usar o meu Yubikey Neo para acessar o Ubuntu 14.04. Além disso, seria conveniente se a tela fosse bloqueada automaticamente toda vez que eu desligasse o Yubikey.

    
por smiddy84 11.06.2015 / 20:34

2 respostas

10

Primeiro, precisamos configurar o Yubikey para a resposta do desafio. Um bom manual para Linux é dado por Yubico sob link

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

Eu adaptei um pouco o HowTo dos fóruns do Yubico ( link ) para combinar LightDM em 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 em relação ao 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 é registrado com "Yubico.com" em 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 do Yubico .

Em um novo tipo de terminal no comando

udevadm monitor --environment --udev

Agora você (un) 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 bastão (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"

Altere o ID de acordo com sua chave. Nota: Você pode adicionar mais yubikey por simples copiar e colar a linha com outros IDs!

Feche e salve o arquivo. Finalmente, o serviço do udev tem que recarregar as regras:

sudo udevadm control --reload-rules
sudo service udev reload
    
por smiddy84 11.06.2015 / 20:34
0

Você também pode adicionar a eliminação de todos os TTYs 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  }' | grep tty | uniq)
    echo $ACTIVE_TTY | xargs -I {} pkill -KILL -t {}
fi

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

sudo chown lightdm:root /etc/yubico/[user]-[number]
    
por Paweł Prażak 14.01.2016 / 19:14