Аутентификация: pam_usb

Наткнулся я тут на весьма интересную штуку - pam_usb называется. Коротко говоря, она позволяет производить аутентификацию пользователей в системе не по паролю, а по криптографическому ключу на флэшке.

Во-первых, кто такой PAM?

PAM - это Plugable Authentithication Modules, т.е. подключаемые модули аутентификации. Идея состоит в том, что любая софтина, которой нужно аутентифицировать пользователя (напр.: login, passwd, sudo…) обращается к сервису PAM. Тот, в свою очередь, глядя в конфиг, по очереди обращается к указанным модулям, спрашивая у них - пускать или не пускать? Если напротив модуля стоит required, то “признание” этим модулем пользователя является условием необходимым, но не достаточным. Если стоит sufficient - значит, признания даже только одним этим модулем достаточно. Там еще много настроек указать можно…

Т.е. теоретически, ничего не стоит, написав дополнителный модуль для PAM, настроить систему так, чтобы она вместо пароля спрашивала сетчатку глаза там или отпечатки пальцев…

PAM_USB

Это, как вы уже поняли, один из таких модулей. При попытке логина он ищет на указанном в конфиге устройстве файл вида /.auth/user.host, в хомяке пользователя - файл ~/.auth/id_pub, и проверяет их соответствие по алгоритму DSA.

Почему-то pam_usb нету в Debian, хотя распространяется он по GPL, и исходник весит 27Kb. Взять его можно на pamusb.org, жалко только, сайт в состоянии редизайна, и информации там по минимуму…

И еще: вообще-то, этому модулю пофиг, что вы ему укажете в качестве дивайса. С тем же успехом это может быть дискета или CD.

А нафига оно?

А вы еще не поняли? Пароль-то придумать ведь надо еще! Придумаешь простой - просто подобрать, придумаешь сложный - просто забыть. Про пароли, написанные карандашом на мониторе, я молчу. А носить всегда в кармане флэшку и выдергивать ее, уходя - все-таки гораздо легче, чем помнить пароль типа $KHYhguh(7438!

Как это сделать?

Итак, предположим, вы скачали и поставили пакет pam_usb. Что дальше делать?

Во-первых, надо сгенерировать ключи для нужных юзеров. Монтируем флэшку, скажем, в /mnt/flash, и говорим

# usbadm keygen /mnt/flash username 2048,

где username - это имя интересующего нас юзера, а 2048 - длина ключа. Повторяем это для всех нужных юзеров и отмонтируем флэшку.

Теперь надо настроить сам PAM. В директории /etc/pam.d лежат файлы, соответствующие программам, которые используют PAM: login, xdm, … У меня в Debian‘е все они включают (директивой @include) файл common-auth. В случае другого дистра, вероятно, придется поискать, куда именно вставлять интересующие нас строчки:

а) если мы хотим, чтобы система в случае вставленной флэшки пускала без пароля, а без флэшки спрашивала пароль - должны быть строки

auth sufficient pam_usb.so check_device=-1 check_if_mounted=-1 force_device=/dev/transcend fs=vfat

auth required pam_unix.so nullok_secure

(где /dev/transcend - дивайс флэшки, а vfat - тип файловой системы на ней).

б) если мы хотим, чтобы в систему можно было зайти только по флэшке, зато без пароля:

auth required pam_usb.so check_device=-1 check_if_mounted=-1 force_device=/dev/transcend fs=vfat

в) наконец, если мы хотим, чтобы можно было зайти только при вставленной флэшке, и спрашивался пароль:

auth required pam_usb.so check_device=-1 check_if_mounted=-1 force_device=/dev/transcend fs=vfat

auth required pam_unix.so nullok_secure

Например, у меня сейчас в файле common-auth записаны строки из варианта а).

Источник

free-templates.ru