Вопрос или проблема
Я пытаюсь включить Google 2FA, используя пакет Fedora google-authenticator
(https://github.com/google/google-authenticator-libpam).
Это мой /etc/ssh/sshd_config
:
# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $
# Чтобы изменить конфигурацию sshd для всей системы, создайте *.conf файл в
# /etc/ssh/sshd_config.d/, который будет автоматически включен ниже
Include /etc/ssh/sshd_config.d/*.conf
# Аутентификация:
PermitRootLogin no
# По умолчанию проверяются как .ssh/authorized_keys, так и .ssh/authorized_keys2
# но они переопределены, поэтому установка будет проверять только .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
# переопределяет настройку по умолчанию для подсистем
Subsystem sftp /usr/libexec/openssh/sftp-server
ChallengeResponseAuthentication yes
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
и это /etc/pam.d/sshd
#%PAM-1.0
#auth substack password-auth
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close должна быть первым правилом сессии
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open должен следовать только за сессиями, выполняемыми в контексте пользователя
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
auth sufficient pam_google_authenticator.so
при перезапуске демона ssh я получаю следующую ошибку:
Oct 31 21:14:10 personal systemd[1]: Starting sshd.service - OpenSSH server daemon...
░░ Subject: A start job for unit sshd.service has begun execution
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ A start job for unit sshd.service has begun execution.
░░
░░ The job identifier is 8247.
Oct 31 21:14:10 personal sshd[10265]: Disabled method "keyboard-interactive" in AuthenticationMethods list "publickey,keyboard-interactive"
Oct 31 21:14:10 personal sshd[10265]: AuthenticationMethods cannot be satisfied by enabled authentication methods
Oct 31 21:14:10 personal systemd[1]: sshd.service: Main process exited, code=exited, status=255/EXCEPTION
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ An ExecStart= process belonging to unit sshd.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 255.
Oct 31 21:14:10 personal systemd[1]: sshd.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░
░░ The unit sshd.service has entered the 'failed' state with result 'exit-code'.
Oct 31 21:14:10 personal systemd[1]: Failed to start sshd.service - OpenSSH server daemon.
Я не понимаю, почему возникает Disabled method "keyboard-interactive"
, даже когда она явно включена. Есть идеи, что может быть не так с моей конфигурацией?
Попробуйте удалить свои изменения в /etc/ssh/sshd_config
и вставьте следующие строки в /etc/ssh/sshd_config.d/50-redhat.conf
(если этот файл существует):
# Эта система следует системной криптополитике. Изменения в
# криптографические свойства (Ciphers, MACs, ...) не будут иметь никакого эффекта в
# этом или последующих включенных файлах. Чтобы переопределить какой-либо параметр конфигурации,
# напишите его перед этим блоком или включите его перед этим файлом.
# Пожалуйста, смотрите страницы руководства для update-crypto-policies(8) и sshd_config(5).
Include /etc/crypto-policies/back-ends/opensshserver.config
SyslogFacility AUTHPRIV
ChallengeResponseAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication yes
PubkeyAuthentication yes
KbdInteractiveAuthentication yes
...
...
Если вам требуется PW + 2FA, добавьте следующую строку в конец /etc/pam.d/sshd
(возможно, вам не нужен nullok, debug и т.д.):
auth required pam_google_authenticator.so nullok debug [authtok_prompt=Введите ваш секретный токен: ]
Если вам требуется только 2FA, то закомментируйте auth substack password-auth
в /etc/pam.d/sshd
и оставьте следующую строку внизу:
auth required pam_google_authenticator.so nullok debug [authtok_prompt=Введите ваш секретный токен: ]
В моем случае это работало с SSSD-AD-Auth + Google-Authenticator-2FA в Rocky9.
Если директивы:
ChallengeResponseAuthentication no
или
KbdInteractiveAuthentication no
находятся где-либо, включая /etc/ssh/sshd_config.d/50-redhat.conf
, это может привести к сообщению об ошибке Disabled method "keyboard-interactive"
. С версии OpenSSH 8.6, ChallengeResponseAuthentication
является устаревшим алиасом для KbdInteractiveAuthentication
.
.
Ответ или решение
Чтобы успешно настроить двухфакторную аутентификацию (2FA) с использованием вашего конфигурационного файла SSH и пакета google-authenticator, необходимо применить четкий подход, учитывая все предоставленные детали. Рассмотрим проблему, рекомендации и возможные пути решения.
Теория (Theory)
У вас возникла ошибка, связанная с невозможностью активировать метод "keyboard-interactive", несмотря на включение соответствующих настроек в файле конфигурации SSH. Ошибка заключается в том, что SSH не может удовлетворить указанные методы аутентификации, поскольку он считает, что метод "keyboard-interactive" не включен. Эта проблема может возникнуть из-за конфликта настроек или неверного порядка директив в конфигурационных файлах.
Основные настройки, отвечающие за аутентификацию, расположены в следующих файлах:
/etc/ssh/sshd_config
: основной файл конфигурации SSH-сервера./etc/pam.d/sshd
: файл, управляющий модулями управления аутентификацией PAM (Pluggable Authentication Module).
Пример (Example)
-
Файл
/etc/ssh/sshd_config
:ChallengeResponseAuthentication yes
: включает возможность использования интерактивной аутентификации.KbdInteractiveAuthentication yes
: активация комфортного входа с помощью клавиатуры.AuthenticationMethods publickey,keyboard-interactive
: сочетание методов аутентификации.
-
Ошибки в логе:
"Disabled method "keyboard-interactive" in AuthenticationMethods list "publickey,keyboard-interactive"
: сигнализирует, что указанный метод не активен.AuthenticationMethods cannot be satisfied by enabled authentication methods
: конфигурация метода аутентификации не выполнена успешно.
Применение (Application)
Шаги для решения проблемы:
-
Проверка файла конфигурации SSH:
- Убедитесь, что директивы
ChallengeResponseAuthentication
иKbdInteractiveAuthentication
включены не только в/etc/ssh/sshd_config
, но и в любом файле, входящем в/etc/ssh/sshd_config.d/*.conf
. Обратите внимание, что в некоторых дистрибутивах OpenSSH 8.6 и вышеChallengeResponseAuthentication
является устаревшим и полностью заменен наKbdInteractiveAuthentication
.
- Убедитесь, что директивы
-
Модификация PAM конфигурации:
- В
/etc/pam.d/sshd
поправьте конфигурацию, убедившись, чтоauth required pam_google_authenticator.so
располагается в правильной позиции. Это нужно для корректного выполнения двухфакторной аутентификации.
- В
-
Настройка порядка аутентификации:
- Убедитесь, что строки конфигурации четко определяют порядок, в котором сервер будет требовать выполнение аутентификации. Например, вы можете начать с ключевой аутентификации (publickey) и продолжить с интерактивной (keyboard-interactive).
-
Тестирование и логирование:
- Активируйте расширенное логирование для получения подробной информации об ошибках, используя
LogLevel DEBUG
в конфигурации SSH.
- Активируйте расширенное логирование для получения подробной информации об ошибках, используя
-
Обновление и пересмотр политики криптографии:
- Проверьте политику криптографии системы, чтобы она разрешала взаимодействие через keyboard-interactive.
Рекомендации:
-
Дублирование директив:
Избегайте дублирования директив в разных конфигурационных файлах. Это может привести к неожиданным конфликтам. -
Использование альтернативных методов:
Рассмотрите возможность конфигурированияgoogle-authenticator
с использованием дополнительного или альтернативного модуля, например, черезpam_oath
. -
Обновление документации и систем:
Всегда следите за обновлениями документации по безопасности и релизов OpenSSH, так как они могут влиять на ваше окружение и конфигурацию.
Регулируя настройки и учитывая данные советы, у вас будет больше шансов успешно внедрить двухфакторную аутентификацию. Если проблема сохраняется, рекомендуется провести аудит всех связанных модулей аутентификации для выявления несовместимых конфигураций.