Динамическая аутентификация по паролю

tac/grep Решение

tac file | grep whatever

Или немного более эффективное:

grep whatever < <(tac file)

Время с файлом 500МБ:

real    0m1.225s
user    0m1.164s
sys     0m0.516s

sed/grep Решение:

sed '1!G;h;$!d' | grep whatever

Время с файлом 500МБ: Прервано через 10+ минут.

awk/grep Решение:

awk '{x[NR]=$0}END{while (NR) print x[NR--]}' file | grep whatever

Время с файлом 500 МБ:

real    0m5.626s
user    0m4.964s
sys     0m1.420s

perl/grep Решение:

perl -e 'print reverse <>' file | grep whatever

Время с файлом 500 МБ:

real    0m3.551s
user    0m3.104s
sys     0m1.036s

1
18.06.2014, 16:47
1 ответ

Не совсем то, что вы ищете, но я видел OTPW, используемый для таких сценариев. Это полный пакет, который интегрируется с системой Linux через модули PAM.

excerpt

Пакет OTPW состоит из генератора одноразовых паролей otpw-gen плюс две процедуры верификации otpw_prepare() и otpw_verify(), которые могут быть легко добавлены в такие программы, как login или ftpd на POSIX-системах. Для платформ, поддерживающих интерфейс Pluggable Authentication Method (PAM), также включена соответствующая обёртка. Программное обеспечение для входа, расширенное таким образом, позволит достаточно безопасно выполнять аутентификацию пользователя по незащищенным сетевым линиям. Пользователь несет список паролей на бумаге. Схема предназначена для защиты от кражи списка на бумаге и атак типа "гонка за последней буквой". Криптографические хэш-значения одноразовых паролей хранятся для проверки в домашнем каталоге пользователя.

В вашем случае вы захотите следовать инструкциям на этой странице, подробно описывающим установку PAM.

excerpt

Если ваша система поддерживает подключаемые модули аутентификации [Mor01,XSSO], то просто скомпилируйте разделяемую библиотеку pam_otpw.so и скопируйте её в каталог, в котором находятся другие модули PAM (обычно под Linux /lib/security/). Затем отредактируйте файл конфигурации PAM для приложения, в котором вы хотите использовать OTPW, как описано в вашем Руководстве системного администратора PAM. Файл pam_otpw.so предоставляет и аутентификацию, и компонент сеанса. Компонент аутентификации запрашивает и проверяет одноразовый пароль, компонент сеанса печатает после каждого успешного входа в систему напоминание о том, сколько неиспользованных паролей у вас осталось.

Чтобы использовать оба компонента при входе в систему через защищенную оболочку, вам, возможно, придется добавить в /etc/pam.d/sshd строки

 auth, требуемые pam_otpw.so
 сессия опционально pam_otpw.so

Например, в OpenSSH 3.4 вы должны убедиться, что ваша версия скомпилирована с поддержкой PAM, а в /etc/ssh/sshd_config добавить строки

 UsePrivilegeSeparation no
 ПАМАутентификацияВиаКбдИнте да

Чтобы заставить OpenSSH использовать аутентификацию PAM (вместо собственных методов на основе хоста или публичного ключа, которые он обычно пытается использовать в первую очередь), используйте 'ssh -o PreferredAuthentications=keyboard-interactive".

3
27.01.2020, 23:28

Теги

Похожие вопросы