Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
@@ -0,0 +1,177 @@
---
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é)