Files
wiki/Catalogue-Self-Hosted/apps/app-fail2ban-report.md
T
2026-06-09 18:40:21 +02:00

7.3 KiB


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
GitHub SubleXBle/Fail2Ban-Report
License MIT
Langage Python (Flask)
Étoiles GitHub 308
Dernière MAJ 2026-05-15
Catégorie [[cat-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é)

# 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)

# 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

# /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

Pages Liées