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:
- Confirme que você possui acesso
sudoou root. - Mantenha a sessão SSH atual aberta durante os testes.
- Tenha acesso ao console da VPS pelo painel da hospedagem.
- Crie um snapshot ou backup antes de mudanças maiores.
- Descubra seu IP público para conseguir removê-lo de um bloqueio.
- 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ção | Exemplo | Função |
|---|---|---|
maxretry | 5 | Quantidade de falhas aceita |
findtime | 10m | Janela em que as falhas são contadas |
bantime | 1h | Duraçã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.confe 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.