Невозможно использовать 2FA, даже когда оно включено.

Вопрос или проблема

Я пытаюсь включить 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)

  1. Файл /etc/ssh/sshd_config:

    • ChallengeResponseAuthentication yes: включает возможность использования интерактивной аутентификации.
    • KbdInteractiveAuthentication yes: активация комфортного входа с помощью клавиатуры.
    • AuthenticationMethods publickey,keyboard-interactive: сочетание методов аутентификации.
  2. Ошибки в логе:

    • "Disabled method "keyboard-interactive" in AuthenticationMethods list "publickey,keyboard-interactive": сигнализирует, что указанный метод не активен.
    • AuthenticationMethods cannot be satisfied by enabled authentication methods: конфигурация метода аутентификации не выполнена успешно.

Применение (Application)

Шаги для решения проблемы:

  1. Проверка файла конфигурации SSH:

    • Убедитесь, что директивы ChallengeResponseAuthentication и KbdInteractiveAuthentication включены не только в /etc/ssh/sshd_config, но и в любом файле, входящем в /etc/ssh/sshd_config.d/*.conf. Обратите внимание, что в некоторых дистрибутивах OpenSSH 8.6 и выше ChallengeResponseAuthentication является устаревшим и полностью заменен на KbdInteractiveAuthentication.
  2. Модификация PAM конфигурации:

    • В /etc/pam.d/sshd поправьте конфигурацию, убедившись, что auth required pam_google_authenticator.so располагается в правильной позиции. Это нужно для корректного выполнения двухфакторной аутентификации.
  3. Настройка порядка аутентификации:

    • Убедитесь, что строки конфигурации четко определяют порядок, в котором сервер будет требовать выполнение аутентификации. Например, вы можете начать с ключевой аутентификации (publickey) и продолжить с интерактивной (keyboard-interactive).
  4. Тестирование и логирование:

    • Активируйте расширенное логирование для получения подробной информации об ошибках, используя LogLevel DEBUG в конфигурации SSH.
  5. Обновление и пересмотр политики криптографии:

    • Проверьте политику криптографии системы, чтобы она разрешала взаимодействие через keyboard-interactive.

Рекомендации:

  • Дублирование директив:
    Избегайте дублирования директив в разных конфигурационных файлах. Это может привести к неожиданным конфликтам.

  • Использование альтернативных методов:
    Рассмотрите возможность конфигурирования google-authenticator с использованием дополнительного или альтернативного модуля, например, через pam_oath.

  • Обновление документации и систем:
    Всегда следите за обновлениями документации по безопасности и релизов OpenSSH, так как они могут влиять на ваше окружение и конфигурацию.

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

Оцените материал
Добавить комментарий

Капча загружается...