Fail2ban na VPS: como instalar e proteger o SSH
Aprenda a instalar o fail2ban, escrever o jail.local, conferir IPs bloqueados, desbloquear o seu e usar a jail recidive sem se trancar.
Por Redação Eleven Host · @robson.direitodigital · 27 de outubro de 2026 · 7 min de leitura

Capa da Redação Eleven Host para o guia: Fail2ban na VPS: como instalar e proteger o SSH Arte: Eleven Host
O fail2ban lê os registros do servidor e bloqueia por um tempo o endereço IP que erra a senha do SSH várias vezes. Para usar na VPS, instale o pacote, crie o arquivo jail.local e ligue a jail sshd.
Neste guia você instala o fail2ban, escreve a configuração linha a linha, confere quem foi bloqueado, desbloqueia um IP e evita se trancar para fora do próprio servidor. Os comandos valem para Ubuntu, e os valores são exemplos: troque 203.0.113.10 e a porta pelos seus.
O que o fail2ban faz (e o que ele não faz)
Um servidor ligado à internet pode receber tentativas de login de desconhecidos. O fail2ban acompanha os logs, que são os registros do que acontece no servidor. Quando um endereço erra a senha mais vezes do que o permitido dentro de um intervalo, ele coloca esse IP no firewall e o bloqueia por um período.
Ele não substitui a chave SSH nem o firewall: ele soma a eles. Por isso a ordem sugerida de proteção é chave SSH, firewall, fail2ban e atualizações, e o checklist no fim do artigo repete essa ordem.
Instalar e ligar o fail2ban
No Ubuntu, atualize a lista de pacotes e instale:
sudo apt update
sudo apt install fail2ban
Depois ligue o serviço e deixe que ele inicie junto com o sistema, com um comando só:
sudo systemctl enable --now fail2ban
Para conferir se está rodando, use sudo systemctl status fail2ban.
Crie o jail.local em vez de editar o jail.conf
O arquivo /etc/fail2ban/jail.conf traz o aviso "YOU SHOULD NOT MODIFY THIS FILE". Quem mexe nele corre o risco de perder a alteração em uma atualização do pacote. A forma indicada é criar o /etc/fail2ban/jail.local (ou arquivos em /etc/fail2ban/jail.d/ terminados em .local), que as atualizações não sobrescrevem. No jail.local você escreve só o que quer mudar.
O que vem por padrão
No jail.conf, os valores padrão são estes:
bantime = 10m: por quanto tempo o IP fica bloqueado.findtime = 10m: a janela de tempo em que as falhas são contadas.maxretry = 5: quantas tentativas erradas cabem na janela.
As jails também vêm com enabled = false, ou seja, desligadas até você ligar. O servidor local nunca é bloqueado (é a opção ignoreself), e o ignoreip vem comentado, com o exemplo 127.0.0.1/8 ::1.
Um jail.local comentado, linha a linha
Crie o arquivo com sudo nano /etc/fail2ban/jail.local e escreva:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 203.0.113.10
[sshd]
enabled = true
Lendo cada linha:
[DEFAULT]abre a seção com os valores que valem para todas as jails.bantime = 1hsobe o bloqueio de 10 minutos para 1 hora. É um exemplo, ajuste ao seu gosto.findtime = 10memaxretry = 5repetem os padrões: 5 erros em 10 minutos geram o bloqueio.ignoreiplista endereços que não serão bloqueados, separados por espaço ou vírgula. Troque203.0.113.10pelo IP fixo de onde você acessa. Se o seu IP muda, não coloque nenhum IP seu aqui.[sshd]abre a seção da jail do SSH, eenabled = trueliga essa jail.
Se você trocou a porta do SSH
Quando o SSH escuta em outra porta, diga isso à jail. Dentro do [sshd], acrescente a linha abaixo (2222 é um exemplo):
port = 2222
Salve o arquivo e aplique com sudo systemctl restart fail2ban. Outra opção é sudo fail2ban-client reload, que recarrega a configuração.
Se você ainda entra por senha, vale conhecer a alternativa: o guia Como criar chave SSH e entrar na VPS sem senha explica como criar a chave e reduzir o risco de senha.
Quer testar o fail2ban em um servidor seu? Veja os planos de VPS a partir de R$ 17,00/mês, no Plano Bronze; confira na loja o que cada plano inclui. Ver planos de VPS
Conferir quem foi bloqueado e desbloquear um IP
Com o serviço rodando, estes comandos mostram o que está acontecendo:
sudo fail2ban-client statuslista as jails ativas.sudo fail2ban-client status sshdmostra as falhas atuais, o total de falhas e os IPs banidos.sudo tail -n 50 /var/log/fail2ban.logmostra as últimas 50 linhas do log do próprio fail2ban.
Para desbloquear um IP, por exemplo o seu, depois de errar a senha demais:
sudo fail2ban-client set sshd unbanip 203.0.113.10
Se o serviço não sobe
Se o fail2ban não inicia e o log ou o status reclama que não encontra o arquivo de log do SSH, o sistema pode estar registrando só no journal do systemd. Nesse caso, acrescente esta linha no [sshd] e reinicie o serviço:
backend = systemd
Reinicie com sudo systemctl restart fail2ban e confira de novo com sudo fail2ban-client status sshd.
Antes de fechar a sessão do SSH, abra uma segunda sessão e teste o login nela. Se o fail2ban ou a porta estiverem errados, a primeira sessão ainda está aberta para você corrigir.
Bloquear por mais tempo quem volta: a jail recidive
Quem insiste pode voltar quando o bloqueio acaba. Para esses casos existe a jail recidive, descrita no próprio arquivo como a jail "para banimento mais longo de abusadores persistentes". Ela lê o /var/log/fail2ban.log, ou seja, observa quem já foi banido pelo fail2ban. Os padrões são bantime = 1w (uma semana) e findtime = 1d (um dia), e o bloqueio vale para todas as portas.
Para ligar, acrescente ao jail.local:
[recidive]
enabled = true
Aplique com sudo systemctl restart fail2ban. Como o bloqueio da recidive é longo e vale para todas as portas, confira se o seu IP está no ignoreip (quando ele é fixo) antes de ligar.
Não se tranque para fora
Um erro possível com o fail2ban é bloquear o próprio IP. Para evitar, siga estes cuidados:
- Faça os testes com outra sessão SSH aberta, como no aviso acima.
- Guarde o IP de onde você acessa e o comando
unbanip, para usá-lo se precisar. - Se o seu IP é fixo, coloque-o no
ignoreip. Se muda, deixe de fora. - Reduza o risco de errar a senha usando chave SSH, como no guia Como criar chave SSH e entrar na VPS sem senha.
Cuide também do firewall. O fail2ban bloqueia quem erra a senha, e o firewall decide quais portas ficam abertas; o guia Firewall para VPS: como proteger seu servidor mostra como configurar essa parte. E mantenha o sistema em dia com o artigo Atualizar Ubuntu Server: guia seguro para a sua VPS.
Checklist de proteção do SSH
- 1. Chave SSH criada e testada em uma sessão separada.
- 2. Firewall ligado, com a porta do SSH liberada antes de ativar.
- 3. Fail2ban instalado com
sudo apt install fail2bane ligado comsudo systemctl enable --now fail2ban. - 4. Configuração no
jail.local, sem editar ojail.conf, com[sshd]eenabled = true. - 5. Porta do SSH informada na jail, se foi trocada.
- 6. Status conferido com
sudo fail2ban-client status sshd. - 7. IP anotado para o
unbanipe outra sessão aberta durante os testes. - 8. Atualizações do sistema em dia.
Prefere ter o seu próprio servidor para praticar? Os planos de VPS começam em R$ 17,00/mês, no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
Qual é a diferença entre jail.conf e jail.local?
O jail.conf traz os padrões do projeto e pode ser sobrescrito por atualizações. O jail.local é o arquivo para as suas mudanças, e as atualizações não o sobrescrevem.
Como ver os IPs bloqueados pelo fail2ban?
Rode sudo fail2ban-client status sshd. A resposta traz as falhas atuais, o total de falhas e a lista de IPs banidos.
Como desbloquear meu IP?
Use sudo fail2ban-client set sshd unbanip 203.0.113.10, trocando o exemplo pelo seu IP. Se o seu acesso foi bloqueado, faça isso por uma sessão SSH que já estava aberta.
O fail2ban substitui a chave SSH e o firewall?
Não. Ele soma a essas proteções. A ordem sugerida é chave SSH, firewall, fail2ban e atualizações.
O que fazer se o fail2ban não inicia?
Leia o log com sudo tail -n 50 /var/log/fail2ban.log. Se ele reclamar que não encontra o arquivo de log do SSH, acrescente backend = systemd no [sshd] e reinicie o serviço.