Como instalar e configurar o Fail2Ban no Linux

9 min de leitura - 14 de maio de 2026

hero section cover
Índice
  • Como instalar e configurar o Fail2Ban no Linux
  • Pré-requisitos
  • Instalar o Fail2Ban no Ubuntu/Debian
  • Configurar Jails
  • Testes e Monitorização
  • Configuração avançada
Partilhar

Guia passo-a-passo para instalar, configurar e testar o Fail2Ban em servidores Linux baseados em Ubuntu, Debian e RHEL.

Como instalar e configurar o Fail2Ban no Linux

O Fail2Ban monitoriza os registos do seu servidor em busca de atividades suspeitas e bloqueia automaticamente os IPs infratores, atualizando as regras da sua firewall. Impede ataques de força bruta, reduz o ruído nos registos e funciona silenciosamente em segundo plano, uma vez configurado. Este guia abrange a instalação no Ubuntu/Debian, a configuração básica, a configuração da jail e algumas opções avançadas que vale a pena conhecer.

Pré-requisitos

O Fail2Ban funciona na maioria das distribuições Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux e Fedora. Vai precisar de:

  • Python 3 instalado no sistema
  • Acesso de root ou sudo para a instalação de pacotes e alterações na firewall
  • Um firewall ativo (iptables, nftables, ufw ou firewalld)
  • Ficheiros de registo que capturam tentativas de início de sessão falhadas (/var/log/auth.log em sistemas baseados em Debian, /var/log/secure em sistemas baseados em RHEL)

Em sistemas baseados em RHEL, ative primeiro o repositório EPEL. Antes de instalar o Fail2Ban, confirme se o seu firewall está em execução com ufw status ou systemctl status firewalld.

Instalar o Fail2Ban no Ubuntu/Debian

Atualize os seus pacotes e instale o Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Ative o serviço para que inicie no arranque e, em seguida, inicie-o:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copie a configuração padrão para um ficheiro de substituição local. Edite sempre jail.local, e não jail.conf, para que as atualizações de pacotes não substituam as suas definições:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Verifique se tudo está a funcionar:

sudo systemctl status fail2ban
sudo fail2ban-client status

O primeiro comando deve mostrar «Active: active (running)». O segundo lista as suas jails ativas. Confirme se o Fail2Ban está ativado no arranque com sudo systemctl is-enabled fail2ban.

Configurar Jails

Definições predefinidas

Abrir /etc/fail2ban/jail.local e ajuste a [DEFAULT] . Estas definições aplicam-se a todas as jails, a menos que sejam substituídas:

ParâmetroValor recomendadoO que faz
bantime3600Bloqueia um IP durante 1 hora
findtime600Conta as falhas num intervalo de 10 minutos
maxretry3 até 5Falhas antes de um banimento ser acionado
ignoreip127.0.0.1/8 ::1IPs que nunca são banidos

Adicione o seu próprio IP de gestão para ignoreip para não ficar sem acesso. Exemplo: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Proteção SSH

Ative a restrição SSH em jail.local:

[sshd]
enabled = true

Verifique se logpath aponta para o ficheiro de registo correto para a sua distribuição. Se tiver mudado o SSH para uma porta não padrão (por exemplo, 2222), atualize o port parâmetro para corresponder.

Proteção do servidor web

Ative a jail que corresponde ao seu servidor web:

  • Nginx: [nginx-http-auth] para falhas de autenticação, [nginx-botsearch] para bots maliciosos
  • Apache: [apache-auth] para autenticação, [apache-badbots] para bots

Recidive Jail

A [recidive] jail deteta IPs que continuam a ser banidos em outros jails e aplica uma penalização mais longa, normalmente de uma semana (604 800 segundos). É útil para atacantes persistentes que variam a sua abordagem.

Após efetuar as alterações, atualize a página:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Testes e Monitorização

Testar bloqueios

Antes de confiar no Fail2Ban em produção, teste-o. A partir de uma máquina remota (não o seu IP de administrador), tente inícios de sessão SSH até exceder maxretry. Deverá ser bloqueado. Confirme com:

sudo fail2ban-client status sshd

Veja os bloqueios a acontecerem em tempo real:

tail -f /var/log/fail2ban.log

Se bloquear acidentalmente um IP legítimo, desbloqueie-o:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Monitorização diária

Analise o histórico de bloqueios pesquisando no log:

grep "Ban\|Unban" /var/log/fail2ban.log

Comandos de gestão úteis:

ComandoFinalidade
fail2ban-client statusListar todas as restrições ativas
fail2ban-client bannedMostrar todos os IPs atualmente banidos
fail2ban-client set <jail> unbanip <IP>Desbloquear um IP específico
fail2ban-client unban --allLimpar todos os bloqueios
fail2ban-client set <jail> banip <IP>Banir manualmente um IP

Os bloqueios persistem após reinicializações. O Fail2Ban armazena-os numa base de dados SQLite em /var/lib/fail2ban/fail2ban.sqlite3.

Configuração avançada

Mudança para nftables

O nftables é o substituto moderno do iptables. Ele lida com IPv4 e IPv6 numa única estrutura, escala melhor com grandes listas de bloqueio e possui limitação de taxa integrada. Se estiver a utilizar o Ubuntu 22.04+, Debian 11+ ou qualquer distribuição recente, esta é a melhor escolha.

Configure-o em jail.local:

[DEFAULT]
banaction = nftables-multiport

Reinicie o Fail2Ban e, em seguida, verifique com sudo nft list ruleset. Deverá ver f2b-table e f2b-chain na saída. Continue a usar apenas o iptables se estiver num sistema mais antigo ou tiver requisitos de compatibilidade.

Notificações por e-mail

Por predefinição, o Fail2Ban bloqueia silenciosamente. Para receber alertas por e-mail, adicione o seguinte à [DEFAULT] secção de jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

A action_mwl ação envia um e-mail com detalhes do banimento, dados WHOIS e as linhas de registo que desencadearam o banimento. Use action_mw se quiser apenas dados WHOIS. Vai precisar de ter instalado um agente de transferência de e-mail como o sendmail, ou de ter um relé SMTP configurado através de algo como msmtp.

Para alertas no Slack ou Discord, crie um script que envie um webhook e configure-o através de um ficheiro de ação personalizada em /etc/fail2ban/action.d/.

Se estiver à procura de um servidor com acesso root total e largura de banda ilimitada para executar o Fail2Ban, consulte os servidores dedicados da FDC.

background image
O seu servidor está a travar o seu crescimento?

Cansado de implementações lentas ou limites de largura de banda? A FDC Servers oferece potência dedicada instantânea, alcance global e planos flexíveis criados para qualquer escala. Pronto para atualizar?

Desbloquear o desempenho agora

Blogue

Em destaque esta semana

Mais artigos
Gestão de memória do Linux: Swap, OOM Killer & Cgroups

Gestão de memória do Linux: Swap, OOM Killer & Cgroups

Como o Linux swap, o OOM killer e o cgroups funcionam em conjunto - com exemplos de configuração para bases de dados, servidores Web e hosts VPS multi-tenant.

12 min de leitura - 31 de maio de 2026

Guia de configuração do Prometheus e do node_exporter

15 min de leitura - 29 de maio de 2026

Mais artigos