Gostaria de exigir que todos os usuários usassem MFA com o Google Authenticator. Cada vez que adiciono um novo usuário, desejo permitir que ele faça login usando sua chave SSH apenas uma vez e, após o login, exija que ele crie uma chave secreta executando a configuração do GAuth em seu arquivo .bash_login
. Isso será criado ~/.google_authenticator
em seu diretório inicial. eu seguiestas instruções(Ctrl+F "Outro método para forçar a criação") para configurar meu sshd_config
e pam.d
. Aqui estão eles, com comentários removidos:
/etc/ssh/sshd_config
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
AllowUsers me him
PermitRootLogin no
MaxStartups 15
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive
/etc/pam.d/sshd
# Standard Un*x authentication.
#@include common-auth
account required pam_nologin.so
# Standard Un*x authorization.
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required pam_loginuid.so
session optional pam_keyinit.so force revoke
@include common-session
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
session required pam_env.so # [1]
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok
Pelo que entendi, o "nullok" na última linha significa que, se nenhuma chave secreta tiver sido configurada, nada será necessário para satisfazer esse requisito de autenticação. Mas quando tento fazer login com um usuário que não possui nenhuma chave secreta configurada, recebo algo como o seguinte:
$ ssh him@my_device
[email protected]: Permission denied (keyboard-interactive).
Depois que o .google_authenticator
arquivo for criado, o login deverá prosseguir sem problemas. Como posso permitir esse tipo de login enquanto .google_authenticator
não estiver presente?
A propósito, este é o Ubuntu 18.04 LTS.
Responder1
Notei uma atualização no README do projeto adicionando informações sobre a nullok
opção.
PAM requires at least one `SUCCESS` answer from a module, and `nullok`
causes this module to say `IGNORE`. This means that if this option is
used at least one other module must have said `SUCCESS`. One way to do
this is to add `auth required pam_permit.so` to the end of the PAM
config.