---
title: Fail2Ban-Report
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, logs, fail2ban, security, ssh, brute-force, dashboard, python, flask]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Logs, https://github.com/SubleXBle/Fail2Ban-Report]
---

# 📋 Fail2Ban-Report

> **Le dashboard dédié à Fail2Ban** : visualisez les bans, IPs bannies, services attaqués et tendances dans une UI web légère. Transformez les logs Fail2Ban bruts en insights visuels exploitables.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [github.com/SubleXBle/Fail2Ban-Report](https://github.com/SubleXBle/Fail2Ban-Report) |
| **GitHub** | [SubleXBle/Fail2Ban-Report](https://github.com/SubleXBle/Fail2Ban-Report) |
| **License** | MIT |
| **Langage** | Python (Flask) |
| **Étoiles GitHub** | 308 ⭐ |
| **Dernière MAJ** | 2026-05-15 |
| **Catégorie** | [[cat-logs|Logs]] |

## 📝 Description

**Fail2Ban-Report** est un **dashboard web léger** spécialement conçu pour visualiser les données de **Fail2Ban**, le célèbre outil de protection contre le brute-force (SSH, FTP, HTTP, SMTP, etc.). Fail2Ban génère énormément de logs utiles (qui est banni, depuis quand, pour quel service, combien de tentatives) mais l'UI native est inexistante : tout est dans des fichiers texte.

L'outil parse automatiquement les **logs Fail2Ban** (`/var/log/fail2ban.log` ou la base SQLite) et présente les informations clés dans une **UI web moderne** : nombre total de bans, IPs les plus actives, services les plus attaqués, timeline des bans, top pays, heatmap par heure/jour, etc. C'est un projet **simple, focalisé, et efficace** : il fait une chose, et il la fait bien.

**Public cible** : sysadmins qui gèrent des serveurs exposés à Internet (SSH, web), amateurs d'auto-hébergement qui veulent voir d'un coup d'œil si leur serveur se fait bruteforcer, équipes de sécurité qui veulent un dashboard Fail2Ban sans se prendre la tête.

- ✅ **UI dédiée Fail2Ban** : visualisation claire et immédiate
- ✅ **Parsing auto** des logs Fail2Ban (texte et SQLite)
- ✅ **Graphiques** : timeline, top IPs, top services, heatmap
- ✅ **Léger** : Python Flask, ~30 Mo de RAM
- ✅ **Single container** Docker (Python + SQLite)
- ✅ **Configuration minimale** : pointer vers le fichier de log
- ✅ **API REST** : intégration possible avec d'autres outils
- ✅ **MIT License** : usage libre
- ✅ **Multi-instance** : possible de monitorer plusieurs serveurs
- ⚠️ **Lecture seule** : Fail2Ban-Report ne peut pas unbannir (lecture seule)
- ⚠️ **Communauté modeste** (308 ⭐) : peu de features avancées
- ⚠️ **Couplage Fail2Ban only** : ne fait rien d'autre

## 🚀 Installation

### Option 1 : Docker Compose (recommandé)

```yaml
# docker-compose.yml
version: '3.8'
services:
  fail2ban-report:
    image: ghcr.io/sublexble/fail2ban-report:latest
    container_name: fail2ban-report
    restart: unless-stopped
    environment:
      F2B_LOG_PATH: /var/log/fail2ban.log
      F2B_DB_PATH: /var/lib/fail2ban/fail2ban.sqlite3
      TZ: Europe/Paris
    volumes:
      - /var/log/fail2ban.log:/var/log/fail2ban.log:ro
      - /var/lib/fail2ban/:/var/lib/fail2ban/:ro
    ports:
      - "5000:5000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.f2b.rule=Host(`f2b.example.com`)"
      - "traefik.http.routers.f2b.entrypoints=websecure"
      - "traefik.http.routers.f2b.tls.certresolver=letsencrypt"

volumes:
  f2b-data:
```

### Option 2 : Python (bare-metal)

```bash
# Prérequis : Fail2Ban installé et fonctionnel
git clone https://github.com/SubleXBle/Fail2Ban-Report.git
cd Fail2Ban-Report
pip install -r requirements.txt
python app.py --log /var/log/fail2ban.log
```

### Option 3 : Systemd

```ini
# /etc/systemd/system/fail2ban-report.service
[Unit]
Description=Fail2Ban Report Dashboard
After=network.target

[Service]
User=www-data
WorkingDirectory=/opt/fail2ban-report
ExecStart=/usr/bin/python3 app.py --log /var/log/fail2ban.log
Restart=always

[Install]
WantedBy=multi-user.target
```

## ⚙️ Configuration Initiale

1. **S'assurer que Fail2Ban tourne** : `sudo fail2ban-client status`
2. **Vérifier les logs** : `ls -la /var/log/fail2ban.log`
3. **Lancer le container** : `docker compose up -d`
4. **Accéder à l'UI** : `http://IP:5000`
5. **Configurer Fail2Ban** (si pas déjà fait) : `/etc/fail2ban/jail.local`
6. **Ajouter des jails** : SSH, nginx-http-auth, postfix, etc.
7. **Vérifier les graphiques** : timeline des bans, top IPs
8. **Activer HTTPS** : Traefik en reverse proxy
9. **Setup l'alerte** : Fail2Ban → email/Slack pour les bans critiques

## 🔄 Alternatives

### Open Source
- **Fail2Ban** (le backend, indispensable)
- **CrowdSec** — Alternative moderne à Fail2Ban (avec dashboard)
- **SSHGuard** — Anti-brute-force SSH
- [[app-loki]] + [[app-grafana]] — Pour des dashboards custom
- **GoAccess** — Analyseur de logs web (focus web, pas Fail2Ban)
- **Wazuh** — SIEM complet (inclut dashboard Fail2Ban-like)

### Comparaison Fail2Ban-Report vs autres

| Critère | Fail2Ban-Report | CrowdSec | Loki/Grafana | Wazuh |
| :--- | :--- | :--- | :--- | :--- |
| **Focus** | Fail2Ban logs | Threat intel partagé | Tous logs | SIEM complet |
| **UI dédiée** | ✅ | ✅ | ❌ (à faire) | ✅ |
| **Multi-serveur** | ❌ (1 instance = 1 serveur) | ✅ (via API) | ✅ | ✅ |
| **Bans actifs** | ✅ | ✅ | ❌ (à faire) | ✅ |
| **Threat intel** | ❌ | ✅ Blocklist | ❌ | ✅ |
| **Setup** | 5 min | 15 min | 30 min | 60 min |
| **RAM** | ~30 Mo | ~100 Mo | ~2 Go | ~4 Go |
| **License** | MIT | MIT | AGPL-3.0 | GPL-2.0 |

**Verdict** : Fail2Ban-Report est **l'outil parfait** si vous utilisez déjà Fail2Ban et voulez juste visualiser. Pour une approche moderne avec threat intel partagé, migrez vers CrowdSec. Pour un SIEM complet, Wazuh.

### Propriétaires (ce que Fail2Ban-Report remplace)
- **Cloudflare** (WAF/CDN, gratuit partiel)
- **DenyHosts** (stale, plus maintenu)
- **SSH Fortress** (commercial SSH bastion)
- **ManageEngine Log360** (payant)
- **Splunk Security** (très cher)

## 🔐 Sécurité

- ⚠️ **Logs = données sensibles** : IPs bannies = surface d'attaque
- ✅ **Chiffrement in-transit** : TLS obligatoire (Traefik en reverse proxy)
- ✅ **Authentification** : basic auth (configurable) ou SSO via reverse proxy
- ✅ **Read-only** : Fail2Ban-Report ne modifie jamais la config Fail2Ban
- ✅ **Bind localhost** : possible de n'écouter que sur 127.0.0.1
- ✅ **Pas de stockage** : agrège à la volée depuis les logs (SQLite en cache)
- ⚠️ **Rétention** : les bans actifs expirent selon Fail2Ban (donc OK RGPD)
- ✅ **Pas de PII** : que des IPs et noms de services
- ✅ **Pas de backup nécessaire** : données reconstruites depuis les logs
- ✅ **Logs Fail2Ban protégés** : permissions 0640 root:adm

## 📚 Ressources

- [GitHub SubleXBle/Fail2Ban-Report](https://github.com/SubleXBle/Fail2Ban-Report)
- [Fail2Ban docs officielles](https://github.com/fail2ban/fail2ban/wiki)
- [CrowdSec (alternative)](https://crowdsec.net/)
- [Tutoriel installation](https://github.com/SubleXBle/Fail2Ban-Report/wiki)

## Pages Liées

- [[cat-logs]] — Catégorie Logs
- [[app-loki]] — Stack logs complète
- [[app-uptime-kuma]] — Monitoring uptime
- [[securisation-home-lab]] — Bonnes pratiques sécurité (Fail2Ban y est mentionné)
