Fail2ban em VPS Linux: como bloquear ataques de força bruta no SSH

Tempo de leitura: 6 minutos

Uma VPS Linux conectada à internet começa a receber tentativas automáticas de acesso em pouco tempo. Bots testam usuários, senhas e portas conhecidas continuamente. O Fail2ban ajuda a reduzir esse risco ao identificar falhas repetidas de autenticação e bloquear temporariamente o endereço IP responsável.

Neste guia, você vai aprender a instalar e configurar o Fail2ban em uma VPS Linux, proteger o SSH contra ataques de força bruta, validar os bloqueios e evitar o erro mais comum: banir o próprio acesso administrativo.

O que é Fail2ban e como ele funciona?

O Fail2ban monitora registros de serviços, procura padrões de tentativas mal-sucedidas e executa uma ação quando o limite configurado é atingido. Normalmente, essa ação cria uma regra temporária no firewall para impedir novas conexões do IP identificado.

  • Filtro: reconhece eventos suspeitos nos logs.
  • Jail: combina filtro, serviço, limites e ação de bloqueio.
  • Findtime: janela usada para contar tentativas.
  • Maxretry: número de falhas permitido nessa janela.
  • Bantime: tempo de permanência do bloqueio.

Ele é uma camada complementar. Não substitui atualizações, firewall, autenticação por chave, senhas fortes ou uma política de acesso bem definida.

Antes de configurar: evite perder o acesso

Qualquer alteração no SSH ou firewall pode interromper sua sessão. Antes de começar:

  1. Confirme que você possui acesso sudo ou root.
  2. Mantenha a sessão SSH atual aberta durante os testes.
  3. Tenha acesso ao console da VPS pelo painel da hospedagem.
  4. Crie um snapshot ou backup antes de mudanças maiores.
  5. Descubra seu IP público para conseguir removê-lo de um bloqueio.
  6. Verifique qual porta o SSH realmente utiliza.

Se você ainda está começando, veja o guia para acessar uma VPS Linux via terminal.

Como instalar o Fail2ban no Ubuntu ou Debian

Atualize a lista de pacotes e instale o serviço:

sudo apt update
sudo apt install fail2ban -y

Em seguida, habilite a inicialização automática e inicie o Fail2ban:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

O status deve indicar que o serviço está ativo. Se houver erro, consulte o log antes de editar várias opções ao mesmo tempo.

Onde fazer a configuração?

Evite alterar diretamente o arquivo /etc/fail2ban/jail.conf. Ele contém os padrões do pacote e pode ser modificado por uma atualização. O próprio projeto recomenda manter personalizações em jail.local ou em arquivos .local dentro de jail.d.

Para proteger apenas o SSH, crie:

sudo nano /etc/fail2ban/jail.d/sshd.local

Use uma configuração inicial conservadora:

[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h

Em servidores atuais baseados em systemd, o backend systemd permite que a jail consulte os registros pelo journal. A configuração exata pode variar conforme a distribuição. Se o SSH usa uma porta personalizada, substitua ssh pela porta correta.

O que significam maxretry, findtime e bantime?

OpçãoExemploFunção
maxretry5Quantidade de falhas aceita
findtime10mJanela em que as falhas são contadas
bantime1hDuração inicial do bloqueio

Limites agressivos demais aumentam o risco de bloquear usuários legítimos. Comece com valores moderados, acompanhe os eventos e ajuste com base no comportamento real do servidor.

Como validar e ativar a jail do SSH

Teste a configuração antes de reiniciar:

sudo fail2ban-client -t

Se o teste não apresentar erro, reinicie e confira a jail:

sudo systemctl restart fail2ban
sudo fail2ban-client status
sudo fail2ban-client status sshd

O último comando mostra tentativas detectadas, total de IPs banidos e lista de bloqueios ativos. Essa é a verificação mais direta para confirmar que o Fail2ban está acompanhando o SSH.

Como desbloquear um IP manualmente

Se um endereço legítimo for bloqueado, acesse a VPS pelo console ou por outra origem autorizada e execute:

sudo fail2ban-client set sshd unbanip 203.0.113.10

Troque o IP de exemplo pelo endereço correto. Não adicione grandes faixas à lista de exceções sem necessidade. Para conexões administrativas com IP fixo, a opção ignoreip pode ser usada com cautela. Em conexões residenciais com IP dinâmico, uma exceção antiga pode deixar de proteger quem você imagina.

Fail2ban e UFW: como trabalhar em conjunto

O UFW define quais portas ficam disponíveis; o Fail2ban reage a comportamentos abusivos nos serviços permitidos. Antes de ativar o UFW, libere a porta do SSH:

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Se o SSH usa outra porta, crie a regra correspondente antes de habilitar o firewall. Consulte também nosso tutorial sobre como liberar portas no firewall Windows ou Linux.

Camadas extras para proteger o SSH

  • Use autenticação por chave em vez de depender apenas de senha.
  • Desative o login direto de root após validar um usuário com sudo.
  • Considere desativar senhas somente depois de testar a chave em outra sessão.
  • Mantenha OpenSSH e o sistema atualizados.
  • Restrinja a porta por IP quando houver origem administrativa fixa.
  • Revise usuários, chaves autorizadas e tentativas nos logs.
  • Monitore espaço em disco para evitar perda de registros.

Trocar a porta padrão reduz ruído de bots, mas não substitui autenticação forte. Um serviço ainda pode ser descoberto por varredura.

Como acompanhar os bloqueios

Inclua estas verificações na rotina:

sudo fail2ban-client status sshd
sudo journalctl -u fail2ban --since "1 hour ago"
sudo journalctl -u ssh --since "1 hour ago"

O nome da unidade do SSH pode variar entre ssh e sshd. Procure crescimento anormal de tentativas, bloqueios repetidos e falhas do serviço após atualizações.

Erros comuns na configuração

  • Editar jail.conf e perder a alteração em uma atualização.
  • Configurar a porta errada na jail.
  • Usar backend incompatível com os logs da distribuição.
  • Aplicar limites tão baixos que bloqueiam usuários legítimos.
  • Ativar o firewall sem liberar o SSH.
  • Testar o bloqueio sem acesso ao console da VPS.
  • Interpretar Fail2ban como substituto de patches e chaves SSH.

Perguntas frequentes

Fail2ban impede todos os ataques ao servidor?

Não. Ele reduz ataques repetitivos reconhecidos nos logs. Vulnerabilidades de software, credenciais roubadas e serviços mal configurados exigem outras camadas de proteção.

Posso usar Fail2ban com uma porta SSH personalizada?

Sim. Informe a porta correta na jail e confirme que ela também está liberada no firewall.

É seguro desativar autenticação por senha?

É uma boa prática quando a autenticação por chave já foi configurada e testada. Mantenha uma segunda sessão aberta e acesso ao console durante a mudança.

O Fail2ban consome muitos recursos?

Em uma configuração simples para SSH, o consumo costuma ser pequeno. Muitas jails, filtros complexos e logs muito volumosos devem ser monitorados.

Proteja a VPS sem complicar a operação

O Fail2ban oferece uma resposta automática útil contra força bruta no SSH. Quando combinado com firewall, chaves, atualizações e monitoramento, ele reduz ruído malicioso e ajuda a preservar o acesso administrativo.

Precisa de uma infraestrutura Linux no Brasil para aplicações, sites ou automações? Conheça as opções de Cloud VPS da Rubfy e escolha recursos adequados ao seu projeto.