Hardening de Servidores Linux: Como Blindar o SSH com Chaves Ed25519 e Eliminar Ataques de Força Bruta
Fala pessoal!
Basta alocar um IP público qualquer em uma VPS na nuvem ou abrir uma porta para o seu home lab que, em menos de 10 minutos, o seu servidor começa a ser bombardeado por scanners automatizados tentando adivinhar senhas via SSH.
Se você der uma olhada no seu /var/log/auth.log (ou rodar journalctl -u ssh), vai encontrar facilmente centenas ou milhares de tentativas diárias vindas de botnets do mundo inteiro tentando login em contas como root, admin, ubuntu, test e postgres.
Deixar login por senha comum habilitado em servidor público hoje em dia é pedir para ser comprometido.
Resolvi montar este guia direto ao ponto com as 4 medidas obrigatórias que todo desenvolvedor ou administrador de sistemas deve aplicar para zerar essa dor de cabeça:
1. Migrar para chaves Ed25519 (Adeus RSA)
As chaves Ed25519 são muito mais curtas (apenas 68 caracteres), verificam assinaturas com muito mais rapidez e são matematicamente imunes aos problemas de colisão e timing attacks que afetam chaves RSA antigas.
Gere sua chave na sua máquina local:
ssh-keygen -t ed25519 -C "seu-email@dominio.com"
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@ip-do-servidor
2. Desativar senhas no /etc/ssh/sshd_config
Crie um arquivo modular em /etc/ssh/sshd_config.d/99-hardening.conf:
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
PubkeyAuthentication yes
MaxAuthTries 3
Valide com sudo sshd -t e reinicie com sudo systemctl restart sshd.
3. Subir o Fail2ban com banimento de 24 horas
Com o Fail2ban configurado, qualquer IP que falhar 3 tentativas seguidas é bloqueado no firewall do kernel (nftables) por 24 horas.
Escrevi o tutorial completo com scripts de auditoria e dicas de gerenciamento seguro de chaves lá no meu blog:
👉 Artigo Completo no Vexis Sentinel
Como vocês costumam gerenciar o acesso SSH nos servidores de vocês hoje? Usam chaves puras, chaves de hardware (FIDO2) ou colocam tudo atrás de VPN como Tailscale/WireGuard?