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


10

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

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

PS:私が使う openssh-server


このコメントで回答-askubuntu.com/a/1051973/846342
Abhimanyu Garg

回答:


13

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 ...

2
おそらくの[success=1 default=ignore]代わりになるはずですrequired。現在、グループに属していないユーザーが認証に失敗する原因になると思います。success=1次のメソッドをスキップします。つまりdefault=ignore、グループに属していないユーザーが次のメソッドに進むだけです。
muru 2016

@muruはい、あなたは明らかに正しいです。それでもPAMスタックの詳細とすべての魔法を学びます:)
Jakuje

これは、/ etc / ssh / sshd_configに複数の「AuthenticationMethods」があるかどうかに依存しますか?上記の行を追加しても、「Permission denied(keyboard-interactive)」が
引き続き表示される

@Arjこれは、構成が異なるため、この特定の回答が適用されないことを意味します。
Jakuje、

1

一部の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
    

それでおしまい。


これはどのように質問に答えますか?sshd_config別のPAMスタックを使用し、2FAを使用しないように変更するものは何ですか?
Jakuje 16

@Jakuje回答を更新しました。
pa4080 2016

さて、ポイントは「PAMを使用しない」ことです。場合によっては機能することもありますが、PAMは認証だけでなく、セッションの設定なども行うため、日々機能しなくなる場合があります。また、ポートを変更することは、特にサードパーティがサーバーに接続する必要がある場合に、非常に混乱します。はい、可能な解決策。
Jakuje 16

はい、システムの起動時にこれらの個別のsshインスタンスを開始するエレガントな方法がわからないため、これはまだ可能な解決策ですが、まだ不完全です。
pa4080

0

以下は、sudoおよびadminグループに属するユーザー
を除くすべてのユーザーに Google 2FAを必須にします (つまり、グループsudoまたはadminのユーザーに2FAが設定されていない場合、公開鍵に基づいて認証されます)。

ファイル: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

ファイル: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

結果:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

Google AuthenticatorのREADME.mdドキュメントによると:

nullok

PAMはモジュールから少なくとも1つのSUCCESS回答を必要とし、nullokはこのモジュールにIGNOREと表示させます。つまり、このオプションを使用する場合、少なくとも1つの他のモジュールがSUCCESSを持っている必要があります。これを行う1つの方法は、PAM構成の最後にauth required pam_permit.soを追加することです。

これにより、nullokここの使用が安全になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.