Painel de monitoramento em tempo real para o Fail2Ban — exibe IPs banidos, detecta padrões de ataque e permite gerenciar bans diretamente pelo terminal.
Desenvolvido por Carlos Eduardo
███████╗ █████╗ ██╗██╗ ██████╗ ██████╗ █████╗ ███╗ ██╗
██╔════╝██╔══██╗██║██║ ╚════██╗██╔══██╗██╔══██╗████╗ ██║
█████╗ ███████║██║██║ █████╔╝██████╔╝███████║██╔██╗ ██║
██╔══╝ ██╔══██║██║██║ ██╔═══╝ ██╔══██╗██╔══██║██║╚██╗██║
██║ ██║ ██║██║███████╗███████╗██████╔╝██║ ██║██║ ╚████║
╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 🕐 10/04/2025 17:33:13 ┃ JAILS 3 ┃ IPs BANIDOS 32 ┃ HIGH 2 ┃ MEDIUM 1 ┃ ↻ 28:45 │
└─────────────────────────────────────────────────────────────────────────────────────┘
🔒 BANS ATIVOS · 1/3 · 15 IPs ⚠ AMEAÇAS · 1/4 · 16 registros
══════════════════════════════════ ══════════════════════════════════════
JAIL IP DURAÇÃO ... IP BANS NÍVEL
sshd 192.168.100.1 24h ... 192.168.100.1 2 🔴 HIGH
192.168.100.2 1h ... 10.0.0.1 1 🟠 MEDIUM
- Statusbar com hora, totais e countdown para próxima atualização
- Tabelas com paginação — 5 IPs por página, navegação com
N/P - Classificação de ameaças HIGH / MEDIUM / INFO com zebra visual
- Busca detalhada de IP — status, jail, histórico e tentativas
- Gerenciamento: banir, desbanir e editar registros
- Duração configurável: 1h, 24h ou permanente
- Registro persistente de motivo, duração e data do ban
- Atualização automática a cada 30 minutos
- Python 3.8+
- Fail2Ban instalado e em execução
- Acesso root (necessário para
fail2ban-cliente/var/log/fail2ban.log)
git clone https://github.com/seu-usuario/fail2ban-guardian.git
cd fail2ban-guardian
chmod +x run.sh
./run.shO run.sh cria o ambiente virtual e instala as dependências automaticamente na primeira execução.
git clone https://github.com/seu-usuario/fail2ban-guardian.git /opt/fail2ban-guardian
cd /opt/fail2ban-guardian
chmod +x run.sh
./run.sh# tmux (recomendado)
tmux new -s guardian
./run.sh
# Desanexar: Ctrl+B, D | Reanexar: tmux attach -t guardian
# screen
screen -S guardian
./run.sh
# Desanexar: Ctrl+A, D | Reanexar: screen -r guardianfail2ban-guardian/
├── panel/
│ └── panel.py # Interface principal (Rich)
├── parser/
│ ├── parser.py # Leitura de logs e classificação de ameaças
│ └── notes.json.example # Exemplo de registro de bans
├── .gitignore
├── requirements.txt
├── run.sh
└── README.md
| Tecla | Ação |
|---|---|
N |
Próxima página de IPs |
P |
Página anterior de IPs |
V |
Ver todos os IPs banidos em uma única tela |
F |
Buscar informações detalhadas de um IP |
R |
Recarregar o painel e resetar o countdown |
M |
Abrir menu de gerenciamento |
H |
Exibir ajuda |
Ctrl+C |
Sair |
| Opção | Descrição | Campos |
|---|---|---|
ban |
Bane um IP em uma jail | IP, jail, duração, motivo |
unban |
Remove o ban e apaga o registro | IP, jail |
editar |
Edita motivo e duração de um ban existente | IP, jail, motivo, duração |
voltar |
Retorna ao painel | — |
| Opção | Tempo |
|---|---|
1h |
1 hora |
24h |
24 horas |
permanente |
Sem expiração |
| Nível | Critério |
|---|---|
| 🔴 HIGH | ≥ 10 tentativas de acesso |
| 🟠 MEDIUM | Banido ≥ 3 vezes (reincidente) |
| 🔵 INFO | Ban único sem histórico agressivo |
sudo nano /etc/fail2ban/jail.d/sshd-custom.conf[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600sudo fail2ban-client reloadsudo fail2ban-client set sshd banip 192.168.1.100
sudo fail2ban-client set sshd banip 10.0.0.55
sudo fail2ban-client status sshd
# Remover após o teste
sudo fail2ban-client set sshd unbanip 192.168.1.100- Python 3.8+ — parser de logs e classificação de ameaças
- Rich — interface de terminal com tabelas, painéis e cores
- Fail2Ban — engine de banimento via
fail2ban-client
© 2025 Carlos Eduardo — Todos os direitos reservados