Авторизация на компьютере с Ubuntu по usb флешке или Bloetooth устройству


Было скучно, читал интернеты и наткнулся на статью "Посторонним вход воспрещен", более коротко - "Аутентификация при помощи Bluetooth телефона или USB Flash в Debian/Ubuntu Linux"

Проверил сначала авторизацию через флэшку -  нормально работает, вопрос, конечно, что будет с примонтированным разделом, если так лихо флэшку дергать.

Начал разбираться с авторизацией по блютуз устройсту - заходить без пароля, если рядом валяется телефон - это удобно, вроде тоже нормально отработало.

Как позжее выяснилось есть пара мелких подводных булыжников.

  1. Если используется шифрование домашнего каталога, то он остается не подмонтированным и его нужно монтировать вручную, соответственно вводя пароль.
  2. Приложение Ключи и пароли, так же требует отдельной авторизации. Некоторые умельцы просто снимают с нее пароль, но это не безопасно.

Далее стало интересно, как сделать, чтобы компьютер автоматически блокировался при исчезновении телефона.

Сначала нашел BlueProximit, но он у меня как-то не стабильно работал и мобила постоянно дергалась с целью установить сопряжение.

В итоге нарисовал свой скрипт, который ищет имя устройства по маку, когда находит, сверяет с тем, что имеется в конфиге и если находит, то выполняет какие-то действия.

Плюсы:

  • нет необходимости сопрягать устройства
  • запихивается куда надо и как надо

Минусы:

  • возможны проблемы с безопасностью
  • немного мешает (кажется) авторизации через блютус устройство

Скорость работы вполне порадовала - определяется исчезновение мобилы - 30 секунд, находит - 3-10 секунд.

Сам скрипт

#!/bin/bash

user=`who i am | awk '{print $1}'`
time_lost=5
count=${time_lost}
cmd_lock="gnome-screensaver-command -l"
cmd_unlock="gnome-screensaver-command -d"
status=unlock

while [ 1 ]
do
sleep 3s
test=`hcitool name 00:FF:FF:FF:FF:FF | grep -E -f ~/.bluetooth_lock/blue_lock.cfg`
if [ -n "$test" ]
then
count=${time_lost}
if [ "$status" = "lock" ]
then
${cmd_unlock} && status=unlock
echo run $status | logger -p local0.notice -t bluetooth_locker

fi
else
let "count-=1"
if [ "$count" -le 1 ]
then
if [ "$status" = "unlock" ]
then
${cmd_lock} && status=lock
echo run $status | logger -p local0.notice -t bluetooth_locker
  # `ps -U ${user} -o "%p %y %u" | awk -F' ' '/[0-9]* (tty[0-9]) / {print \$1}' | xargs -n1 kill | logger -p local0.notice -t bluetooth_locker`
fi
fi
fi
done

Под винду похожие вещи нашел, но еще не смог попробовать, т.к. ее в близком доступе нету. sad

На всякий случай, оставляю ссылочки на проекты:

  • VSUsbLogon - полностью бесплатный под Windows Vista/7/8
  • PREDATOR - бесплатный для некомерческого использования Windows XP SP3/2003/2008/Vista/7/8/8.1
  • Rohos Logon Key Free - под все винды, платная версию умеет двухфакторную авторизацию, авторизацию по блютузу и еще стопку вкусняшек.

P.S. Еще нашел статью о настройке двухфакторной авторизации с использованием временного пароля.