quinta-feira, 25 de setembro de 2025

Adicionar 2FA ==> linux

 

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

Expandir Discos Linux