Base de Conhecimento

Fail2ban na VPS: como instalar e proteger o SSH

  • fail2ban, ssh, vps, segurança, ubuntu
  • Usuários acharam útil: 0

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

Arte da Eleven Host: janela de terminal com o título: Fail2ban na VPS: como instalar e proteger o SSH

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 = 1h sobe o bloqueio de 10 minutos para 1 hora. É um exemplo, ajuste ao seu gosto.
  • findtime = 10m e maxretry = 5 repetem os padrões: 5 erros em 10 minutos geram o bloqueio.
  • ignoreip lista endereços que não serão bloqueados, separados por espaço ou vírgula. Troque 203.0.113.10 pelo 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, e enabled = true liga 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 status lista as jails ativas.
  • sudo fail2ban-client status sshd mostra as falhas atuais, o total de falhas e os IPs banidos.
  • sudo tail -n 50 /var/log/fail2ban.log mostra 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 fail2ban e ligado com sudo systemctl enable --now fail2ban.
  • 4. Configuração no jail.local, sem editar o jail.conf, com [sshd] e enabled = 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 unbanip e 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.

Esta resposta lhe foi útil?

Artigos Relacionados