web-dev-qa-db-ja.com

SSHキー認証と2要素認証の組み合わせ

次のことをすべて同時に達成できるかどうか疑問に思いました。

  • Rootログインを無効にする
  • 個人ユーザーのSSHログインを有効にしますのみ SSHキー経由
  • 特権のないユーザーに対してSSHログインを有効にします。withパスワード認証and 2要素認証のみ

sshd_configMatchブロックを使用して、特権のないユーザーを除いて一般にPasswordAuthenticationを無効にするように設定できました(peonと呼びましょう)。 。個人ユーザー(Sudo機能を持つ)にログインするには、SSHキーが必要でした。

ただし、2要素認証(pam_google_authenticator)を有効にしようとすると、ChallengeResponseAuthenticationをオンにする必要があります。これはnotMatchブロックで機能しているようです。 、したがって、すべてのユーザーに対してパスワード認証をオンに戻しています。

これを達成する方法はありますか?私はこの種のものがあまり得意ではないので、詳細な説明をいただければ幸いです。

ありがとう!

7
Brandon

opensshの最近のバージョンには、AuthenticationMethodsオプションが含まれています。

Debianは_openssh-6.2_ しばらく前 をバックポートしたので、これはRaspbianでも利用できると思います。

ユーザーにアクセスを許可するために正常に完了する必要がある認証方法を指定します。

ChallengeResponseAuthenticationを有効にして、_sshd_config_のメインブロックを作成できます。

_ChallengeResponseAuthentication yes
PasswordAuthentication no
PermitRootLogin no
_

次に、AuthenticationMethodsブロックでMatchを使用します(スケーラビリティを緩和するために、Groupマッチングの代わりにUserマッチングを使用します):

_Match Group personal
  AuthenticationMethods publickey

Match Group peon
  PasswordAuthentication yes
  AuthenticationMethods publickey,keyboard-interactive
_

さらに、 pam_succeed_if(8) を使用して、一致するグループが必要とする場合にのみ2要素認証をトリガーできます。

_ auth required pam_succeed_if.so quiet user ingroup peon
_
4
dawud