oper777 03.03.2009 09:37
0byte — Авторизация с помощью Flash-накопителя
Подумал, что было бы неплохо использовать usb-flash (или SD-карту в ридере лэптопа) для авторизации на своих машинах без пароля. Сделать это оказалось очень просто.Нужен пакет pam_usb, который скорее всего имеется в репозитории вашего дистрибутива.
Установим его.
Mandriva:
#urpmi pam_usb
Gentoo:
# echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
# emerge -av ">=sys-auth/pam_usb-0.4.1"
Debian:
# apt-get install libpam-usb pamusb-tools
Из исходных кодов:
$ tar -zxvf pam_usb-<version>.tar.gz
$ cd pam_usb-<version>
$ make
# make install
Так же в процессе настройки понадобились пакеты python-dbus и pmount
#urpmi python-dbus pmount
После окончания установки подключаем USB-устройство (монтировать не надо) и используем pamusb-conf для добавления накопителя в конфигурационный файл:
# pamusb-conf --add-device usbkey
Please select the device you wish to add.
* Using "JetFlash TS2GJFV60 (XXXXXXXXXXXXXXXXXXXXXX)" (only option)
Which volume would you like to use for storing data ?
* Using "/dev/sda1 (UUID: 4871-9E7D)" (only option)
Name : usbkey
Vendor : JetFlash
Model : TS2GJFV60
Serial : XXXXXXXXXXXXXXXXXXXXXX
UUID : 4871-9E7D
Save to /etc/pamusb.conf ?
n> y
Done.
Вместо usbkey можно написать что угодно.
Теперь нужно добавить пользователей.
# pamusb-conf --add-user root
Which device would you like to use for authentication ?
* Using "usbkey" (only option)
User : root
Device : usbkey
Save to /etc/pamusb.conf ?
n> y
Done.
Таким же образом можно добавить остальных пользователей.
Проверим правильность настроек:
#pamusb-check root
* Authentication request for user "root" (pamusb-check)
* Device "usbkey" is connected (good).
* Performing one time pad verification...
* Regenerating new pads...
* Access granted.
Далее необходимо настроить систему таким образом, чтобы она обращалась к usb-устройствам для авторизации пользователя, а при отсутствии таковых - запрашивала пароль. В зависимоти от операционной системы, нужные файлы называются по-разному. Найдите в каталоге /etc/pam.d/ файл common-auth (Ubuntu, Debian) или system-auth (Gentoo, Mandriva). Если этих файлов нет, то придется вносить изменения в конфигурационный файл каждого сервиса, для которого будет действовать авторизация по USB-устройству.
В этом файле найдите строчку, похожую на эту:
auth sufficient pam_unix.so try_first_pass likeauth nullok
или
auth required pam_unix.so nullok_secure
и добавьте перед ней следующую строчку:
auth sufficient pam_usb.so
Проверим:
$ su
* pam_usb v0.4.2
* Authentication request for user "root" (su)
* Device "usbkey" is connected (good).
* Performing one time pad verification...
* Access granted.
В документации сказано, что этого достаточно, однако у меня KDM не принимал USB-накопитель вместо пароля. Пришлось внести изменения и в /etc/pam.d/kde3. Нужно точно так же добавить строчку
auth sufficient /lib/security/pam_usb.so
Теперь можно пробовать в KDE заблокировать сеанс (Ctrl+Alt+L) и разблокировать нажатием Enter.
В пакете pam_usb есть еще один инструмент - pamusb-agent. Это постоянно работающая программа, выполняющая определенные действия при подключении и отключении USB-ключа. В следующем примере при извлечении накопителя сеанс блокируется и запускается заставка:
GNOME (gnome-screensaver):
<user id="yuri">
<device>MyDevice</device>
<agent event="lock">gnome-screensaver-command --lock</agent>
<agent event="unlock">gnome-screensaver-command --deactivate</agent>
</user>
KDE (kscreensaver):
<user id="yuri">
<device>MyDevice</device>
<agent event="lock">dcop kdesktop KScreensaverIface lock</agent>
<agent event="unlock">dcop kdesktop KScreensaverIface quit</agent>
</user>
Вы можете поставить туда любые другие команды. Теперь осталось сделать добавить pamusb-agent в автозагрузку:
GNOME:
System -> Preferences -> Sessions, выберите Startup Programs и нажмите Add, введите pamusb-agent и нажмите ОК. Нажмите Close.
KDE:
cd ~/.kde/Autostart && ln -s /usr/bin/pamusb-agent pamusb-agent
Может быть скажу ерунду, но первое, что пришло в голову - это переместить загрузчик (или initrd) с жесткого диска на флеш, тогда система просто не запустится.
Если карты нету в ридере - то вообще ничего не писать =) для секюрности
Прикольная статья. Главное - может быть полезной в определенных кругах.
просто иногда надо чтобы доступ к ноуту не имели даже чтобы он загружался)))
с boot разделом конечно удобно..
Надо будет попробывать!
с boot разделом конечно удобно..
Надо будет попробывать!
Спасибо, полезно.
Господа, а ни у кого ли не было такого:
# pamusb-check xcr
* Authentication request for user "xcr" (pamusb-check)
* Device "test2" is connected (good).
* Performing one time pad verification...
Error: device /dev/sdb1 is not removable
* Mount failed
* Access denied.
Господа, а ни у кого ли не было такого:
# pamusb-check xcr
* Authentication request for user "xcr" (pamusb-check)
* Device "test2" is connected (good).
* Performing one time pad verification...
Error: device /dev/sdb1 is not removable
* Mount failed
* Access denied.
А просто в консоли pmount работает?
pmount /dev/sdb1
и потом
pumount /dev/sdb1
?
pmount /dev/sdb1
и потом
pumount /dev/sdb1
?
Нагуглил, что это ошибка в pmount, вернее даже в libsysfs2, которую использует pmount. Для её обхода можно внести в файл /etc/pmount.allow имя устройства, т.е.
/dev/sdb1
/dev/sdb1
Да, классная вещь. Недавно столкнулся, заодно и патчик для нее набросал.
Суть патча заключается в том, что он добавляет в конфиг опцию, при включении которой ключ (pad) на флешку пишется не каждый раз при вставливании ее или по истечению срока жизни ключа, а один раз (только если ключ не существует), тем самым уменьшая объем записи на флешку и, соответственно, продлевая ее жизнь. ;)
Если кого-нибудь заинтересует, то этот патч здесь: http://sourceforge.net/tracker/index.php?func=detail&aid=2634450&group_id=127530&atid=708790
Суть патча заключается в том, что он добавляет в конфиг опцию, при включении которой ключ (pad) на флешку пишется не каждый раз при вставливании ее или по истечению срока жизни ключа, а один раз (только если ключ не существует), тем самым уменьшая объем записи на флешку и, соответственно, продлевая ее жизнь. ;)
Если кого-нибудь заинтересует, то этот патч здесь: http://sourceforge.net/tracker/index.php?func=detail&aid=2634450&group_id=127530&atid=708790
слишком много о себе думает утилита. а именно mmcblk0 в sysfs не считается removable, соответвенно и способа туда ключ сделать нету. так же не очень ясно требование обязательно держать раздел.
тогда как дураку понятно что можно и по просто наличию девайса проверять данные. в общем сделано неудобно, критерии плохие, я бы не стал ей доверять безопасность :)
ps:
sudo pamusb-conf --verbose --add-device keys
Inspecting /org/freedesktop/Hal/devices/pci_1180_822_mmc_host_mmc_card_rca55091_storage_mmc_sd_mmc
Invalid: Not a removable device
при любом раскладе.
тогда как дураку понятно что можно и по просто наличию девайса проверять данные. в общем сделано неудобно, критерии плохие, я бы не стал ей доверять безопасность :)
ps:
sudo pamusb-conf --verbose --add-device keys
Inspecting /org/freedesktop/Hal/devices/pci_1180_822_mmc_host_mmc_card_rca55091_storage_mmc_sd_mmc
Invalid: Not a removable device
при любом раскладе.
а можно ли сделать так чтобы он в качестве ключа использовал не файл на флешке а её серийный номер?
А во время загрузки можно сделать так если стоит флешка то грузиться, если же нет карты в ридере то он пишет нет ключа загрузки!