Proteger a ligação SSH contra ataques de brute force
A porta SSH predefinida (22) é frequentemente alvo de ataques automatizados. Este guia explica como alterar a porta SSH e reforçar a segurança do servidor.
📋 Pré-requisitos
- VPS com acesso root ou sudo
- Ligação SSH ativa
- UFW instalado e configurado (ver Instalar UFW)
⚠️ IMPORTANTE: Manter uma sessão SSH aberta
Importante: Antes de começar, mantenha uma sessão SSH ativa. Se algo correr mal, ainda poderá ligar-se e corrigir o problema.
Abra dois terminais SSH em paralelo:
- Terminal 1: sessão de trabalho (para fazer alterações)
- Terminal 2: sessão de reserva (por precaução)
🔧 Alterar a porta SSH
Passo 1: Escolher uma nova porta
Escolha uma porta entre 1024 e 65535. Evite portas comuns:
- 22 (SSH predefinida, muito visada)
- 80, 443 (HTTP/HTTPS)
- 3306, 5432 (bases de dados)
Exemplos: 2222, 2200, 1022, 5000
Passo 2: Editar a configuração SSH
Bash# Editar ficheiro de configuração SSH sudo nano /etc/ssh/sshd_config
Passo 3: Alterar a porta
Encontre a linha #Port 22 e modifique-a:
# Antes
#Port 22
# Depois (substitua 2222 pela sua porta)
Port 2222
Dica: Use Ctrl + W no nano para procurar "Port 22"
Passo 4: Guardar e sair
No nano:
Ctrl + Xpara sairYpara confirmarEnterpara guardar
Passo 5: Verificar a sintaxe
Bash# Verificar que a configuração é válida sudo sshd -t
Se o comando não devolver erros, a configuração está correta.
Passo 6: Autorizar a nova porta no UFW
Bash1# Autorizar a nova porta SSH (substitua 2222 pela sua porta) 2sudo ufw allow 2222/tcp 3 4# Opcional: remover a porta 22 se já não a utilizar 5sudo ufw delete allow 22/tcp 6 7# Recarregar UFW 8sudo ufw reload 9 10# Verificar que a regra está ativa 11sudo ufw status | grep 2222
Passo 7: Reiniciar o serviço SSH
Bash1# Reiniciar SSH com a nova configuração 2sudo systemctl restart sshd 3 4# Verificar que SSH continua a funcionar 5sudo systemctl status sshd
Passo 8: Testar a nova ligação
Num novo terminal, teste a ligação com a nova porta:
Bash# Substitua 2222 pela sua porta e user@your-ip pelas suas credenciais ssh -p 2222 user@your-ip
Se a ligação funcionar, pode fechar a sessão antiga na porta 22.
🔒 Opções de segurança adicionais
Desativar login root
Importante: Desativar o login root via SSH é uma excelente prática. Certifique-se de ter um utilizador com sudo configurado antes de fazer esta alteração.
Bash1sudo nano /etc/ssh/sshd_config 2 3# Encontrar e modificar esta linha 4PermitRootLogin no 5 6# Guardar e reiniciar 7sudo sshd -t 8sudo systemctl restart sshd
Limitar tentativas de ligação
Bash1sudo nano /etc/ssh/sshd_config 2 3# Adicionar ou modificar estas linhas 4MaxAuthTries 3 # Máximo 3 tentativas 5LoginGraceTime 30 # Timeout de 30 segundos
Desativar autenticação por palavra-passe (apenas chaves SSH)
Bashsudo nano /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes
Aviso: Só ative esta opção se tiver configurado uma chave SSH e testado que funciona!
Configuração segura recomendada
Exemplo completo para /etc/ssh/sshd_config:
Port 2222
PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 30
Protocol 2
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
Após cada alteração:
Bashsudo sshd -t sudo systemctl restart sshd
🔄 Criar um utilizador com sudo (se necessário)
Bash1sudo adduser myuser 2sudo usermod -aG sudo myuser 3su - myuser 4sudo whoami 5# Deve mostrar "root"
✅ Verificação final
Bashsudo systemctl status sshd sudo ss -tlnp | grep ssh sudo sshd -T | grep port sudo tail -f /var/log/auth.log
🛡️ Proteção adicional com fail2ban
Bashsudo apt update sudo apt install fail2ban -y sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Configuração recomendada para SSH:
INI1[sshd] 2enabled = true 3port = 2222 4maxretry = 3 5bantime = 3600 6findtime = 600
Bashsudo systemctl start fail2ban sudo systemctl enable fail2ban sudo fail2ban-client status sshd
🆘 Resolução de problemas
Não consigo ligar-me via SSH
- Use a sessão de reserva (Terminal 2 que manteve aberto)
- Sem sessão de reserva: contacte o suporte Infrawire ou use a consola VNC/KVM:
Bash
sudo nano /etc/ssh/sshd_config # Repor Port 22 sudo systemctl restart sshd
A porta SSH não responde
Bashsudo netstat -tlnp | grep ssh sudo ufw status | grep 2222 sudo journalctl -u sshd -n 50
📚 Recursos adicionais
❓ Perguntas frequentes
P: Que porta devo escolher para SSH?
R: Entre 1024 e 65535. Evite portas comuns (80, 443, 3306). Portas como 2222, 2200 ou 1022 são boas opções.
P: Preciso mesmo de alterar a porta SSH?
R: É altamente recomendado. Reduz significativamente os ataques automatizados de brute force.
P: Como ligar com a nova porta?
R: Use a opção -p: ssh -p 2222 user@your-ip
Boa segurança! 🚀