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 -yPasso 2: Instale o Google Authenticator
sudo apt install libpam-google-authenticator -yPasso 3: Configure o 2FA para o Usuário
Execute (como root ou seu usuário):
google-authenticatorResponda:
Ypara gerar um novo token.Ypara salvar no arquivo~/.google_authenticator.Npara não permitir reutilização do mesmo código.Npara manter a janela de tempo em 30s (mais seguro).Ypara 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/sshdAdicione no final:
auth required pam_google_authenticator.so nullokO 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_configDeixe 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 -> 2FA3. Reinicie o SSH:
sudo systemctl restart sshPasso 5: Teste o Login
Em outro terminal, tente:
ssh root@IP_DO_SERVIDOR -p 22O SSH deve pedir:
- Senha do usuário.
- 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 22Depois, desative senhas no sshd_config:
PasswordAuthentication no2. Bloqueie Ataques de Força Bruta
Instale o fail2ban:
sudo apt install fail2ban -y3. Crie um Usuário Comum (Evite Logar como Root)
adduser meu_usuario
usermod -aG sudo meu_usuarioSolução de Problemas
1. SSH Não Pede o 2FA
- Verifique se
UsePAM yeseChallengeResponseAuthentication yesestão ativos nosshd_config. - Confira se
/etc/pam.d/sshdcontémpam_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/sshdComente a linha:
# auth required pam_google_authenticator.soConclusão
Agora seu servidor exige senha + 2FA para logins SSH, aumentando drasticamente a segurança.