O SSH é a porta de entrada para o seu servidor Linux. Todo servidor exposto à internet recebe milhares de tentativas de login por força bruta diariamente — bots automatizados escaneando por senhas fracas, credenciais padrão e serviços mal configurados. Uma única sessão SSH comprometida dá ao atacante controle total. Este guia o conduz por 12 passos concretos para proteger o SSH, cada um com as mudanças de configuração exatas que você precisa fazer.
Antes de começar: Sempre mantenha uma sessão de terminal separada aberta enquanto faz mudanças na configuração SSH. Se você configurar algo incorretamente, pode usar a sessão existente para corrigir.
Passo 1: Desabilitar Login Root
PermitRootLogin no
Passo 2: Usar Autenticação Baseada em Chave
ssh-keygen -t ed25519 -C "seunome@estacao"
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip-do-seu-servidor
Passo 3: Desabilitar Autenticação por Senha
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Passo 4: Mudar a Porta SSH Padrão
Port 2222
Passo 5: Usar Apenas Protocolo SSH 2
Protocol 2
Passo 6: Limitar Acesso de Usuários
AllowUsers deployer admin
AllowGroups sshusers
Passo 7: Definir Timeout de Inatividade
ClientAliveInterval 300
ClientAliveCountMax 2
Passo 8: Usar Algoritmos de Chave Fortes
KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
Ciphers [email protected],[email protected],[email protected]
MACs [email protected],[email protected]
Passo 9: Instalar e Configurar Fail2ban
sudo apt install fail2ban -y
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
Passo 10: Configurar Regras de Firewall com UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH'
sudo ufw enable
Passo 11: Habilitar Autenticação de Dois Fatores (2FA)
sudo apt install libpam-google-authenticator -y
google-authenticator
Passo 12: Usar SSH Config para Conveniência
Host meuservidor
HostName 203.0.113.50
Port 2222
User deployer
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Referência Completa do sshd_config
Port 2222
Protocol 2
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PubkeyAuthentication yes
MaxAuthTries 3
AllowGroups sshusers
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no
AllowTcpForwarding no
LogLevel VERBOSE
Conclusão
O hardening SSH não é opcional para qualquer servidor exposto à internet. Implemente estes 12 passos em ordem, testando cada mudança antes de prosseguir. Os passos mais impactantes são autenticação baseada em chave (Passo 2), desabilitar login por senha (Passo 3) e instalar fail2ban (Passo 9). Combinados, eles eliminam mais de 99% dos ataques SSH comuns.