Melhores Práticas para o Reforço da Segurança SSH em Servidores Linux

Proteja seu servidor Linux imediatamente dominando estas técnicas essenciais de reforço de segurança SSH. Este guia especializado oferece passos práticos, focando em mudanças de configuração no `sshd_config`. Aprenda a desabilitar o login de root de alto risco, implementar autenticação obrigatória baseada em chaves para eliminar senhas fracas, alterar a porta padrão e instalar o Fail2Ban para limitação de taxa eficaz contra ataques de força bruta. Proteja seu sistema transformando o SSH em um canal robusto e seguro.

Melhores Práticas para Reforçar a Segurança SSH em Servidores Linux

O SSH é geralmente a primeira porta que você abre em um servidor Linux, portanto, reforçar a segurança SSH deve acontecer antes de expor esse host à internet. Bots constantemente tentam senhas fracas, credenciais reutilizadas e contas padrão na porta 22.

O objetivo é simples: manter o acesso remoto utilizável para você e doloroso para os atacantes. Comece a partir de uma segunda sessão de terminal, mantenha sua sessão SSH atual aberta e teste cada alteração antes de reiniciar o daemon.

Faça Backup e Teste a Configuração Primeiro

Antes de editar /etc/ssh/sshd_config, faça um backup. Um erro de digitação pode bloquear você do servidor.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak_$(date +%F)

Após editar, verifique a sintaxe:

sudo sshd -t

Se o teste passar, recarregue ou reinicie o SSH. O nome do serviço é comumente sshd em sistemas estilo RHEL e ssh no Debian/Ubuntu:

sudo systemctl restart sshd
# ou
sudo systemctl restart ssh

1. Desabilitar Login Root

O login direto como root dá ao atacante o nome de usuário mais valioso logo de início. Use uma conta de usuário normal e eleve privilégios com sudo quando precisar de acesso administrativo.

Etapa de Configuração

Abra /etc/ssh/sshd_config e localize a diretiva PermitRootLogin. Altere seu valor para no.

# Antes:
# PermitRootLogin yes

# Depois (Melhor Prática):
PermitRootLogin no

Antes de reiniciar o SSH, confirme que você consegue fazer login como um usuário padrão com privilégios sudo.

2. Exigir Autenticação Baseada em Chave

A autenticação por senha é fácil de atacar em escala. As chaves SSH são mais difíceis de adivinhar, mais fáceis de rotacionar e mais seguras para administração diária quando você protege a chave privada com uma frase secreta.

Gerar e Instalar Chaves

  1. Gere o par de chaves em sua máquina local:
    ssh-keygen -t ed25519 -C "[email protected]"
    
  2. Copie a chave pública para o servidor:
    ssh-copy-id -i ~/.ssh/id_ed25519 usuario@ip_do_seu_servidor
    

Desabilitar Autenticação por Senha

Assim que confirmar que consegue fazer login com sucesso usando sua chave SSH, desabilite completamente a autenticação por senha.

# Desabilitar senhas
PasswordAuthentication no

# Garantir que as chaves estejam habilitadas
PubkeyAuthentication yes

Ed25519 é um bom padrão para novas chaves. Se precisar de RSA para compatibilidade com sistemas mais antigos, use uma chave grande, como 4096 bits.

3. Considere Alterar a Porta SSH Padrão

Alterar o SSH da porta TCP 22 para uma porta não padrão pode reduzir varreduras automatizadas ruidosas. Isso não substitui chaves, controles de acesso ou limitação de taxa, porque qualquer um ainda pode descobrir a porta aberta com uma varredura.

Etapa de Configuração

No /etc/ssh/sshd_config, altere a diretiva Port:

# Antes:
# Port 22

# Depois (Exemplo de porta não padrão):
Port 22222

Atualize seu firewall e qualquer grupo de segurança na nuvem antes de reiniciar o SSH. Caso contrário, seu novo daemon SSH pode estar ouvindo em uma porta que você não consegue alcançar.

Exemplo usando firewalld (CentOS/RHEL):

sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload

4. Limitar Acesso a Usuários e Grupos Específicos

Se apenas um pequeno conjunto de pessoas deve usar SSH, especifique isso no sshd_config. Isso bloqueia contas locais esquecidas de se tornarem pontos de entrada remotos.

Diretivas de Configuração

Use uma ou ambas as seguintes diretivas no sshd_config:

  1. Permitir usuários específicos:
    AllowUsers alice bob
    
  2. Permitir grupos específicos:
    AllowGroups sshaccess admins
    

Se essas diretivas estiverem presentes, qualquer usuário ou grupo não listado explicitamente terá o acesso negado.

5. Manter Padrões SSH Modernos e Desabilitar Métodos Legados

As versões atuais do OpenSSH já usam o protocolo SSH 2; o suporte ao protocolo 1 mais antigo foi removido do OpenSSH moderno. Evite copiar trechos de configuração antigos que incluam diretivas Protocol não suportadas ou uma lista de cifras desatualizada. Isso pode quebrar o SSH após uma atualização.

Concentre-se em desabilitar mecanismos de confiança legados, a menos que você saiba que precisa deles:

HostbasedAuthentication no
IgnoreRhosts yes
PermitEmptyPasswords no

Se sua organização exigir uma política personalizada de cifras, MAC ou troca de chaves, verifique o que seu servidor instalado suporta antes de alterá-lo:

sshd -T | grep -E '^(ciphers|macs|kexalgorithms) '

Em seguida, aplique apenas uma política testada que corresponda à sua base de clientes. Uma lista muito restritiva pode bloquear hosts de automação mais antigos.

6. Adicionar Limitação de Taxa com Fail2Ban

Mesmo com autenticação baseada em chave, sondagens repetidas desperdiçam recursos e poluem logs. O Fail2Ban monitora logs de autenticação e adiciona banimentos temporários no firewall após falhas repetidas.

  1. Instale o Fail2Ban:

    # Debian/Ubuntu
    sudo apt update && sudo apt install fail2ban
    
    # RHEL/CentOS/Fedora
    sudo dnf install fail2ban
    
  2. Habilite a jaula sshd. Muitos sistemas vêm com uma configuração padrão, mas você deve colocar substituições locais em /etc/fail2ban/jail.local ou em um arquivo em /etc/fail2ban/jail.d/.

    [sshd]
    enabled = true
    port = 22222
    maxretry = 5
    bantime = 1h
    
  3. Inicie o serviço:

    sudo systemctl enable --now fail2ban
    

Se você alterou a porta SSH, faça a jaula do Fail2Ban corresponder à nova porta.

7. Ajustar Configurações de Sessão e Autenticação

Essas configurações ajudam a fechar sessões ociosas e remover caminhos de autenticação fracos:

Diretiva Valor Recomendado Propósito
ClientAliveInterval 300 Envia uma verificação de atividade do lado do servidor a cada 300 segundos.
ClientAliveCountMax 3 Desconecta após três verificações sem resposta.
UsePAM yes Habilita Módulos de Autenticação Plugáveis (PAM) para políticas de segurança adicionais do sistema local.
PermitEmptyPasswords no Bloqueia contas com senhas vazias de fazer login.
MaxAuthTries 3 Limita tentativas de autenticação repetidas por conexão.
X11Forwarding no Desabilita o encaminhamento X11 a menos que você realmente o use.

Lista de Verificação de Reforço

Use esta lista de verificação para garantir que seu servidor atenda aos padrões básicos de reforço SSH:

  1. Faça backup do sshd_config antes de fazer alterações.
  2. Defina PermitRootLogin no.
  3. Defina PasswordAuthentication no (após configurar a chave).
  4. Altere a Port para um valor não padrão.
  5. Atualize o firewall para permitir a nova porta.
  6. Use AllowUsers ou AllowGroups para restringir o acesso.
  7. Desabilite métodos de confiança legados, como HostbasedAuthentication.
  8. Instale e configure o Fail2Ban.
  9. Verifique a configuração com sshd -t antes de reiniciar.

Reforçar a segurança SSH funciona melhor como defesa em camadas. Chaves impedem a adivinhação de senhas, restrições de usuário reduzem quem pode se conectar, regras de firewall limitam de onde as conexões vêm e o Fail2Ban desacelera sondagens repetidas. Mantenha uma sessão de trabalho aberta enquanto testa, depois documente a nova porta e o método de login para qualquer pessoa que opere o servidor.