
そのため、広範囲にわたるテストと議論を行った結果、この問題を自分だけで理解できなくなりました。
目標: 公開鍵またはパスワードを使用して SSH 経由で認証し、MFA に PAM を使用します。
使用されるシステムはUbuntu Server 20.04です
これを管理可能な部分に分割すると、異なる部分を組み合わせるのにいくつかの困難が生じることもわかりました。
公開鍵で認証し、MFA に PAM を使用することは問題ありません。パスワードで認証し、MFA に PAM を使用することは問題ありません。公開鍵またはパスワードのいずれかを使用することは少し異なります。MFA と組み合わせることは不可能と思われます。
問題は、SSHD がパスワードを使用してユーザーを認証する方法にあるようです。ユーザー シャドウ ファイルは PAM なしでは読み取れないため、SSHD は PAM なしではこれを実行できません。PAM を有効にし、認証スタックの pam_env.so と pam_sssd.so をアクティブにすると、この問題が解決します。
したがって、PAM を使用すると、公開鍵またはパスワードのいずれかで認証できます。SSHD がパスワード認証にユーザー シャドウ ファイルを必要とし、公開鍵には必要としないのはなぜか、理解できません。私は、PAM を使用せずに公開鍵を使用してグループとすべてを取得し、authorized_keys コマンドで公開鍵を提供するために SSSD を使用しています。
パスワードを使用して認証するには、認証スタック内の対応する pam モジュールが必要です。
これは大した問題ではありませんが、目標は MFA を有効にし、必要な場合を除きユーザーにパスワードの入力を求めないことです。MFA は PAM を使用して実装する必要があります。公開鍵と一緒に PAM を使用することは問題ありません。sshd_config でメソッド "publickey,keyboard-interactive" を設定すると、これが PAM に渡され、MFA の pam_env.so の後に PAM モジュールを設定すると、これが可能になります。
ただし、「password,keyboard-interactive」メソッドを有効にするには pam_sss.so モジュールが必要なので、publickey メソッドを使用していてもパスワードの入力が求められ、その後 MFA の入力が求められます。
この問題を解決して、SSSD からのパスワード、または SSSD からの公開キーを使用して SSH 経由で認証できるようにするにはどうすればよいでしょうか。次のステップでは、パスワードに PAM が必須かどうか (できれば必須ではない)、いずれにしても、MFA をどのように実装すればよいでしょうか。
このことがまだ頭の中でぐるぐる回っているので、もっとうまく説明できると思いますが、自分の困難を説明するために最善を尽くしました。
私が読んだのは、sssd、pam_ssh、pam_sssd、pam_ssh_agent_auth、sshd です。また、DUO、Google MFA、RedHat のドキュメントも読んでください。
何かご意見やアイデアはありますか?
フィードバックをいただければ幸いです。
ありがとう!