Итак, я читал о настройке машины 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)) :
- Установить пакеты
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, и не вижу четко пропущенного шага или параметра.
Любая помощь по этому вопросу будет принята с благодарностью. Заранее спасибо, и если вам понадобится дополнительная информация, пожалуйста, дайте мне знать.
Пол