O que faz este módulo #
O fail2ban é o guardião que vigia os logs do teu servidor e, quando deteta tentativas de acesso maliciosas (por exemplo, muitas falhas de palavra-passe por SSH), bane automaticamente o IP infrator durante algum tempo. Cada serviço vigiado organiza-se numa jail (por exemplo sshd).
O módulo fail2ban dá-te o controlo desses bans em tempo de execução, sem teres de recordar a sintaxe do fail2ban-client: consulta o estado das jails, lista quem está banido, verifica se um IP específico está bloqueado, bane ou desbane à mão, desbloqueia tudo de uma vez numa emergência e recarrega a configuração após uma alteração.
Este módulo atua sobre um fail2ban já instalado e em execução. Cada subcomando consulta ou modifica o estado do serviço, por isso precisam de privilégios de root (usa sudo). Se te trancaste fora com o teu próprio IP, vai diretamente ao desbloqueio de emergência.
Tarefas comuns #
Escolhe o que queres fazer. Cada receita traz o comando já pronto — basta trocar o IP ou a jail pelos teus e clicar em Copiar.
1
Ver o estado e as jails
Verifica num relance se o fail2ban está ativo e quantos estão banidos.
Liga-te por SSH ao teu servidor com o utilizador ubuntu e pede o estado geral:
$ sudo imaxe fail2ban statusQueres em formato legível por máquina, para um script ou um painel? Adiciona --json:
$ sudo imaxe fail2ban status --jsonsshd) e o número de IPs banidos em cada uma.2
Ver que IPs estão banidos
Lista os bans ativos, em todas as jails ou apenas numa.
Todos os IPs banidos, em todas as jails de uma vez:
$ sudo imaxe fail2ban bannedInteressa-te apenas uma jail? Passa-a como argumento:
$ sudo imaxe fail2ban banned sshd3
Verificar se um IP está banido
Descobre em que jails um endereço específico está bloqueado.
Pergunta diretamente pelo IP; dir-te-á em que jails aparece banido:
$ sudo imaxe fail2ban check 203.0.113.74
Banir ou desbanir um IP
Bloqueia um endereço abusivo à mão ou liberta um utilizador legítimo.
Bane um IP numa jail específica (se só houver uma jail, é inferida automaticamente):
$ sudo imaxe fail2ban ban 203.0.113.7 --jail sshdBaniste alguém legítimo? Desbane-o de todas as jails de uma vez:
$ sudo imaxe fail2ban unban 203.0.113.7imaxe fail2ban check nesse mesmo IP.5
Desbloquear tudo (emergência)
Estás trancado fora: liberta todos os IPs de todas as jails.
Se o teu próprio IP ficou apanhado e precisas de recuperar o acesso já, desbane-os a todos. Adiciona --yes para saltar a confirmação:
$ sudo imaxe fail2ban unban-all --yesApós uma alteração à configuração das jails, recarrega-a para que tenha efeito:
$ sudo imaxe fail2ban reloadunban-allÉ uma operação de ban destrutiva: deixa todos os IPs desbloqueados, os maliciosos incluídos. Usa-o apenas para recuperar o acesso numa emergência e verifica o estado a seguir com imaxe fail2ban status.
Sinopse #
imaxe fail2ban <subcomando> [<ip>|<jail>] [--jail JAIL] [flags]Cada subcomando requer privilégios de root (usa sudo) porque consultam ou modificam o estado do fail2ban através do fail2ban-client. Adiciona --json a status, banned ou check para obter saída legível por máquina, apta para scripting.
Subcomandos #
| Subcomando | O que faz | Flags relevantes |
|---|---|---|
| status | Estado do fail2ban: ativo, jails e número de IPs banidos por jail. | --json |
| banned | Lista os IPs banidos (todas as jails ou uma específica). | --json |
| check | Indica em que jails um IP está banido. | --json |
| ban | Bane manualmente um IP numa jail. | --jail |
| unban | Desbane um IP de todas as jails. | — |
| unban-all | EMERGÊNCIA: desbane TODOS os IPs de todas as jails. | --yes |
| reload | Recarrega a configuração do fail2ban (valida jail.local). | — |
Argumentos e flags #
| Argumento / Flag | Tipo | Por omissão | Descrição |
|---|---|---|---|
| <ip> obr. | string | — | O IP sobre o qual operar. Obrigatório em check, ban e unban. |
| <jail> | string | todas | Em banned, uma jail específica a listar. Sem argumento, listam-se todas as jails. |
| --jail | string | auto | Em ban, a jail de destino do ban. Se só houver uma jail, é inferida automaticamente. |
| --yes | bool | false | Em unban-all, confirma sem perguntar (operação de ban destrutiva). |
| --json | bool | false | Em status/banned/check, emite o resultado como JSON em stdout. |
Ficheiros e caminhos #
| Caminho | Conteúdo |
|---|---|
| /etc/fail2ban/jail.local | Configuração local do fail2ban: jails ativas, tempos de ban e limiares. O que o reload valida. |
| /var/run/fail2ban/fail2ban.sock | Socket de controlo que o fail2ban-client usa para comunicar com o serviço. |
| /var/log/fail2ban.log | Log próprio do fail2ban: bans, desbans e recargas. |
Códigos de saída e logs #
Cada execução devolve um código que podes verificar com echo $? — útil para encadear em scripts:
Segue o log em direto enquanto depuras:
$ sudo journalctl -u fail2ban -f
$ sudo tail -f /var/log/fail2ban.logResolução de problemas #
| Sintoma | Causa provável | Solução |
|---|---|---|
| Sai SERVICE (código 3) | O fail2ban está parado ou o socket não responde. | Inicia o serviço com systemctl start fail2ban e tenta de novo. |
| Sai JAIL (código 4) | A jail de --jail não existe, ou há várias e não pode ser inferida. | Vê as jails com imaxe fail2ban status e passa a correta em --jail. |
| Sai RELOAD (código 5) | Há um erro de sintaxe em jail.local. | Corrige /etc/fail2ban/jail.local e executa reload de novo. |
| Fiquei trancado fora por SSH | O teu próprio IP acumulou falhas e foi banido em sshd. | A partir de outra via, desbane-o com unban ou liberta-os a todos com unban-all --yes. |
Ficou bloqueado com o módulo Fail2ban?
Escreva-nos com a saída de «imaxe <module> status --json» e respondemos rapidamente.