Я хотел бы знать, как можно (и возможно ли это) создать динамическую аутентификацию для пользователя в Linux.
Сервер периодически менял пароль пользователя, а пользователь использовал программу (например, токен) для получения и ввода правильного пароля.
решение1
Не совсем то, что вы ищете, но я видел, как OTPW использовался для таких сценариев. Это полный пакет, который интегрируется с системой Linux через модули PAM.
выдержка
Пакет OTPW состоит из генератора одноразовых паролей
otpw-gen
и двух процедур проверкиotpw_prepare()
,otpw_verify()
которые можно легко добавить в такие программы, какlogin
илиftpd
в системах POSIX. Для платформ, поддерживающих интерфейс Pluggable Authentication Method (PAM), также включена подходящая оболочка. Расширенное таким образом программное обеспечение для входа в систему позволит достаточно безопасно аутентифицировать пользователя по незащищенным сетевым линиям. Пользователь носит с собой список паролей на бумаге. Схема разработана так, чтобы быть устойчивой к краже бумажного списка и атакам типа «гонка за последней буквой». Криптографические хеш-значения одноразовых паролей хранятся для проверки в домашнем каталоге пользователя.
В вашем случае вам нужно будет следовать инструкциям на этой странице, где подробно описывается установка PAM.
выдержка
Если ваша система поддерживает подключаемые модули аутентификации [Mor01,XSSO], то просто скомпилируйте общую библиотеку
pam_otpw.so
и скопируйте ее в каталог, в котором находятся другие модули PAM (обычно под Linux/lib/security/
). Затем отредактируйте файл конфигурации PAM для приложения, в котором вы хотите использовать OTPW, как описано в вашем руководстве администратора системы PAM. Онpam_otpw.so
предоставляет как компонент аутентификации, так и компонент сеанса. Компонент аутентификации запрашивает и проверяет одноразовый пароль, компонент сеанса выводит после каждого успешного входа напоминание о том, сколько неиспользованных паролей у вас осталось.Чтобы использовать оба компонента при входе в систему через Secure Shell, вам, возможно, придется добавить
/etc/pam.d/sshd
строкиauth required pam_otpw.so session optional pam_otpw.so
Например, в OpenSSH 3.4 вам необходимо убедиться, что в вашей версии скомпилирована поддержка PAM, и вам придется добавить
/etc/ssh/sshd_config
строкиUsePrivilegeSeparation no PAMAuthenticationViaKbdInt yes
Чтобы заставить OpenSSH использовать аутентификацию PAM (вместо собственных методов на основе хоста или открытого ключа, которые он обычно пытается использовать в первую очередь), используйте
“ssh -o PreferredAuthentications=keyboard-interactive”
.