Ajouter README.md

This commit is contained in:
2025-12-06 16:18:13 +00:00
parent b1d0c56894
commit 76ada6f42d

533
README.md Normal file
View File

@@ -0,0 +1,533 @@
# 🛡️ Gestionnaire de Bannissements Fail2ban
Script Bash complet pour gérer facilement les bannissements Fail2ban avec interface interactive et mode ligne de commande.
## 📋 Table des matières
- [Fonctionnalités](#fonctionnalités)
- [Prérequis](#prérequis)
- [Installation](#installation)
- [Utilisation](#utilisation)
- [Mode Interactif](#mode-interactif)
- [Mode Ligne de Commande](#mode-ligne-de-commande)
- [Exemples](#exemples)
- [Captures d'écran](#captures-décran)
- [Dépannage](#dépannage)
- [Licence](#licence)
## ✨ Fonctionnalités
### Mode Interactif
- 🎨 Interface colorée et intuitive
- 📊 Affichage en temps réel des IPs bannies
- 📈 Statistiques détaillées par jail
- 🔄 Actualisation automatique
- 🎯 Menu facile à naviguer
### Mode Ligne de Commande
- ⚡ Actions rapides via arguments
- 🤖 Compatible avec scripts et cron
- 📝 Parfait pour l'automatisation
- 🔧 Intégration CI/CD
### Opérations supportées
- ✅ Lister toutes les IPs bannies
- ✅ Lister les jails actives
- ✅ Débannir une IP spécifique
- ✅ Débannir toutes les IPs d'une jail
- ✅ Débannir toutes les IPs de toutes les jails
- ✅ Afficher les statistiques détaillées
- ✅ Consulter les logs récents
## 🔧 Prérequis
- **OS**: Debian, Ubuntu ou dérivés
- **Privilèges**: Root (sudo)
- **Logiciels requis**:
- `fail2ban` installé et actif
- `bash` 4.0+
- `systemctl`
### Vérification des prérequis
```bash
# Vérifier Fail2ban
sudo systemctl status fail2ban
# Vérifier la version de Bash
bash --version
```
## 📥 Installation
### Méthode 1: Téléchargement direct
```bash
# Télécharger le script
wget https://raw.githubusercontent.com/votre-repo/fail2ban-manager.sh
# Rendre exécutable
chmod +x fail2ban-manager.sh
# Déplacer dans un répertoire du PATH (optionnel)
sudo mv fail2ban-manager.sh /usr/local/bin/fail2ban-manager
```
### Méthode 2: Copie manuelle
```bash
# Créer le fichier
sudo nano /usr/local/bin/fail2ban-manager
# Coller le contenu du script
# Sauvegarder (Ctrl+O puis Ctrl+X)
# Rendre exécutable
sudo chmod +x /usr/local/bin/fail2ban-manager
```
### Méthode 3: Git
```bash
# Cloner le dépôt
git clone https://github.com/votre-repo/fail2ban-manager.git
cd fail2ban-manager
# Installer
sudo cp fail2ban-manager.sh /usr/local/bin/fail2ban-manager
sudo chmod +x /usr/local/bin/fail2ban-manager
```
## 🚀 Utilisation
### Mode Interactif
Lancez simplement le script sans arguments pour accéder au menu interactif :
```bash
sudo fail2ban-manager
```
**Menu disponible:**
```
1. Lister toutes les IPs bannies
2. Lister les jails actives
3. Débannir une IP spécifique
4. Débannir toutes les IPs d'une jail
5. Débannir TOUTES les IPs
6. Afficher les statistiques
7. Voir les logs récents
8. Actualiser
0. Quitter
```
### Mode Ligne de Commande
#### Afficher l'aide
```bash
sudo fail2ban-manager --help
```
#### Options disponibles
| Option | Alias | Description | Exemple |
|--------|-------|-------------|---------|
| `--list` | `-l` | Liste toutes les IPs bannies | `fail2ban-manager -l` |
| `--jails` | `-j` | Liste les jails actives | `fail2ban-manager -j` |
| `--unban <IP>` | `-u` | Débannit une IP spécifique | `fail2ban-manager -u 192.168.1.100` |
| `--unban-jail <jail>` | `-U` | Débannit toutes les IPs d'une jail | `fail2ban-manager -U sshd` |
| `--unban-all` | `-a` | Débannit TOUTES les IPs | `fail2ban-manager -a` |
| `--stats` | `-s` | Affiche les statistiques | `fail2ban-manager -s` |
| `--logs [jail] [lignes]` | `-L` | Affiche les logs | `fail2ban-manager -L sshd 50` |
| `--interactive` | `-i` | Mode interactif | `fail2ban-manager -i` |
| `--help` | `-h` | Affiche l'aide | `fail2ban-manager -h` |
## 📚 Exemples
### Exemple 1: Consultation rapide
```bash
# Voir toutes les IPs bannies
sudo fail2ban-manager --list
# Sortie:
# [IPs actuellement bannies]
#
# Jail: sshd
# • 192.168.1.100
# • 203.0.113.50
#
# Jail: nginx-http-auth
# • 198.51.100.25
#
# Total: 3 IP(s) bannie(s)
```
### Exemple 2: Débannir une IP d'un faux positif
```bash
# Un collègue s'est trompé de mot de passe plusieurs fois
sudo fail2ban-manager --unban 192.168.1.150
# Sortie:
# [Débannissement de 192.168.1.150]
#
# → Débannissement de 192.168.1.150 dans la jail sshd...
# ✓ IP débannie de sshd
#
# ✓ IP 192.168.1.150 complètement débannie
```
### Exemple 3: Maintenance après une attaque
```bash
# Après avoir bloqué l'attaque, nettoyer toutes les IPs bannies
sudo fail2ban-manager --unban-all
# Sortie:
# [Débannissement de TOUTES les IPs]
#
# Êtes-vous sûr? (oui/non): oui
#
# Jail: sshd
# → Débannissement de 192.168.1.100...
# → Débannissement de 203.0.113.50...
#
# ✓ Total: 15 IP(s) débannie(s)
```
### Exemple 4: Surveillance des tentatives
```bash
# Afficher les statistiques
sudo fail2ban-manager --stats
# Sortie:
# [Statistiques Fail2ban]
#
# Jail Actuellement Total Tentatives
# ──────────────────── ───────────── ──────── ───────────
# sshd 5 127 23
# nginx-http-auth 2 45 8
# postfix-sasl 0 12 0
```
### Exemple 5: Analyser les logs
```bash
# Voir les 30 dernières lignes des logs SSH
sudo fail2ban-manager --logs sshd 30
# Voir les logs d'une autre jail
sudo fail2ban-manager --logs nginx-http-auth 50
```
### Exemple 6: Automatisation avec cron
```bash
# Débannir automatiquement toutes les IPs chaque nuit à 3h
# Ajouter dans crontab -e:
0 3 * * * /usr/local/bin/fail2ban-manager --unban-all <<< "oui" > /var/log/fail2ban-unban.log 2>&1
# Recevoir un rapport quotidien par email
0 8 * * * /usr/local/bin/fail2ban-manager --stats | mail -s "Rapport Fail2ban" admin@example.com
```
### Exemple 7: Script de monitoring
```bash
#!/bin/bash
# Script de monitoring des bannissements
# Compter les IPs bannies
banned_count=$(sudo fail2ban-manager --list | grep "Total:" | awk '{print $2}')
# Alerter si plus de 10 IPs bannies
if [ "$banned_count" -gt 10 ]; then
echo "ALERTE: $banned_count IPs bannies!" | mail -s "Alerte Fail2ban" admin@example.com
fi
```
## 📸 Captures d'écran
### Vue principale (mode interactif)
```
════════════════════════════════════════════════════════════════
Gestionnaire de Bannissements Fail2ban
════════════════════════════════════════════════════════════════
[Jails actives]
1. sshd - 3 IP(s) bannies (Total: 127)
2. nginx-http-auth - 2 IP(s) bannies (Total: 45)
3. postfix-sasl - 0 IP bannie (Total: 12)
[IPs actuellement bannies]
Jail: sshd
• 192.168.1.100
• 203.0.113.50
• 198.51.100.25
Jail: nginx-http-auth
• 192.0.2.10
• 192.0.2.11
Total: 5 IP(s) bannie(s)
[Menu]
1. Lister toutes les IPs bannies
2. Lister les jails actives
3. Débannir une IP spécifique
4. Débannir toutes les IPs d'une jail
5. Débannir TOUTES les IPs
6. Afficher les statistiques
7. Voir les logs récents
8. Actualiser
0. Quitter
Votre choix:
```
## 🔍 Dépannage
### Problème: "Fail2ban n'est pas installé"
**Solution:**
```bash
# Debian/Ubuntu
sudo apt update
sudo apt install fail2ban
# Vérifier l'installation
sudo systemctl status fail2ban
```
### Problème: "Fail2ban n'est pas actif"
**Solution:**
```bash
# Démarrer Fail2ban
sudo systemctl start fail2ban
# Activer au démarrage
sudo systemctl enable fail2ban
```
### Problème: "Permission denied"
**Solution:**
```bash
# Le script nécessite les privilèges root
sudo fail2ban-manager --list
```
### Problème: Les couleurs ne s'affichent pas
**Solution:**
```bash
# Vérifier que votre terminal supporte les couleurs
echo $TERM
# Si nécessaire, définir TERM
export TERM=xterm-256color
```
### Problème: Jail non trouvée
**Solution:**
```bash
# Lister les jails disponibles
sudo fail2ban-manager --jails
# Vérifier la configuration Fail2ban
sudo fail2ban-client status
```
### Problème: Impossible de débannir une IP
**Solution:**
```bash
# Vérifier que l'IP est bien bannie
sudo fail2ban-manager --list
# Débannir manuellement
sudo fail2ban-client set sshd unbanip 192.168.1.100
# Vérifier les logs
sudo tail -f /var/log/fail2ban.log
```
## 🔐 Sécurité
### Bonnes pratiques
1. **Toujours vérifier avant de débannir en masse**
```bash
# D'abord lister
sudo fail2ban-manager --list
# Puis décider
sudo fail2ban-manager --unban-all
```
2. **Conserver des logs**
```bash
# Logger toutes les actions
sudo fail2ban-manager --unban-all 2>&1 | tee -a /var/log/fail2ban-actions.log
```
3. **Limiter l'accès au script**
```bash
# Permissions restrictives
sudo chmod 700 /usr/local/bin/fail2ban-manager
sudo chown root:root /usr/local/bin/fail2ban-manager
```
4. **Sauvegarder avant actions de masse**
```bash
# Exporter la liste avant débannissement
sudo fail2ban-manager --list > /root/banned-ips-backup-$(date +%Y%m%d).txt
```
## 📊 Intégration avec d'autres outils
### Monitoring avec Prometheus
```bash
# Exporter les métriques
banned_total=$(sudo fail2ban-manager --list | grep "Total:" | awk '{print $2}')
echo "fail2ban_banned_ips $banned_total" > /var/lib/node_exporter/textfile/fail2ban.prom
```
### Alertes avec Slack/Discord
```bash
#!/bin/bash
# Script d'alerte
WEBHOOK_URL="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
banned=$(sudo fail2ban-manager --list)
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"Rapport Fail2ban:\n\`\`\`$banned\`\`\`\"}" \
$WEBHOOK_URL
```
### Dashboard avec Grafana
Combinez avec Elasticsearch et créez des visualisations des bannissements.
## 🛠️ Configuration avancée
### Alias pratiques
Ajoutez dans `~/.bashrc` ou `~/.zshrc`:
```bash
# Alias Fail2ban
alias f2b='sudo fail2ban-manager'
alias f2b-list='sudo fail2ban-manager --list'
alias f2b-stats='sudo fail2ban-manager --stats'
alias f2b-unban='sudo fail2ban-manager --unban'
```
### Fonction shell personnalisée
```bash
# Débannir rapidement une IP
unban() {
if [ -z "$1" ]; then
echo "Usage: unban <IP>"
return 1
fi
sudo fail2ban-manager --unban "$1"
}
# Utilisation: unban 192.168.1.100
```
## 🤝 Contribution
Les contributions sont les bienvenues !
### Comment contribuer
1. Fork le projet
2. Créer une branche (`git checkout -b feature/amelioration`)
3. Commit les changements (`git commit -am 'Ajout fonctionnalité'`)
4. Push vers la branche (`git push origin feature/amelioration`)
5. Créer une Pull Request
### Idées d'amélioration
- [ ] Export des données en JSON/CSV
- [ ] Intégration avec des bases de données de réputation IP
- [ ] Notifications par email/webhook
- [ ] Interface web
- [ ] Support d'autres systèmes de bannissement (iptables direct, nftables)
- [ ] Whitelist automatique d'IPs
## 📝 Changelog
### v1.0 (2024-12-06)
- ✨ Version initiale
- ✅ Mode interactif
- ✅ Mode ligne de commande
- ✅ Support multi-jails
- ✅ Statistiques détaillées
- ✅ Consultation des logs
## 📄 Licence
Ce script est distribué sous licence MIT.
```
MIT License
Copyright (c) 2024
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
## 👤 Auteur
Script créé pour faciliter la gestion quotidienne de Fail2ban.
## 🔗 Liens utiles
- [Documentation Fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page)
- [GitHub Fail2ban](https://github.com/fail2ban/fail2ban)
- [Tutoriel configuration Fail2ban](https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu)
## ⭐ Support
Si ce script vous a été utile, n'hésitez pas à :
- ⭐ Star le projet
- 🐛 Signaler des bugs
- 💡 Proposer des améliorations
- 📖 Améliorer la documentation
---
**Made with ❤️ for sysadmins**