В данной статье описывается способ, как использовать USB флеш-накопитель для аутентификации пользователя вместо традиционного пароля. Для этого используется Pluggable Authentication Modules (PAM) и USB флеш-накопитель.
Установка PAM USB
pam_usb доступен в большинстве репозиториев Linux дистрибутивов.
sudo apt-get install pamusb-tools libpam-usb
Добавляем USB флеш-накопитель в конфигурацию PAM
sudo pamusb-conf --add-device my-usb
Please select the device you wish to add.
* Using "flash-drive" (only option)
Which volume would you like to use for storing data ?
0) /dev/sdb2 (UUID: 1234-1234)
1) /dev/sdb1 (UUID: 2314-1234)
[0-1]: 0
Name : my-usb
Vendor : noname
Model : no_model
Serial : flash-drive
UUID : 1234-1234
Save to /etc/pamusb.conf ?
[Y/n] Y
Done.
Вместо my-usb можете использовать любое, удобное для вас, название.
Этой командой мы добавили в /etc/pamusb.conf блок кода XML, чтобы в дальнейшем определять наше usb-устройство.
<device id=”my-usb”>
<vendor> noname </vendor>
<model> no_model </model>
<serial> flash-drive </serial>
<volume_uuid> 1234-1234 </volume_uuid>
</device>
</pre>
Добавление пользователя
Мы можем добавить несколько usb-устройств в конфигурацию PAM, в то же время мы можем назначить нескольким пользователям одно usb-устройство. Здесь будет описана простоя конфигурация: один пользователь — одна флешка.
sudo pamusb-conf --add-user flash-user
Which device would you like to use for authentication ?
* Using "my-usb" (only option)
User : flash-user
Device : my-usb
Save to /etc/pamusb.conf ?
[Y/n] y
Done.
Вместо flash-user прописывайте пользователя, для которого собственно и хотите сделать авторизацию с помощью флешки.
Настройка PAM для использования библиотеки pam_usb
На данный момент, мы определили устройство USB «my-usb» для проверки подлинности пользователя «flash-user».
Теперь нужно настроить систему на использование модуля pam_usb.
Чтобы добавить pam_usb в процесс проверки подлинности, необходимо изменить файл /etc/pam.d/common-auth
Это текущая конфигурация для аутентификации пользователя.
auth required pam_unix.so nullok_secure
Изменим конфигурацию
auth sufficient pam_usb.so
auth required pam_unix.so nullok_secure
чтобы для аутентификации было достаточно usb-устройства.
su flash-user
* pam_usb v0.4.2
* Authentication request for user "flash-user" (su)
* Device "my-usb" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.
Если флешки, определенной для flash-user, в системе нет, пользователю необходимо ввести пароль.
Для усиления безопасности меняем в /etc/pam.d/common-auth “sufficient” (достаточно) на “required” (необходимо).
auth required pam_usb.so auth required pam_unix.so nullok_secure
Теперь пользователю flash-user для аутентификации необходимо иметь флешку и правильный пароль.
su flash-user
* pam_usb v0.4.2
* Authentication request for user "flash-user" (su)
* Device "my-usb" is connected (good).
* Performing one time pad verification...
* Access granted.
Password:
События при отключении флешки
Можно настроить pam_usb так, что к примеру при отключении флешки блокируется экран.
Для этого правится /etc/pamusb.conf
<user id="flash-user">
<device> my-usb </device>
<agent event="lock">gnome-screensaver-command -l</agent>
<agent event="unlock">gnome-screensaver-command -d</agent>
</user>
Примечание: Все это производилось в ubuntu, но подходит для большинства других дистрибутивов.