CentOS 7 сконфигурирован для доступа 2FA S SH через pam_oath - допускает любую строку 6 символов или менее для одноразового пароля - PullRequest
0 голосов
/ 23 марта 2020

Итак, я читал о настройке машины CentOS 7 для двухфакторной аутентификации для S SH, используя pam_oath и приложение для телефона FreeOTP, а также локальные имена пользователей и пароли для двух факторов. Я читал различные онлайн-статьи, и все, кажется, следуют базовым c инструкциям, перечисленным в следующих статьях:

https://wiki.archlinux.org/index.php/Pam_oath

https://jonarcher.info/2015/07/hardening-ssh-with-otp-for-2-factor-authentication/

https://www.brianlane.com/post/setup-oath-ssh-login-on-fedora/

Прежде чем сделать это на своей основной машине CentOS, я развернул виртуальную машину VirtualBox для тестирования и выполнил минимум CentOS 7 установить. Я следовал инструкциям, и меня попросили ввести учетные данные «Одноразовый пароль (OATH)», но я заметил, что могу ввести любую alphanumeri c строку, которая не должна превышать 6 символов для пароля OATH, и тогда он запросит у меня локальное имя пользователя / пароль. И до тех пор, пока я правильно ввожу локальный пароль, мне предоставляется доступ к оболочке.

Вот шаги, которые я выполнял после первоначальной минимальной установки CentOS 7 (CentOS Linux выпуск 7.7.1908 (Core)) :

  1. Установить пакеты
yum update && yum upgrade

yum install epel-release

yum install pam_oath oathtool gen-oath-safe
отредактируйте /etc/pam.d/sshd и добавьте следующую строку в качестве первой строки без комментариев:

достаточно аутентификации pam_oath.so usersfile = / etc / liboath / окно users.oath = 10 цифр = 6

Итак, первые несколько строк /etc/pam.d/sshd выглядят так:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions

И после:

#%PAM-1.0
auth sufficient pam_oath.so usersfile=/etc/liboath/users.oath window=10 digits=6
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
генерация ключей для моей локальной учетной записи:

gen-oath-safe jdoe hotp

Добавить ключ в приложение FreeOTP на телефоне с помощью QR-кода

Добавить шестнадцатеричный код в /etc/liboath/users.oath:

HOTP jdoe - УДАЛЕНО

отредактируйте файл / etc / ssh / sshd_config и убедитесь, что установлены следующие параметры:
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication yes
установить SE Linux разрешения для / etc / liboath:
semanage fcontext -a -t systemd_passwd_var_run_t '/etc/liboath(/.*)?'
restorecon -rv /etc/liboath/
Перезагрузите S SH:

systemctl перезапустите sshd

Поэтому, когда IS SH на этом хосте, введите любую строку 6 символов или меньше, я пропускаю, чтобы войти с локальным паролем:

login as: jdoe
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
 Password:
End of keyboard-interactive prompts from server
Last login: Sun Mar 22 18:03:08 2020 from REDACTED
[jdoe@pkcentos7 ~]

Если я введу строку 7 или более символов для пароля OATH, произойдет следующее:

login as: jdoe
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':

Я просмотрел различные другие статьи, возвращенные поисковыми запросами Google, и не вижу четко пропущенного шага или параметра.

Любая помощь по этому вопросу будет принята с благодарностью. Заранее спасибо, и если вам понадобится дополнительная информация, пожалуйста, дайте мне знать.

Пол

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Изменить управление модулем pam с sufficient на [success=done new_authtok_reqd=done default=die]

Моя строка pam выглядит следующим образом:

auth [success=done new_authtok_reqd=done default=die] pam_oath.so usersfile=/etc/users.oath

sshd_config :

PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pam 
UsePAM yes
ChallengeResponseAuthentication yes
0 голосов
/ 17 апреля 2020

Спасибо за ответ! Из вашего файла sshd_config я полагаю, что вы используете ключ publi c как часть 2FA в вашей системе. Поэтому я настроил то, что у вас есть выше, для работы на моей тестовой системе:

1) /etc/pam.d/sshd

auth [success=ok new_authtok_reqd=ok default=die]  pam_oath.so usersfile=/etc/liboath/users.oath window=10 digits=6

2) / etc / sshd / sshd_config

PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods keyboard-interactive:pam

Вот что выводится из процесса входа в S SH после этого изменения, где я:

1) намеренно ввел одноразовый пароль, неверный

2), введен правильно одноразовый, но неверный пароль учетной записи

3) правильный одноразовый пароль, затем правильный пароль учетной записи

login as: jdoe
Keyboard-interactive authentication prompts from server:
| One-time password (OATH) for `jdoe':
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
| One-time password (OATH) for `jdoe':
| Password:
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
| One-time password (OATH) for `jdoe':
| Password:
End of keyboard-interactive prompts from server
Last failed login: Thu Apr 16 10:55:39 EDT 2020 from REDACTED on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Thu Apr 16 10:54:59 2020 from REDACTED
[jdoe@pkcentos7 ~]$ 
...