Procedimento para configurar SSH + 2FA (Google Authenticator)
1️⃣ Preparar o servidor
Atualize pacotes:
sudo apt update && sudo apt upgrade -y
Instale o Google Authenticator PAM e oathtool (para teste de OTP):
sudo apt install libpam-google-authenticator oathtool -y
Configure o horário corretamente (essencial para TOTP):
sudo timedatectl set-ntp on
sudo timedatectl set-timezone America/Sao_Paulo
sudo ntpdate pool.ntp.org # força sincronização imediata
2️⃣ Configurar o usuário para 2FA
Logue como o usuário que vai usar SSH (ex.: fabiano):
su - fabiano
Rode o Google Authenticator:
google-authenticator
Responda exatamente assim:
Do you want authentication tokens to be time-based (y/n) y
Do you want to update your ~/.google_authenticator file (y/n) y
Do you want to disallow multiple uses of the same token? (y/n) y
Do you want to increase the window size (y/n) y
Window size in which codes will be accepted (1-17) 3
Do you want to enable rate-limiting (y/n) y
Ajuste permissões do arquivo:
chmod 600 ~/.google_authenticator
chown $(whoami):$(whoami) ~/.google_authenticator
3️⃣ Configurar PAM
Edite /etc/pam.d/sshd para ficar assim:
# Primeiro autentica senha
@include common-auth
# Depois pede OTP
auth required pam_google_authenticator.so
# Restrições de login
account required pam_nologin.so
@include common-account
# Sessão
@include common-session
@include common-password
Ordem importante: common-auth → pam_google_authenticator
Permite que senha local seja pedida primeiro e OTP depois.
4️⃣ Configurar SSH
Edite /etc/ssh/sshd_config:
# Porta e protocolo (ajuste se necessário)
Port 22
Protocol 2
# Segurança
PermitRootLogin prohibit-password
MaxAuthTries 4
MaxSessions 10
# Autenticação
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
AuthenticationMethods keyboard-interactive
# Logs
SyslogFacility AUTH
LogLevel VERBOSE
Explicação:
PasswordAuthentication no → evita conflito com senha SSH “pura”
AuthenticationMethods keyboard-interactive → PAM controla senha + OTP
5️⃣ Testar antes de fechar sessão atual
Valide configuração SSH:
sudo sshd -t
Abra um novo terminal (não feche o atual) e teste login:
ssh -p fabiano@ip
6️⃣ Teste manual do OTP (opcional, para debug)
head -n 1 ~/.google_authenticator # pega chave secreta
oathtool --totp -b "CHAVE_SECRETA"
Reutilização em outros servidores
Copie o mesmo procedimento:
Instale pacotes (libpam-google-authenticator + oathtool)
Configure horário e NTP
Configure usuário e gere OTP
Ajuste PAM e SSH conforme acima
Sempre teste em nova sessão antes de fechar a atual
Nenhum comentário:
Postar um comentário