Korzystanie z Yubikey Neo do logowania 2FA i ekranu blokady

13

Chcę użyć mojego Yubikey Neo do zalogowania się do Ubuntu 14.04. Ponadto byłoby dobrze, gdyby ekran był automatycznie blokowany za każdym razem, gdy odłączam Yubikey.

smiddy84
źródło

Odpowiedzi:

11

Najpierw musimy skonfigurować Yubikey do reagowania na wyzwania. Dobry podręcznik dla Linuksa jest podany przez Yubico pod https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html

Teraz powinieneś być w stanie użyć swojego yubikey do uwierzytelnienia przy logowaniu. Brakuje jednego wygodnego elementu: automatycznej blokady ekranu po usunięciu kostki Yubikey.

Lekko dostosowałem HowTo z forów Yubico ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ), aby pasowały do ​​LightDM w 14.04 i Yubikey Neo.

Przede wszystkim utwórz nowy plik z poleceniami, aby zablokować ekran, gdy Yubikey nie jest obecny:

sudo nano /usr/local/bin/yubikey

Napisz do pliku:

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

Największe różnice w stosunku do oryginalnego pliku to użycie narzędzia dm (do blokowania ekranu za pomocą lightdm) i wyszukiwanego terminu Yubico, ponieważ Yubikey Neo jest zarejestrowane w „Yubico.com” w lsusb.

Zamknij i zapisz plik. Ponadto musimy uczynić plik wykonywalnym:

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

Następnie musimy znaleźć właściwości Yubikey dla właściwego przypisania.

W tym celu należy aktywować deskryptor USB. Szczegóły można znaleźć na forum Yubico .

W nowym terminalu wpisz polecenie

udevadm monitor --environment --udev

Teraz (od-) podłączasz swój yubikey i dostajesz listę identyfikatorów. Szukam

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

Zostaną użyte w pliku udev do rozpoznania Yubikey.

Wskazówka: identyfikator dostawcy zmienia się, jeśli ponownie skonfigurujesz drążek (np. Przy pomocy CCID)

Ponadto utwórz plik za pomocą

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

i wpisz następujące

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

Zmień identyfikator zgodnie z kluczem. Uwaga: Możesz dodać więcej yubikey przez proste kopiowanie wklej linię z innymi identyfikatorami!

Zamknij i zapisz plik. Na koniec usługa udev musi ponownie załadować reguły:

sudo udevadm control --reload-rules
sudo service udev reload
smiddy84
źródło
Próbowałem tego 14.04 i nie było, ID_SERIAL_SHORTwięc po prostu pominąłem.
Paweł Prażak
Wiem, że ten wątek jest stary, ale nadal jest najlepszym wynikiem podczas wyszukiwania. Usunięcie ID_SERIAL_SHORT jest niebezpieczne, ponieważ usuwasz jeden identyfikator unikalny dla twojego klucza. Zakładając oczywiście, że chcesz również utworzyć skrypt do odblokowywania. Jeśli nie ma ID_SERIAL_SHORT, prawdopodobnie nie włączyłeś poprawnych flag za pomocą narzędzia personalizującego.
Indeks
0

Możesz także dodać zabijanie wszystkich TTY za pomocą 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

Wydaje się również, że istnieje problem z uprawnieniami do plików lightdm, aby go rozwiązać:

sudo chown lightdm:root /etc/yubico/[user]-[number]
Paweł Prażak
źródło