A seguir irá tornar o Google 2FA obrigatório para todos os usuários
, exceto os usuários pertencentes ao sudo e administrador do grupo
(ou seja, se um usuário sudo grupo ou administrador não tem 2FA configurado, ele será autenticado ele / ela com base em sua chave pública):
Arquivo: /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
Arquivo: /etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes
Resultados:
| 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)
De acordo com a documentação README.md do Google Authenticator :
nullok
O PAM requer pelo menos uma resposta de SUCESSO de um módulo e nullok faz com que este módulo diga IGNORE. Isso significa que, se essa opção for usada, pelo menos um outro módulo deve ter dito SUCESSO. Uma maneira de fazer isso é adicionar o pam_permit.so de autenticação necessário ao final da configuração do PAM.
Isso torna o uso nullok
aqui seguro.