[sisyphus] двухфакторная аутентификация с google authenticator

Alexei V. Mezin alexei на nanoscantech.ru
Пт Сен 20 09:04:33 MSK 2019


20.09.2019 7:12, Anton Farygin пишет:

> Предполагаю что ты единственный пользователь Альта, кто пытается сделать 
> такую схему аутентификации.

Хм... ну Ок. Но инструмент-то имеется! Кто-то же его в Сизиф положил :) 
Да и задача не сказать чтоб редкая и экзотическая.



Потыкал в этот снаряд еще. Гугл говорит, что у всех работает, а у нас 
наверное слишком особенный sshd/pam.

Ситуация примерно такая:

№1 если ставить вызов google_auth первым в списке

#%PAM-1.0
auth           requisite       pam_google_authenticator.so 
echo_verification_code nullok
auth            required        pam_userpass.so
...

То при попытке логина ожидаемо сначала запрашивается одноразовый код. В 
логах видно, что он принимается корректно, но сразу же выскакивает надпись

sshd[31113]: error: PAM: Application needs to call libpam again for
alexei from 192.168.1.4

И второго запроса уже обычного пароля не происходит. Снова запрашивается 
код. После трех попыток видимо google-часть сдается, и тогда уже виден 
запрос пароля, но к успеху он не приводит.

№2 если поставить вызов google_auth после прочих auth, то сначала 
ожидаемо запрашивается пароль на вход в систему. Но входа не происходит. 
В логах видно, что google_auth не получила корректного кода. Но как бы 
она его смогла получить, если запрос кода не выдается?

№3 если гугло-часть поставить вперед, снабдив ключом forward_pass, то 
нормально происходит запрос вида "введите пароль и код". Если в одну 
строку ввести пароль и код в формате passwd111122222, то гугло-часть 
исправно получает свой код, видимо передает пароль дальше (где его 
должны перехватить ключем use_first_pass), но все снова возвращается на 
запрос пароля-кода с вот таким диагнозом

sshd[3566]: pam_tcb(sshd:auth): Authentication passed for alexei from 
(uid=0)
sshd[3564]: error: PAM: Conversation error for alexei from 127.0.0.1




Подробная информация о списке рассылки Sisyphus