Использование Yubikey Neo для входа в систему 2FA и блокировки экрана

13

Я хочу использовать свой Yubikey Neo для входа в Ubuntu 14.04. Кроме того, было бы удобно, если бы экран автоматически блокировался каждый раз, когда я отключаю Yubikey.

smiddy84
источник

Ответы:

11

Во-первых, нам нужно настроить Yubikey для ответа на вызов. Хорошее руководство для Linux дано Юбико по адресу https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html.

Теперь вы должны иметь возможность использовать свой yubikey для аутентификации при входе в систему. Отсутствует одна удобная деталь: автоматическая блокировка экрана при снятии штампа Yubikey.

Я немного адаптировал HowTo с форумов Yubico ( http://forum.yubico.com/viewtopic.php?f=23&t=1143 ), чтобы соответствовать LightDM в 14.04 и Yubikey Neo.

Прежде всего, создайте новый файл с командами для блокировки экрана, когда Yubikey нет:

sudo nano /usr/local/bin/yubikey

Запишите в файл следующее:

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

Самым большим отличием от исходного файла является использование dm-инструмента (для блокировки экрана с помощью lightdm) и поискового термина Yubico, поскольку Yubikey Neo зарегистрирован на «Yubico.com» в lsusb.

Закройте и сохраните файл. Кроме того, мы должны сделать файл исполняемым:

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

Далее мы должны найти свойства Yubikey для правильного назначения.

Для этого USB-дескриптор должен быть активирован. Подробности можно найти на форуме Yubico .

В новом терминале введите команду

udevadm monitor --environment --udev

Теперь вы (не) подключите свой Yubikey и получите список идентификаторов. Находясь в поиске

ID_VENDOR_ID
ID_MODEL_ID
ID_SERIAL_SHORT

Они будут использоваться в файле udev для распознавания Yubikey.

Подсказка: идентификатор поставщика изменится, если вы перенастроите флешку (например, с CCID)

Кроме того, создайте файл с

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

и введите следующее

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

Измените идентификатор в соответствии с вашим ключом. Примечание: Вы можете добавить больше yubikey, просто скопировав и вставив строку с другими идентификаторами!

Закройте и сохраните файл. Наконец, служба udev должна перезагрузить правила:

sudo udevadm control --reload-rules
sudo service udev reload
smiddy84
источник
Я попробовал это на 14.04, и не было, ID_SERIAL_SHORTпоэтому я просто пропустил это.
Павел Прагак,
Я знаю, что эта ветка старая, но это лучший результат при поиске. Удаление ID_SERIAL_SHORT опасно, поскольку вы удаляете один идентификатор, уникальный для вашего ключа. Предполагая, конечно, что вы также хотите создать скрипт для разблокировки. Если ID_SERIAL_SHORT нет, вы, вероятно, не включили правильные флаги с помощью инструмента персонализации.
индекс
0

Вы также можете добавить убийство всех TTY, используя 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

Также существует проблема с правами доступа lightdmк файлам , для ее решения:

sudo chown lightdm:root /etc/yubico/[user]-[number]
Павел Прагак
источник