Blog Arripio

Autenticação SSH com Duplo Fator Google Authenticator

1.Instalar o módulo PAM do Google Authenticator:Ubuntu / Debian.

Atualize os repositórios do sistema e instale o pacote PAM necessário para integrar tokens temporários ao processo de login:

Bash

sudo apt update && sudo apt install libpam-google-authenticator -y

2.Gerar a chave 2FA e configurar o aplicativo:

Execute o utilitário no terminal para criar o segredo individual do seu usuário:

Bash

google-authenticator

Será exibido um QR Code grande no terminal. Abra o app (Google Authenticator, Authy ou 1Password) no celular e escaneie o código.

Responda às perguntas no terminal da seguinte forma:

  • Make tokens time-based? y
  • Update .google_authenticator file? y
  • Disallow multiple uses of the same token? y
  • Increase window size (rate-limiting)? n
  • Enable rate-limiting? y

Guarde os códigos de emergência (emergency scratch codes) exibidos no terminal em um local seguro. Eles são seu único acesso caso perca o celular.

3.Configurar o PAM para solicitar o token no SSH:

Edite o arquivo de configuração de autenticação do SSH:

Bash

sudo nano /etc/pam.d/sshd

Adicione a seguinte linha ao final do arquivo:

Plaintext

auth required pam_google_authenticator.so nullok

Nota: O parâmetro nullok permite que usuários que ainda não configuraram o 2FA continuem logando até realizarem a etapa inicial.

4.Ajustar o serviço OpenSSH:

Edite as configurações do servidor SSH para exigir o desafio interativo:

Bash

sudo nano /etc/ssh/sshd_config

Altere ou confirme as seguintes diretivas dentro do arquivo:

Plaintext

KbdInteractiveAuthentication yes
UsePAM yes

(Em versões mais antigas do OpenSSH, a opção pode se chamar ChallengeResponseAuthentication yes).

Se você usa Chaves SSH (pubkey) e deseja exigir Chave SSH + Código 2FA, adicione ao final do arquivo:

Plaintext

AuthenticationMethods publickey,keyboard-interactive

5.Reiniciar o SSH e validar a conexão:

Aplique as alterações reiniciando o daemon do SSH:

Bash

sudo systemctl restart ssh

Abra uma nova janela do terminal e tente se conectar ao servidor:

Bash

ssh usuario@ip_do_servidor

O servidor solicitará a verificação da chave/senha e, em seguida, o prompt exibirá Verification code:. Digite o código de 6 dígitos gerado no aplicativo do celular.

Leave a Comment

O seu endereço de email não será publicado.