以下は、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
ここの使用が安全になります。