Proteger SSH envolve uma ampla gama de técnicas possíveis, mas nem todas são igualmente práticas para todos os ambientes. As recomendações neste artigo são métodos amplamente reconhecidos e de alto impacto que equilibram a facilidade de implementação com proteção robusta. Elas são extraídas de padrões definidos por organizações como NIST, CERT e o projeto OpenSSH, e refletem os princípios básicos que o SSL.com também aplica na proteção de certificados digitais — protegendo chaves, usando criptografia forte e limitando o acesso privilegiado.
Depois de configurar essas práticas recomendadas básicas, você pode explorar táticas mais avançadas, como SSH baseado em certificado, port knocking ou SSH sobre VPN, conforme necessário.
1. Use autenticação baseada em chave em vez de senhas
O que é:
Você substitui logins de senha por um par de chaves criptográficas pública/privada. A chave pública vai para seu servidor, enquanto a chave privada fica em sua máquina local.
Por que é mais seguro:
- As senhas são suscetíveis a ataques de força bruta
- Um invasor precisa obter fisicamente sua chave privada para invadir, o que é muito mais difícil do que adivinhar uma senha
Como implementar:
Gerar um par de chaves
No Linux ou macOS, abra um terminal e execute:
ssh-keygen -t ed25519
Para segurança extra (se ed25519 não estiver disponível em seu ambiente), você pode usar:
ssh-keygen -t rsa -b 4096
Copie a chave pública para o seu servidor
Você pode usar o comando ssh-copy-id (no Linux/macOS) para transferir facilmente sua chave pública:
ssh-copy-id usuário@endereço_do_servidor
Se ssh-copy-id não estiver disponível, anexe manualmente o conteúdo do seu arquivo id_ed25519.pub (ou id_rsa.pub) ao arquivo ~/.ssh/authorized_keys do servidor.
Desativar autenticação por senha
Em /etc/ssh/sshd_config, defina:
PasswordAuthentication não
Reinicie o serviço SSH:
sudo systemctl restart ssh
Assim como o gerenciamento de certificados digitais, a autenticação baseada em chave SSH garante que somente alguém com a chave privada correta possa estabelecer uma conexão.
2. Desabilite o login root
O que é:
Impedir que o usuário root efetue login diretamente via SSH.
Por que é mais seguro:
- A conta root possui privilégios ilimitados e é um alvo atraente para invasores
- Desabilitar o acesso root direto força os invasores a adivinhar não apenas uma chave ou senha, mas também um nome de usuário válido
Como implementar:
Em /etc/ssh/sshd_config, localize ou adicione:
PermitRootLogin não
Reinicie o SSH:
sudo systemctl restart ssh
Esta etapa efetivamente reduz sua superfície de ataque ao remover a conta mais poderosa do fácil alcance.
3. Aplicar criptografia forte e algoritmos MAC
O que é:
O SSH permite que você especifique quais cifras e códigos de autenticação de mensagens (MACs) usar para criptografar dados e verificar a integridade dos dados.
Por que é mais seguro:
- Algoritmos mais antigos ou fracos (por exemplo, DES, RC4) podem ser vulneráveis a ataques criptográficos
- O uso de cifras modernas (como AES-256) e MACs fortes (como HMAC-SHA2) ajuda a manter os dados da sua sessão confidenciais e à prova de violação
Como implementar:
Em /etc/ssh/sshd_config, adicione ou atualize sua lista de cifras/MAC:
Cifras aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256,hmac-sha2-512
Reinicie o SSH:
sudo systemctl restart ssh
Manter a criptografia atualizada para SSH é tão vital quanto garantir que protocolos e cifras seguros sejam usados em TLS.
4. Mantenha o SSH (e seu sistema) atualizado
O que é:
Garantir que o OpenSSH, juntamente com o restante do seu sistema operacional, receba patches de segurança regularmente.
Por que é mais seguro:
- Software desatualizado frequentemente contém vulnerabilidades conhecidas
- Os invasores geralmente têm como alvo versões mais antigas com exploits não corrigidos
Como implementar:
Em sistemas baseados em Debian ou Ubuntu:
sudo apt-get atualização && sudo atualização apt-get
Em sistemas baseados em CentOS, Fedora ou RHEL:
sudo yum update
Certifique-se também de verificar se há atualizações de firmware se estiver executando SSH em dispositivos de rede ou outro hardware.
5. Implementar autenticação de dois fatores ou multifator (2FA/MFA)
O que é:
Adiciona uma camada extra de segurança ao exigir algo além de uma senha ou chave (por exemplo, um código de uso único no seu telefone).
Por que é mais seguro:
- Mesmo que os invasores obtenham sua chave SSH, eles ainda precisam do segundo fator para efetuar login
- Ajuda a defender contra roubo de credenciais
Como implementar:
Instalar e configurar uma ferramenta MFA
Por exemplo, nos Google Authenticator pode ser instalado em servidores Linux e configurado como um módulo PAM (Pluggable Authentication Modules). Siga as instruções de instalação específicas para sua distribuição.
Editar /etc/pam.d/sshd e /etc/ssh/sshd_config
- Habilitar o Google Authenticator ou outro módulo MFA
- Defina ChallengeResponseAuthentication como sim e AuthenticationMethods como publickey,keyboard-interactive (ou qualquer combinação que seja adequada ao seu ambiente)
Reinicie o SSH:
sudo systemctl restart ssh
6. Habilitar registro e monitoramento
O que é:
Capture eventos de login SSH, rastreie atividades suspeitas e receba alertas quando algo estiver errado.
Por que é mais seguro:
- As tentativas de intrusão geralmente são visíveis nos logs como logins com falha repetidos ou ações não autorizadas
- A detecção precoce significa que você pode responder rapidamente, bloqueando IPs ou alterando configurações antes que o dano seja causado
Como implementar:
Aumentar a verbosidade do log
Em /etc/ssh/sshd_config, defina:
LogLevel VERBOSE
Logs agregados
- Ferramentas como syslog, rsyslogou syslog-of ajudar a coletar e centralizar logs
- A Solução SIEM (Security Information and Event Management) pode oferecer análises e alertas avançados
Use ferramentas de prevenção de intrusão
fail2ban verifica arquivos de log e proíbe IPs que mostram sinais maliciosos, como muitas falhas de senha.
7. Implementar controles e restrições de acesso
O que é:
Limite quem pode se conectar ao SSH e de onde, evitando solicitações de entrada não autorizadas ou excessivas.
Formas de fazer:
Restrições de firewall
Permita SSH somente de endereços IP conhecidos ou confiáveis. Por exemplo, no Linux com ufw:
sudo ufw permitir de 192.168.1.0/24 para qualquer porta 22
Configuração da porta
Executar SSH em uma porta não padrão (por exemplo, 2222) pode reduzir tentativas de escaneamento automatizado. Não é um substituto para medidas de segurança reais, mas pode reduzir o ruído.
Restrições de Usuário/Grupo
Em /etc/ssh/sshd_config, especifique:
PermitirUsuários alice bob
or
Permitir sshadmins de grupos
8. Use frases-senha de chave SSH e armazenamento seguro de chaves
O que é:
Criptografe sua chave privada com uma senha para que, mesmo que sua máquina seja comprometida, a chave em si não possa ser usada imediatamente.
Por que é mais seguro:
- Um arquivo de chave roubado sem uma senha pode conceder acesso instantâneo
- As frases-senha atuam como uma camada adicional de criptografia em sua chave local
Como implementar:
Defina uma frase-senha durante a geração da chave
ssh-keygen -t ed25519
(Você será solicitado a digitar uma senha.)
Proteja seus arquivos principais
Restrinja as permissões para sua pasta .ssh e arquivos de chave:
chmod 700 ~ / .ssh
chmod 600 ~ / .ssh / id_ed25519
Considere módulos de segurança de hardware (HSMs) ou tokens
Para organizações maiores, usar hardware dedicado para armazenamento de chaves pode reduzir os riscos de roubo de software ou malware.
Conclusão
A segurança SSH se resume a camadas de proteção. Ao implementar autenticação baseada em chave, desabilitar acesso root direto, usar criptografia forte, manter-se atualizado, exigir autenticação multifator, monitorar logs, restringir acesso e proteger suas chaves com senhas, você cobre os riscos mais comuns (e mais sérios).
Essas medidas se alinham com a mesma filosofia de segurança mais ampla que a SSL.com defende para certificados digitais: proteger chaves criptográficas, usar criptografia robusta, restringir acesso privilegiado e manter vigilância vigilante sobre seus sistemas. Depois de estabelecer essas melhores práticas fundamentais, você pode explorar opções mais avançadas, como autoridades de certificação SSH, port knocking ou executar SSH em uma VPN para personalizar ainda mais sua postura de segurança.