Использование ssh с sssd для пароля или открытого ключа и расширение поддержки MFA через PAM

Использование ssh с sssd для пароля или открытого ключа и расширение поддержки MFA через PAM

Итак, после обширных испытаний и обсуждений я больше не могу разобраться с этой проблемой самостоятельно.

Цель: аутентификация по SSH с использованием открытого ключа или пароля, а также использование PAM для MFA.

Используемая система: Ubuntu Server 20.04

Разделение этого процесса на управляемые части также выявило некоторые трудности при объединении различных частей.

Аутентификация с помощью открытого ключа и использование PAM для MFA не проблема. Аутентификация с помощью пароля и использование PAM для MFA не проблема. Использование открытого ключа или пароля немного отличается. Объединение с MFA кажется невозможным.

Проблема, похоже, заключается в том, как SSHD аутентифицирует пользователя с помощью пароля. SSHD не может сделать это без PAM, поскольку файл тени пользователя не читается без PAM. Включение PAM и активация pam_env.so и pam_sssd.so для стека аутентификации решает эту проблему.

Итак, используя PAM, я могу аутентифицироваться либо с помощью publickey, либо с помощью пароля. Я не понимаю, почему SSHD нужен файл тени пользователя для аутентификации по паролю, а не для publickey? Я все еще получаю свои группы и все остальное, используя publickey, без PAM, и использую SSSD для предоставления publickeys с командой authorized_keys.

Для аутентификации с использованием пароля мне нужен соответствующий модуль pam в стеке аутентификации.

Это не было бы большой проблемой, но цель состоит в том, чтобы включить MFA и не запрашивать у пользователя пароль, если он не нужен. MFA необходимо реализовать с помощью PAM. Использование PAM вместе с открытыми ключами не является проблемой, настройка метода "publickey,keyboard-interactive" в sshd_config передает это в PAM, а настройка модуля PAM после pam_env.so для MFA позволяет это.

Но для включения методов «password, keyboard-interactive» требуется модуль pam_sss.so, поэтому мне будет предложено ввести пароль, даже если я использую метод publickey, а затем будет предложено ввести MFA.

Как мне обойти эту проблему, чтобы я мог аутентифицироваться по ssh с паролем из sssd или открытым ключом из sssd? И следующий шаг, PAM является требованием или нет для пароля (предпочтительно нет), в любом случае, как реализовать MFA?

Поскольку эта мысль все еще крутится у меня в голове, я уверен, что смогу объяснить все лучше и лучше, но я постарался объяснить свои трудности.

Я читал про sssd, pam_ssh, pam_sssd, pam_ssh_agent_auth, sshd. Также читал документацию по DUO, Google MFA, RedHat.

Есть мысли или идеи?

Любая обратная связь будет принята с благодарностью.

Спасибо!

Связанный контент