« Fail2Ban » : différence entre les versions
| Ligne 152 : | Ligne 152 : | ||
=== '''Gestion des bannissements''' === | === '''Gestion des bannissements''' === | ||
Comment vérifier si une adresse est bloquée ? | Comment vérifier si une adresse est bloquée ? | ||
syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo ipset list | sudo ipset list | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 24 juin 2025 à 18:44
Commandes
Démarrer :
sudo systemctl start fail2ban
Arrêter :
sudo systemctl stop fail2ban
Redémarrer :
sudo systemctl restart fail2ban
Activer au démarrage :
sudo systemctl enable fail2ban
Désactiver au démarrage :
sudo systemctl disable fail2ban
Vérifier le statut de fail2ban :
sudo systemctl status fail2ban
Lister les jails actifs :
Les jails sont des configurations qui définissent les règles de bannissement pour différents services.
sudo fail2ban-client status
Remplacez <nom_du_jail> par le nom du jail, par exemple sshd.
Vérifier le statut d'un jail spécifique :
sudo fail2ban-client status <nom_du_jail>
Bannir manuellement une adresse IP :
sudo fail2ban-client set <nom_du_jail> banip <adresse_ip>
Débannir manuellement une adresse IP :
sudo fail2ban-client set <nom_du_jail> unbanip <adresse_ip>
Configurer fail2ban :
Les fichiers de configuration principaux sont /etc/fail2ban/jail.conf et /etc/fail2ban/jail.d/defaults-debian.conf.
Vous pouvez les modifier pour ajouter ou modifier des règles de jail.
Tester la syntaxe des fichiers de configuration :
sudo fail2ban-client -t
Trouver des détails :
- Extraire uniquement les lignes contenant [apache-noscript]
sudo grep "\[apache-noscript\] Ban" /var/log/fail2ban.log
- Les dates et IP bannies
sudo grep -E "\[apache-noscript\] Ban|Unban" /var/log/fail2ban.log
1. Fail2Ban : Principes de base
Objectif
- Bloquer automatiquement les IP malveillantes après plusieurs tentatives infructueuses (bruteforce, scans, etc.).
- Utilise des jails (filtres par service : SSH, Apache, MediaWiki, etc.).
Concepts clés
| Paramètre | Description | Exemple |
|---|---|---|
bantime
|
Durée du bannissement (ex: 24h, 7d).
|
bantime = 1d
|
findtime
|
Fenêtre temporelle pour compter les tentatives (ex: 10m, 1h).
|
findtime = 1h
|
maxretry
|
Nombre d’échecs avant bannissement. | maxretry = 3
|
ignoreip
|
IP à ne jamais bannir (ex: votre IP, LAN). | ignoreip = 192.168.1.0/24
|
banaction
|
Méthode de bannissement (iptables, iptables-ipset-proto6).
|
banaction = iptables-ipset-proto6
|
2. iptables-ipset-proto6 : Pourquoi l’utiliser ?
Avantages
✅ Performances : Gère des milliers d’IP bannies sans ralentir iptables.
✅ Support IPv4/IPv6 : Contrairement à iptables classique.
✅ Centralisation : Stocke les IP dans des ensembles (ipset) pour une gestion simplifiée.
Prérequis
Installer
ipset:sudo apt install ipset # Debian/Ubuntu sudo yum install ipset # CentOS/RHEL
Vérifier que le module kernel est chargé :
lsmod | grep ip_set # Doit retourner "ip_set"
3. Configuration de Fail2Ban avec ipset
Étapes clés
Éditer
/etc/fail2ban/jail.local:[DEFAULT] banaction = iptables-ipset-proto6 banaction_allports = iptables-ipset-proto6-allports
Ajouter vos IP de confiance :
ignoreip = 127.0.0.1/8 ::1 65.65.65.65 2a50::1
Exemple de jail pour MediaWiki :
[mediawiki-auth] enabled = true filter = z_mediawiki-bruteforce logpath = /var/log/mediawiki/authentication.log maxretry = 3 bantime = 24h
Redémarrer Fail2Ban :
sudo systemctl restart fail2ban
4. Commandes utiles
Gestion des bannissements
Comment vérifier si une adresse est bloquée ?
sudo ipset list
| Commande | Description |
|---|---|
sudo fail2ban-client status <jail>
|
Voir les IP bannies pour une jail. |
sudo fail2ban-client set <jail> unbanip <IP>
|
Débannir une IP. |
sudo ipset list
|
Lister tous les ensembles ipset. |
Diagnostic
# Vérifier les logs Fail2Ban
sudo tail -f /var/log/fail2ban.log
# Vérifier les règles iptables
sudo iptables -L -n --line-numbers
sudo ip6tables -L -n # Pour IPv6
5. Dépannage courant
Problème : Les IP ne sont pas bannies
Vérifiez que
ipsetest installé et que le kernel le supporte :sudo modprobe ip_set
Vérifiez que la jail est active :
sudo fail2ban-client status
Problème : Bannissements trop agressifs
- Ajustez
maxretryetfindtimedansjail.local.
- Ajoutez vos IP à
ignoreip.
6. Bonnes pratiques
Ne pas modifier
jail.conf: Toujours utiliserjail.localpour les personnalisations.
Surveiller les logs :
sudo tail -f /var/log/fail2ban.log | grep -i "ban\|unban"
Mettre à jour régulièrement :
sudo apt update && sudo apt upgrade fail2ban # Debian/Ubuntu
À retenir
iptables-ipset-proto6>iptablespour les performances et le support IPv6.
Tester après configuration avec une IP de test :
sudo fail2ban-client set mediawiki-auth banip 123.123.123.123 sudo ipset list | grep f2b-mediawiki-auth