Uma VPS nova recebe milhares de tentativas de senha por dia. Três medidas cortam quase todo o risco.
1. Chave SSH em vez de senha
No seu computador (Windows 10/11, macOS ou Linux):
ssh-keygen -t ed25519 -C "meu-pc"
Aceite o caminho padrão e defina uma frase-senha (protege a chave se o computador for roubado). Envie a chave pública para a VPS:
ssh-copy-id root@IP-DA-VPS
# no Windows sem ssh-copy-id:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@IP-DA-VPS "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Teste em outra janela: ssh root@IP-DA-VPS deve entrar sem pedir a senha do servidor. Só então desative a senha:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin prohibit-password
sudo systemctl restart ssh
Guarde a chave privada em dois lugares. Se perder, o caminho de volta é o console VNC.
2. fail2ban
sudo apt install -y fail2ban
sudo tee /etc/fail2ban/jail.local <<'EOF'
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd # IPs banidos
Funciona também para Nginx, WordPress e painéis: há jails prontas em /etc/fail2ban/filter.d.
3. Reduzir a exposição
Escolha um:
- Restringir o SSH ao seu IP:
sudo ufw allow from SEU-IP to any port 22e remova a regra geral (sudo ufw delete allow OpenSSH). Se o seu IP muda, use a opção seguinte. - Acesso só pela rede privada: Tailscale ou WireGuard e feche a 22 para a internet.
- Mudar a porta (reduz ruído, não substitui os itens acima):
Port 2222nosshd_config,sudo ufw allow 2222/tcp, reinicie o SSH e só depois remova a 22.
4. Extras rápidos
- Usuário próprio com
sudoem vez de trabalhar como root:adduser nome && usermod -aG sudo nome. - Atualizações automáticas de segurança:
sudo apt install unattended-upgrades(atualizar com segurança). - Firewall com só o necessário aberto: guia.
- Windows: RDP com porta diferente e restrição por IP.