web-dev-qa-db-ja.com

グループのPAMモジュールを無効にする

最近、SSHサーバーでgoogle-authenticatorを使用して2要素認証を有効にしました。しかし、私は今問題に直面しています:

SFTPに使用しているサーバー上に別のユーザーグループがありますが、グループ内のユーザーに対して2FAが設定されていないため、そのグループはログインできなくなりました。そのグループのgoogle-authenticatorモジュールを無効にすることは可能ですか?複数のユーザーがこのアカウントを使用するため、グループ内のユーザーに対して有効にすることはオプションではありません。

PS:私はopenssh-serverを使用します

9
Z3r0byte

pam_succeed_ifの前に pam_google_authenticator モジュール(マニュアルページを参照)を使用して、グループのこの部分をスキップできます。

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...
12
Jakuje

一部のSFTPクライアントは2FAを処理できます。たとえば、FileZillaとWinSCPで2FAを使用していますが、それらは機能します。また、ssh-key認証をセットアップしており、2FAとともに機能します。

しかし、あなたの質問は興味深いものであり、簡単な調査を行いました。 この答え が見つかりました。

そのため、別々のsshインスタンスを実行することは可能です(そして簡単です)。私はすでにそれをテストしました。

  1. sshd_configファイルの個別のコピーを作成します。

    $ Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. これらの新しいconfigファイルを編集します。変更する必要があるものの1つはshhポートです。例によると:

    2.a)sshd_config_pwd特定の行は次のとおりです。

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b)sshd_config_2fa特定の行は次のとおりです。

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. ファイアウォールに必要なポートを開きます。例によると:

    $ Sudo ufw limit 1022
    $ Sudo ufw limit 2022
    
  4. 新しいsshインスタンスを実行します。

    $ Sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ Sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

それでおしまい。

1
pa4080