SSH HARDENING — SECURITY LAYERS Attacker Brute Force Bot Scans port 22 X Port Change Non-standard port (49152+) sshd_config Firewall UFW rules fail2ban Rate limiting IP banning Key Auth ED25519 keys No passwords No root login authorized_keys 2FA / MFA TOTP codes Google Auth PAM module pam_google Server Hardened SSH Access Secured Each layer adds defense against unauthorized SSH access

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,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

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.