Чтобы система одноразовых паролей заработала, ее необходимо реализовать как часть общего механизма аутентификации. Для этого предназначен модуль pam_skey. Его исходный код доступен по следующему адресу.
http://www.srce.hr/kreator/projects/pam_skey/
Можно также поискать его на Web-узле freshmeat. net. После загрузки и разархивирования модуль компилируется следующим образом:
./configure —with-skey-inc=../skey-1.1.5 —prefix=/
make
make install
Опция --with-skey-inc задает расположение каталога, содержащего включаемые файлы из дистрибутива S/Key.
Команда make install инсталлирует два модуля РАМ: pam_skey и pam_skey_ access. Первый из них включает поддержку одноразовых паролей, а второй реализует список контроля доступа для программы S/Key. Оба модуля имеют тип auth.
Программа S/Key и модули РАМ
Предположим, необходимо использовать одноразовые пароли во всех программах, предоставляющих доступ к системе. Для этого следует отредактировать конфигурационный файл /etc/pam. d/login, как показано в листинге 6.4. По сравнению со стандартным файлом, входящим в дистрибутив Red Hat 7.2, здесь сделана одна замена: вместо модуля pam_unix типа auth используется модуль pam_skey (для наглядности записи pam_stack заменены своими эквивалентами).
Листинг 6.4. Файл /etc/pam.d/login, содержащий вызов модуля pam_skey
auth required /lib/sec.urity/pam_securetty. so
auth required /lib/security/pam_env.so
[success=ok default=bad] /lib/security/pam_skey.so likeauth /lib/security/pam_deny.so /lib/security/pam_nologin.so /lib/security/pam_unix.so
/lib/security/pam_cracklib.so retry=3 type= /lib/security/pam_unix.so nullok use_authtok md5
/lib/security/pam_deny.so /lib/security/pam_limits.so /lib/security/pam_unix.so /llb/security/pam_console.so
Обратите внимание на выражение [success=ok default=bad] в качестве управ-ляющего флага. Оно гарантирует, что стек модулей auth завершается успешно только в том случае, когда модуль pam_skey возвращает код success. Как ни странно, этот модуль возвращает код ignore, если дважды ввести неправильный пароль . Благодаря наличию указанного выражения пользователь будет допущен в систему только при вводе правильного пароля.
В следующих примерах этот файл будет использован пользователем таrу при работе с сервером topcat. Мы рассмотрим выполнение таких задач:
инициализация пользователя с помощью команды skeyinit;
распечатка списка одноразовых паролей;
проверка того, может ли пользователь войти в систему.