ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] двухфакторная аутентификация с google authenticator
@ 2019-09-19 14:55 Alexei Mezin
  2019-09-20  4:12 ` Anton Farygin
  0 siblings, 1 reply; 11+ messages in thread
From: Alexei Mezin @ 2019-09-19 14:55 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

Сизиф, только что обновил систему, поставил google authenticator.

Настройки такие:
# cat /etc/pam.d/sshd
#%PAM-1.0
auth            required        pam_google_authenticator.so
auth            required        pam_userpass.so
auth            include         common-login-use_first_pass
account         include         common-login
password        include         common-login
session         include         common-login


В sshd_config изменил одну строку
# Change to yes to enable s/key passwords
ChallengeResponseAuthentication yes

Перезаупстил sshd.


Кратко резюмирую ситуацию:
если логиниться по сети, то ни один код не подходит, хоть в логах не 
пишется про ошибку с кодом, пишется только про "PAM: Application needs 
to call libpam again".

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

Это у всех так, или я что-то неправильно готовлю?





Хронология: пытаюсь по сети попасть на сервер:

sshd[31113]: error: PAM: Application needs to call libpam again for 
alexei from 192.168.1.4
sshd(pam_google_authenticator)[31118]: Trying to reuse a previously used 
time-based code. Retry again in 30 seconds. Warning! This might mean, 
you are currently subject to a man-in-the-middle attack.
sshd(pam_google_authenticator)[31118]: Invalid verification code
sshd[31113]: error: PAM: Application needs to call libpam again for
alexei from 192.168.1.4

хм... просроченный код. Ок, жду следующего, ввожу:

sshd[31113]: error: PAM: Application needs to call libpam again for 
alexei from 192.168.1.4
sshd[31113]: Postponed keyboard-interactive for alexei from 192.168.1.4 
port 42962 ssh2 [preauth]

А нифига не работает.

Ок, попытка номер два, в этот раз логин из уже залогиненной сессии

sshd(pam_google_authenticator)[31352]: Failed to compute location of 
secret file
sshd[31348]: error: PAM: Application needs to call libpam again for 
alexei from 127.0.0.1
sshd[31348]: error: PAM: Application needs to call libpam again for 
alexei from 127.0.0.1

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

sshd[31348]: pam_tcb(sshd:auth): Authentication passed for alexei from 
(uid=0)
sshd[31348]: Failed password for alexei from 127.0.0.1 port 54922 ssh2





^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-19 14:55 [sisyphus] двухфакторная аутентификация с google authenticator Alexei Mezin
@ 2019-09-20  4:12 ` Anton Farygin
  2019-09-20  6:04   ` Alexei V. Mezin
  0 siblings, 1 reply; 11+ messages in thread
From: Anton Farygin @ 2019-09-20  4:12 UTC (permalink / raw)
  To: sisyphus

On 19.09.2019 17:55, Alexei Mezin wrote:
> Сизиф, только что обновил систему, поставил google authenticator.
>
> Настройки такие:
> # cat /etc/pam.d/sshd
> #%PAM-1.0
> auth            required        pam_google_authenticator.so
> auth            required        pam_userpass.so
> auth            include         common-login-use_first_pass
> account         include         common-login
> password        include         common-login
> session         include         common-login
>
>
> В sshd_config изменил одну строку
> # Change to yes to enable s/key passwords
> ChallengeResponseAuthentication yes
>
> Перезаупстил sshd.
>
>
> Кратко резюмирую ситуацию:
> если логиниться по сети, то ни один код не подходит, хоть в логах не 
> пишется про ошибку с кодом, пишется только про "PAM: Application needs 
> to call libpam again".
>
> если логиниться на локалхост из уже открытой сессии, и ввести ДВА раза 
> подряд один и тот же валидный код, то доходит до запроса пароля, но 
> пароль оказывается неправильным. Если вводить один раз код, то ничего 
> не происходит, снова запрашивает код.
>
> Это у всех так, или я что-то неправильно готовлю?
>
Предполагаю что ты единственный пользователь Альта, кто пытается сделать 
такую схему аутентификации.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20  4:12 ` Anton Farygin
@ 2019-09-20  6:04   ` Alexei V. Mezin
  2019-09-20  7:35     ` Denis Medvedev
  0 siblings, 1 reply; 11+ messages in thread
From: Alexei V. Mezin @ 2019-09-20  6:04 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

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




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20  6:04   ` Alexei V. Mezin
@ 2019-09-20  7:35     ` Denis Medvedev
  2019-09-20  7:41       ` Paul Wolneykien
  0 siblings, 1 reply; 11+ messages in thread
From: Denis Medvedev @ 2019-09-20  7:35 UTC (permalink / raw)
  To: alexei.mezin, ALT Linux Sisyphus discussions, Alexei V. Mezin

20.09.2019 9:04, Alexei V. Mezin пишет:
> 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
могу посоветовать вставить аутентификатор в login и поотлаживаться 
сначала на консоли.
>
>
> _______________________________________________
> Sisyphus mailing list
> Sisyphus@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/sisyphus




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20  7:35     ` Denis Medvedev
@ 2019-09-20  7:41       ` Paul Wolneykien
  2019-09-20  8:01         ` Alexei V. Mezin
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Wolneykien @ 2019-09-20  7:41 UTC (permalink / raw)
  To: sisyphus

20.09.2019 10:35, Denis Medvedev пишет:
>> 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
> могу посоветовать вставить аутентификатор в login и поотлаживаться
> сначала на консоли.

  Есть pamtester — им ещё удобнее.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20  7:41       ` Paul Wolneykien
@ 2019-09-20  8:01         ` Alexei V. Mezin
  2019-09-20 11:41           ` Alexei Mezin
  0 siblings, 1 reply; 11+ messages in thread
From: Alexei V. Mezin @ 2019-09-20  8:01 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

20.09.2019 10:41, Paul Wolneykien пишет:
>> могу посоветовать вставить аутентификатор в login и поотлаживаться
>> сначала на консоли.
> 
>    Есть pamtester — им ещё удобнее.


Тогда подскажите, что и как отлаживать. Гугловская часть работает судя 
по всему:

# cat /etc/pam.d/google-auth
#%PAM-1.0
auth            required        pam_google_authenticator.so 
echo_verification_code nullok

# pamtester google-auth alexei authenticate
Verification code: 312473
pamtester: successfully authenticated


А вот как заставить sshd спрашивать пароль два раза, один раз 
традиционный, второй раз гугловский код?


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20  8:01         ` Alexei V. Mezin
@ 2019-09-20 11:41           ` Alexei Mezin
  2019-09-20 15:36             ` Dmitry V. Levin
  0 siblings, 1 reply; 11+ messages in thread
From: Alexei Mezin @ 2019-09-20 11:41 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

20.09.2019 11:01, Alexei V. Mezin пишет:

> Тогда подскажите, что и как отлаживать. Гугловская часть работает судя 
> по всему:

Так, вот в чем дело (вероятно):
у нас sshd сначала использует

auth           required        pam_userpass.so

который принимает пароль и передает его дальше на

auth           include         common-login-use_first_pass

Именно поэтому используется use_first_pass. И такая схема не 
срабатывает, если надо запросить пароль два раза. Зачем pam_userpass.so 
не очень понятно

pam_userpass is a PAM authentication module for use specifically by
services implementing non-interactive protocols and wishing
to verify a username/password pair.

Наверное это что-то очень нужное для хождения какого-нить git по ключу и 
т.п. Расскажите, что отвалится у "обычного пользователя", если sshd 
будет работать напрямую с

auth            include         system-auth-local

Как минимум удаленный вход на сервер по паролю и sftp не отвалились :)


Кратко резюмируя: вот с таким конфигом как минимум удаленно пускает на 
сервер с применением двухфакторной аутентификации.

# cat /etc/pam.d/sshd
#%PAM-1.0
auth            include         system-auth-local
auth            required        pam_google_authenticator.so 
echo_verification_code nullok
account         include         common-login
password        include         common-login
session         include         common-login



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20 11:41           ` Alexei Mezin
@ 2019-09-20 15:36             ` Dmitry V. Levin
  2019-09-20 20:03               ` Alexei V. Mezin
  0 siblings, 1 reply; 11+ messages in thread
From: Dmitry V. Levin @ 2019-09-20 15:36 UTC (permalink / raw)
  To: sisyphus

On Fri, Sep 20, 2019 at 02:41:59PM +0300, Alexei Mezin wrote:
[...]
> Кратко резюмируя: вот с таким конфигом как минимум удаленно пускает на 
> сервер с применением двухфакторной аутентификации.
> 
> # cat /etc/pam.d/sshd
> #%PAM-1.0
> auth            include         system-auth-local
> auth            required        pam_google_authenticator.so 
> echo_verification_code nullok

Неужели у pam_google_authenticator нет use_first_pass?


-- 
ldv


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20 15:36             ` Dmitry V. Levin
@ 2019-09-20 20:03               ` Alexei V. Mezin
  2019-09-20 21:53                 ` Dmitry V. Levin
  0 siblings, 1 reply; 11+ messages in thread
From: Alexei V. Mezin @ 2019-09-20 20:03 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

20.09.2019 18:36, Dmitry V. Levin пишет:

> Неужели у pam_google_authenticator нет use_first_pass?
> 

Есть. Но я не понимаю, что с ним делать.

Если вызывать google_auth с use_first_pass после pam_userpass и 
common-login-use_first_path, то запрос кода не происходит. Если вызывать 
сразу после pam_userpass, то запрос тоже не происходит, в логах

   sshd(pam_google_authenticator)[6561]: Invalid verification code





^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20 20:03               ` Alexei V. Mezin
@ 2019-09-20 21:53                 ` Dmitry V. Levin
  2019-09-21  6:42                   ` Alexei V. Mezin
  0 siblings, 1 reply; 11+ messages in thread
From: Dmitry V. Levin @ 2019-09-20 21:53 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

[-- Attachment #1: Type: text/plain, Size: 780 bytes --]

On Fri, Sep 20, 2019 at 11:03:23PM +0300, Alexei V. Mezin wrote:
> 20.09.2019 18:36, Dmitry V. Levin пишет:
> 
> > Неужели у pam_google_authenticator нет use_first_pass?
> 
> Есть. Но я не понимаю, что с ним делать.
> 
> Если вызывать google_auth с use_first_pass после pam_userpass и 
> common-login-use_first_path, то запрос кода не происходит. Если вызывать 
> сразу после pam_userpass, то запрос тоже не происходит, в логах
> 
>    sshd(pam_google_authenticator)[6561]: Invalid verification code

А что вообще должен делать этот pam_google_authenticator?

Если двум разным модулям нужно передать разные пароли, то второму модулю
точно нельзя указывать параметр use_first_pass, иначе он будет брать
пароль, запрошенный ранее для первого модуля.


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [sisyphus] двухфакторная аутентификация с google authenticator
  2019-09-20 21:53                 ` Dmitry V. Levin
@ 2019-09-21  6:42                   ` Alexei V. Mezin
  0 siblings, 0 replies; 11+ messages in thread
From: Alexei V. Mezin @ 2019-09-21  6:42 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

21.09.2019 0:53, Dmitry V. Levin пишет:

> А что вообще должен делать этот pam_google_authenticator?
> 

Работает оно так:
* на компьютере генерируется ключ, который передается пользователю
* пользователь на своем телефоне ставит программку, и заносит в нее ключ
* при попытке входа в систему компьютер запрашивает код. Пользователь на 
телефоне (интернет не нужен) генерирует код. Код генерируется на основе 
выданного ключа и текущего времени. По умолчанию код валиден 30 секунд, 
а потом генерируется следующий. Компьютер, у которого есть такой же ключ 
и на часах такое же время, проверяет код.

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


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2019-09-21  6:42 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-19 14:55 [sisyphus] двухфакторная аутентификация с google authenticator Alexei Mezin
2019-09-20  4:12 ` Anton Farygin
2019-09-20  6:04   ` Alexei V. Mezin
2019-09-20  7:35     ` Denis Medvedev
2019-09-20  7:41       ` Paul Wolneykien
2019-09-20  8:01         ` Alexei V. Mezin
2019-09-20 11:41           ` Alexei Mezin
2019-09-20 15:36             ` Dmitry V. Levin
2019-09-20 20:03               ` Alexei V. Mezin
2019-09-20 21:53                 ` Dmitry V. Levin
2019-09-21  6:42                   ` Alexei V. Mezin

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git