Você trancou o SSH com chave, ativou o firewall — e mesmo assim os logs mostram milhares de tentativas de login. Os bots não desistem. O fail2ban é o segurança que fica de olho: ele lê os logs, percebe quem está insistindo e bane o IP automaticamente. É proteção que trabalha sozinha, 24 horas por dia.
O que o fail2ban faz
O fail2ban monitora os arquivos de log dos seus serviços em busca de padrões de ataque — como várias falhas de login seguidas do mesmo IP. Quando o limite é atingido, ele cria uma regra de firewall que bloqueia aquele IP por um tempo. O atacante bate na porta, erra algumas vezes e... some. Sem você fazer nada.
Ele funciona para muito mais que SSH: web (Apache/Nginx), e-mail, FTP, WordPress e praticamente qualquer serviço que gere log.
Instalação
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
Só isso já ativa a proteção padrão para o SSH. Mas o certo é configurar direito.
Configuração: use jail.local, nunca jail.conf
O fail2ban se organiza em jails (uma "cela" por serviço). A regra de ouro: nunca edite o jail.conf (ele é sobrescrito nas atualizações). Crie um /etc/fail2ban/jail.local — ele tem prioridade e sobrevive aos updates.
Um jail.local básico e sensato:
[DEFAULT]
# Tempo de banimento (10 minutos). Use -1 para permanente.
bantime = 10m
# Janela em que as falhas são contadas
findtime = 10m
# Nº de falhas antes de banir
maxretry = 5
# Nunca banir o seu próprio IP
ignoreip = 127.0.0.1/8 SEU.IP.FIXO.AQUI
[sshd]
enabled = true
Depois recarregue:
sudo systemctl restart fail2ban
💡 Coloque seu IP no
ignoreippara não correr o risco de banir a si mesmo se errar a senha algumas vezes.
Banimento progressivo (avançado e recomendado)
Um IP que ataca hoje, ataca de novo amanhã. O fail2ban pode aumentar o tempo de banimento a cada reincidência — o primeiro ban dura minutos, o segundo horas, o terceiro dias. Isso se ativa com as opções de bantime.increment, desencorajando reincidentes sem trabalho manual.
Comandos úteis do dia a dia
sudo fail2ban-client status # lista as jails ativas
sudo fail2ban-client status sshd # detalhe do SSH: IPs banidos, tentativas
sudo fail2ban-client set sshd unbanip X # desbanir um IP (se banir alguém por engano)
O status sshd é ótimo para ver o ataque acontecendo: quantas tentativas, de quantos IPs, quantos já foram banidos. É revelador na primeira vez.
Fail2ban + as outras camadas
O fail2ban não substitui nada — ele completa:
- Com o SSH por chave, o bot já não consegue entrar; o fail2ban ainda o expulsa para limpar os logs e poupar recursos.
- Com o firewall, você fecha portas; o fail2ban protege as que precisam ficar abertas.
Juntos, eles transformam seu servidor de alvo fácil em fortaleza silenciosa.
Proteção que roda sozinha, numa VPS sua
O fail2ban precisa de acesso ao sistema e aos logs — só possível numa VPS com root. A VittHost oferece VPS com root e IP dedicado, no Brasil e no Canadá, com proteção de rede na base:
Continue a blindagem: garanta o HTTPS com SSL/TLS nos seus serviços web.

