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.

42 visualizações

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

O Secure Shell (SSH) é a espinha dorsal do gerenciamento remoto para praticamente todos os servidores Linux. Embora incrivelmente poderoso e geralmente seguro por padrão, o SSH também é o principal alvo de atores mal-intencionados que tentam obter acesso não autorizado por meio de ataques de força bruta, ataques de dicionário e preenchimento de credenciais (credential stuffing).

Reforçar a sua configuração SSH é, sem dúvida, o passo mais crítico na proteção de uma nova implantação Linux. Ao implementar algumas práticas recomendadas principais — indo além da simples autenticação de nome de usuário e senha — você pode reduzir drasticamente sua superfície de ataque, minimizar o ruído em seus logs e garantir que apenas usuários autorizados usando métodos seguros possam acessar seu sistema.

Este guia descreve passos essenciais e acionáveis para proteger o serviço SSH em qualquer distribuição Linux, com foco no arquivo de configuração principal: /etc/ssh/sshd_config.


Pré-requisito: Backup da Configuração

Antes de fazer quaisquer alterações na configuração do daemon SSH (sshd_config), é crucial criar um backup. Uma configuração incorreta pode bloquear seu acesso ao servidor. Sempre teste as alterações minuciosamente.

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

Após editar o arquivo, verifique a sintaxe antes de reiniciar o serviço:

sudo sshd -t

Se o teste for aprovado, você poderá reiniciar o serviço SSH com segurança (o comando varia conforme a distribuição):

# Para sistemas que usam systemd (a maioria das distribuições modernas)
sudo systemctl restart sshd

1. Desabilitar o Login como Root

Permitir o login direto como usuário root é um dos maiores riscos de segurança. Se um invasor conseguir forçar a senha, ele terá controle total instantâneo do sistema. Em vez disso, usuários que não sejam root devem fazer login primeiro e elevar privilégios usando sudo.

Passo de Configuração

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

# Antes:
# PermitRootLogin yes

# Depois (Melhor Prática):
PermitRootLogin no

Nota Importante

Certifique-se de ter criado e configurado pelo menos um usuário padrão com privilégios sudo antes de desabilitar o login root. Caso contrário, você ficará sem acesso administrativo.

2. Implementar Autenticação Obrigatória Baseada em Chave

A autenticação por senha é suscetível a ataques de força bruta e de dicionário. As chaves SSH, compostas por uma chave pública (no servidor) e uma chave privada (no cliente), oferecem segurança significativamente maior devido à sua extrema complexidade e tamanho.

A. Gerar e Instalar Chaves

  1. Gerar o Par de Chaves (na sua máquina cliente local):
    bash ssh-keygen -t ed25519 -C "[email protected]"
  2. Copiar a Chave Pública (para o servidor):
    bash ssh-copy-id -i ~/.ssh/id_ed25519 usuario@seu_ip_do_servidor

B. Desabilitar a Autenticação por Senha

Assim que confirmar que pode 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

Melhor Prática: Use tipos de chave fortes como Ed25519 ou RSA de 4096 bits. Sempre proteja a chave privada com uma senha forte (passphrase).

3. Alterar a Porta Padrão do SSH (Defesa em Profundidade)

A porta SSH padrão (porta TCP 22) é constantemente escaneada por bots automatizados. Mudar a porta para um número alto e não padrão (ex: 2222, 22222 ou 30000+) reduz significativamente a quantidade de ruído nos logs do seu servidor e o torna invisível para scanners casuais.

Passo de Configuração

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

# Antes:
# Port 22

# Depois (Porta não padrão de exemplo):
Port 22222

Aviso: Ajuste de Firewall Necessário

Se você alterar a porta, você deve atualizar seu firewall (ex: iptables, firewalld ou Grupos de Segurança da AWS) para permitir o tráfego na nova porta. A falha em fazer isso resultará em perda imediata de conexão.

Exemplo usando firewalld (CentOS/RHEL):

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

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

Para impor um controle de acesso rigoroso, você deve definir explicitamente quais usuários ou grupos têm permissão para se conectar via SSH. Isso limita potenciais pontos de entrada, mesmo que uma conta seja comprometida ou esteja sem uso.

Diretivas de Configuração

Use uma ou ambas as seguintes diretivas em sshd_config:

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

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

5. Impor Protocolo e Cifras Mais Fortes

Certifique-se de estar usando o moderno e seguro Protocolo SSH 2 e imponha o uso de cifras criptográficas fortes e Códigos de Autenticação de Mensagem (MACs).

Passos de Configuração

Verifique se protocolos antigos e vulneráveis estão desabilitados:

Protocol 2

# Negar métodos de autenticação legados inseguros
HostbasedAuthentication no
IgnoreRhosts yes

Embora as implementações SSH modernas geralmente estejam bem configuradas por padrão, definir explicitamente cifras e MACs fortes pode evitar ataques de downgrade (rebaixamento). Um conjunto mínimo recomendado inclui:

Ciphers [email protected],[email protected]
MACs hmac-sha2-512,hmac-sha2-256

6. Implementar Limitação de Taxa e Detecção de Intrusão (Fail2Ban)

Mesmo com autenticação baseada em chave, a sondagem contínua por bots consome recursos e lota os logs. O Fail2Ban é uma ferramenta crítica que monitora logs em busca de tentativas de login falhas (ou outra atividade suspeita) e ajusta dinamicamente o firewall para banir temporária ou permanentemente o endereço IP de origem.

Instalação e Configuração (Passos Gerais)

  1. Instalar o Fail2Ban:
    ```bash
    # Debian/Ubuntu
    sudo apt update && sudo apt install fail2ban

    RHEL/CentOS/Fedora

    sudo dnf install fail2ban
    `` 2. **Configurar a "Jail" SSH:** O Fail2Ban usa configurações chamadas 'jails' (prisões). A jailsshdpadrão é altamente eficaz no monitoramento de/var/log/auth.log` (ou equivalente) em busca de falhas repetidas no serviço SSH e na aplicação automática de banimentos temporários.

  2. Garantir que o Serviço Esteja em Execução:
    bash sudo systemctl enable fail2ban sudo systemctl start fail2ban

O Fail2Ban mitiga significativamente tentativas automatizadas de força bruta e é considerado obrigatório para servidores voltados para a internet.

7. Outras Diretivas Essenciais de Reforço do SSH

Estes ajustes menores ajudam a gerenciar sessões e reduzir a janela de ataque potencial:

Diretiva Valor Recomendado Propósito
ClientAliveInterval 300 Envia um pacote nulo a cada 300 segundos (5 minutos) para manter a sessão ativa.
ClientAliveCountMax 3 Número máximo de verificações de 'ativação' falhadas antes da desconexão (15 minutos de tempo ocioso total).
UsePAM yes Habilita Módulos de Autenticação Plugáveis (PAM) para políticas de segurança adicionais do sistema local.
PermitEmptyPasswords no Proíbe que usuários com senhas vazias façam login (deve ser no por padrão).

Resumo do Checklist de Reforço

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

  1. [ ] Fazer backup de sshd_config antes de fazer alterações.
  2. [ ] Definir PermitRootLogin no.
  3. [ ] Definir PasswordAuthentication no (após configurar a chave).
  4. [ ] Mudar a Port para um valor não padrão.
  5. [ ] Atualizar o firewall para permitir a nova porta.
  6. [ ] Usar AllowUsers ou AllowGroups para restringir o acesso.
  7. [ ] Definir Protocol 2.
  8. [ ] Instalar e configurar o Fail2Ban.
  9. [ ] Verificar a configuração com sshd -t antes de reiniciar.

Ao implementar estas melhores práticas, você transforma o SSH de um potencial passivo em um canal de administração remota altamente seguro.