Melhores Práticas de Segurança SSH: Reforçando Seu Servidor e Cliente
Fortalecer o SSH com autenticação por chave, acesso de privilégio mínimo, hábitos mais seguros do cliente, regras de firewall, MFA e proteção contra força bruta.
Melhores Práticas de Segurança SSH: Fortalecendo seu Servidor e Cliente
As melhores práticas de segurança SSH são importantes porque o SSH é frequentemente a porta de entrada para seus servidores. Uma configuração SSH fraca pode transformar uma senha adivinhada, uma chave roubada ou um erro de host confiável em acesso completo ao shell.
Você não precisa de configurações exóticas para fortalecer bem o SSH. Comece com login baseado em chave, usuários restritos, sem login direto como root, comportamento cuidadoso do cliente e logs que mostrem quando algo está errado.
Fortalecimento da Segurança no Lado do Servidor
Sua configuração do servidor SSH (sshd_config) define as regras de como os clientes se conectam e autenticam.
1. Desabilitar Autenticação por Senha
A autenticação por senha é inerentemente vulnerável a ataques de força bruta. Substituí-la pela autenticação por chave SSH é uma das melhorias de segurança mais eficazes que você pode fazer.
Por quê: As chaves SSH são muito mais complexas que senhas e não podem ser facilmente adivinhadas ou quebradas por métodos de força bruta. Elas fornecem uma forma muito mais forte de autenticação.
Como: Edite seu arquivo
sshd_config(normalmente localizado em/etc/ssh/sshd_config) e definaPasswordAuthentication no. Após fazer as alterações, reinicie o serviço SSH:sudo sshd -t sudo systemctl reload sshdImportante: Certifique-se de ter configurado e testado com sucesso a autenticação por chave SSH antes de desabilitar a autenticação por senha para evitar ficar bloqueado.
Em algumas distribuições, o serviço é nomeado ssh, não sshd. Use o nome do serviço que seu sistema fornece e mantenha uma sessão existente aberta enquanto testa um novo login.
2. Trate as Alterações de Porta como Redução de Ruído
Alterar a porta SSH padrão de 22 pode reduzir o ruído de varreduras automatizadas. Não substitui chaves, correções e controle de acesso.
Como: No
sshd_config, altere a diretivaPort. Por exemplo, para usar a porta2222:Port 2222Lembre-se de atualizar suas regras de firewall para permitir tráfego na nova porta e especificar a porta ao conectar-se a partir do seu cliente:
ssh -p 2222 usuario@ip_do_seu_servidor
3. Limitar Acesso de Usuários e Grupos
Controle quais usuários e grupos têm permissão para fazer login via SSH.
AllowUserseAllowGroups: Use estas diretivas nosshd_configpara especificar explicitamente quem pode conectar.AllowUsers admin usuario1 AllowGroups sshusersDenyUserseDenyGroups: Alternativamente, use estas para bloquear usuários ou grupos específicos.
4. Desabilitar Login como Root
O login direto como root via SSH deve ser desabilitado para evitar que atacantes atinjam a conta mais poderosa imediatamente. Em vez disso, os usuários devem fazer login com suas próprias contas e usar sudo para tarefas administrativas.
- Como: Defina
PermitRootLogin nonosshd_config.
5. Configurar Timeout de Inatividade e Keepalives
Evite que sessões SSH ativas e não supervisionadas permaneçam abertas indefinidamente.
ClientAliveIntervaleClientAliveCountMax: Estas configurações do lado do servidor enviam pacotes nulos para o cliente em intervalos regulares para verificar se a conexão ainda está ativa. Se o cliente não responder apósClientAliveCountMaxtentativas, o servidor desconecta a sessão.ClientAliveInterval 300 # Envia um pacote a cada 5 minutos ClientAliveCountMax 2 # Desconecta após 2 respostas perdidas (10 minutos)
6. Fortalecer Chaves de Host
Certifique-se de que as chaves de host do seu servidor estejam protegidas e gerenciadas adequadamente.
- Permissões: Verifique se os arquivos de chave de host (ex.:
/etc/ssh/ssh_host_rsa_key) têm permissões restritivas (ex.:600) e são propriedade do root. - Algoritmos: Prefira chaves de host modernas como Ed25519 quando seus clientes as suportarem. Não exclua chaves de host existentes sem planejamento, pois os clientes verão isso como uma mudança de identidade do host.
- Rotação: Rode as chaves de host deliberadamente e anuncie as novas impressões digitais através de um canal confiável.
Melhores Práticas de Segurança no Lado do Cliente
Proteger sua máquina cliente e suas chaves SSH é tão crucial quanto o fortalecimento do lado do servidor.
1. Proteja Suas Chaves Privadas
Sua chave privada SSH é a porta de entrada para seus servidores. Trate-a com o máximo cuidado.
- Permissões: Certifique-se de que seu arquivo de chave privada (ex.:
~/.ssh/id_rsa) tenha permissões estritas (ex.:600ou400) para que apenas você possa lê-lo.chmod 600 ~/.ssh/id_rsa - Frases Secretas: Sempre use uma frase secreta forte para criptografar sua chave privada. Isso adiciona uma camada extra de segurança, exigindo a frase secreta mesmo se o arquivo de chave for comprometido.
- Evite Copiar: Não compartilhe sua chave privada com ninguém nem a armazene em locais inseguros.
2. Use o Encaminhamento do Agente SSH com Cuidado
O encaminhamento do agente SSH permite que você use suas chaves SSH locais para autenticar em servidores remotos sem copiar suas chaves privadas para esses servidores. Embora conveniente, pode ser um risco de segurança se o servidor remoto for comprometido.
- Ativar:
ssh -A usuario@ip_do_seu_servidor - Melhor Prática: Desabilite o encaminhamento do agente por padrão. Use-o apenas para hosts em que você confia e prefira alternativas como chaves de deploy, bastion
ProxyJumpou credenciais de curta duração quando se adequarem ao seu fluxo de trabalho.
3. Verifique as Impressões Digitais das Chaves de Host
Ao conectar-se a um servidor SSH pela primeira vez, seu cliente solicita que você verifique a impressão digital da chave de host do servidor. Isso ajuda a prevenir ataques man-in-the-middle.
- Como: Sempre verifique a impressão digital em uma fonte confiável, como seu console de nuvem, logs de provisionamento ou um administrador. Se a impressão digital mudar inesperadamente, pare e investigue antes de aceitá-la.
4. Mantenha o Software do Cliente SSH Atualizado
Certifique-se de que seu software cliente SSH (OpenSSH, PuTTY, etc.) esteja atualizado para se beneficiar dos patches de segurança e recursos mais recentes.
Medidas Avançadas de Segurança
Além das etapas fundamentais, considere estas técnicas avançadas:
1. Autenticação Multifator
Adicione MFA para acesso SSH humano onde seu ambiente suportar. Isso geralmente combina chaves SSH com um código de uso único, aprovação push ou autenticação baseada em hardware.
- Ferramentas: Módulos PAM, Duo, aplicativos autenticadores e chaves de segurança de hardware podem fazer parte de um design de MFA SSH.
2. Fail2ban
O Fail2ban examina logs em busca de repetidas tentativas de autenticação falhas e pode adicionar bloqueios temporários de firewall para o IP de origem. Os caminhos de log variam por distribuição; Debian e Ubuntu normalmente usam /var/log/auth.log, enquanto muitos sistemas da família RHEL registram via journald ou /var/log/secure.
- Instalação: Normalmente disponível via gerenciadores de pacotes (
sudo apt install fail2banousudo yum install fail2ban). - Configuração: Configure jails em
/etc/fail2ban/jail.localpara monitorar logs SSH e definir tempos de banimento e limites.
3. Configuração de Firewall
Empregue um firewall (como ufw, firewalld ou iptables) para restringir o acesso à sua porta SSH (seja padrão ou personalizada) apenas a endereços ou faixas IP confiáveis.
- Exemplo (ufw):
sudo ufw allow from trusted_ip to any port 22 sudo ufw enable
Conclusão
Proteger o SSH é um hábito contínuo. Use autenticação baseada em chave, desabilite o login direto como root, restrinja quem pode conectar, proteja suas chaves privadas e verifique as impressões digitais do host. Em seguida, adicione limites de firewall, MFA e proteção contra força bruta onde o risco justificar a configuração extra.