Como proteger o SSH em uma VPS Linux
Uma VPS pública recebe tentativas de login automatizadas poucos minutos após entrar no ar. Estes passos tornam o SSH muito mais difícil de atacar. Eles foram escritos para Ubuntu ou Debian. Se você ainda não criou um servidor, pode alugar uma VPS Linux e começar a partir de uma imagem limpa. Mantenha sua sessão SSH atual aberta até testar as novas configurações em uma segunda janela.
1. Crie um usuário comum com sudo
adduser deploy
usermod -aG sudo deploy2. Use chaves SSH em vez de senhas
No seu próprio computador:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPFaça login uma vez com a chave para confirmar que ela funciona antes de desativar as senhas.
3. Desative o login por senha e como root
Crie /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Verifique a sintaxe e recarregue o serviço. O serviço se chama ssh no Ubuntu e no Debian e sshd em sistemas baseados em RHEL:
sudo sshd -t && sudo systemctl reload sshAbra um segundo terminal e faça login novamente. Só então feche a sessão antiga.
4. Ative um firewall
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseAbra apenas as portas de que precisa, como 80 e 443 para um servidor web. Você também pode restringir o SSH ao seu próprio endereço IP com uma regra de firewall no painel da nuvem.
5. Bloqueie falhas repetidas com Fail2ban
sudo apt install -y fail2banCrie /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Instale atualizações de segurança automaticamente
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Extras opcionais
- Mudar a porta do SSH reduz o ruído nos logs, mas não é uma medida de segurança por si só.
- Proteja a chave privada com uma senha (passphrase) e mantenha um backup em local seguro.
- Revise os logins com
lastesudo journalctl -u ssh --since today. - Tire um snapshot depois que o servidor estiver configurado, para poder restaurar uma base limpa.
Se ficar sem acesso, use o console do navegador no painel da nuvem para entrar e corrigir a configuração. Nosso guia de proteção contra DDoS aborda a próxima camada de defesa.
Perguntas frequentes
É seguro desativar o login do root?
Sim, desde que você crie antes um usuário sudo e teste se a chave dele funciona. Você ainda pode executar comandos administrativos com sudo.
Preciso do Fail2ban se uso apenas chaves?
É opcional. Com o login por senha desativado, ataques de força bruta não têm como funcionar, mas o Fail2ban reduz o ruído nos logs e a carga do servidor.
E se eu perder minha chave SSH?
Use o console do painel da nuvem para entrar, adicione uma nova chave pública em ~/.ssh/authorized_keys e remova a antiga.