Como Configurar 2FA (Autenticação em Dois Fatores) no SSH

Objetivo: Proteger seu servidor SSH exigindo senha + código 2FA para logins (inclusive como root).


Pré-requisitos

  • Servidor Debian ou Ubuntu.
  • Acesso root ou usuário com sudo.
  • Smartphone com app de autenticação (Google Authenticator, Authy ou similar).

Passo 1: Atualize o Sistema

sudo apt update && sudo apt upgrade -y

Passo 2: Instale o Google Authenticator

sudo apt install libpam-google-authenticator -y

Passo 3: Configure o 2FA para o Usuário

Execute (como root ou seu usuário):

google-authenticator

Responda:

  1. Y para gerar um novo token.
  2. Y para salvar no arquivo ~/.google_authenticator.
  3. N para não permitir reutilização do mesmo código.
  4. N para manter a janela de tempo em 30s (mais seguro).
  5. Y para ativar proteção contra força bruta.

Escaneie o QR code no app (Google Authenticator/Authy) e salve os códigos de backup!


Passo 4: Configure o SSH para 2FA

1. Edite o arquivo do PAM:

sudo nano /etc/pam.d/sshd

Adicione no final:

auth required pam_google_authenticator.so nullok

nullok permite logar com senha se o 2FA não estiver configurado para um usuário.

2. Ajuste o sshd_config:

sudo nano /etc/ssh/sshd_config

Deixe como abaixo:

Port 22  # Ou sua porta customizada (ex.: 3056)
PermitRootLogin yes  # Permite login root (opcional)
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
KbdInteractiveAuthentication yes
AuthenticationMethods password keyboard-interactive  # Ordem: senha -> 2FA

3. Reinicie o SSH:

sudo systemctl restart ssh

Passo 5: Teste o Login

Em outro terminal, tente:

ssh root@IP_DO_SERVIDOR -p 22

O SSH deve pedir:

  1. Senha do usuário.
  2. Código 2FA (do app).

Se funcionar, o 2FA está ativo!


Dicas de Segurança Extras

1. Use Chaves SSH (Recomendado)

ssh-copy-id usuario@IP_DO_SERVIDOR -p 22

Depois, desative senhas no sshd_config:

PasswordAuthentication no

2. Bloqueie Ataques de Força Bruta

Instale o fail2ban:

sudo apt install fail2ban -y

3. Crie um Usuário Comum (Evite Logar como Root)

adduser meu_usuario
usermod -aG sudo meu_usuario

Solução de Problemas

1. SSH Não Pede o 2FA

  • Verifique se UsePAM yes e ChallengeResponseAuthentication yes estão ativos no sshd_config.
  • Confira se /etc/pam.d/sshd contém pam_google_authenticator.so.

2. Perdi o Acesso ao App de 2FA

Use os códigos de backup salvos ou acesse via console/VNC para desativar temporariamente:

sudo nano /etc/pam.d/sshd

Comente a linha:

# auth required pam_google_authenticator.so

Conclusão

Agora seu servidor exige senha + 2FA para logins SSH, aumentando drasticamente a segurança.

Gostou deste conteúdo?

Sua opinião é importante para nós!