Aller au contenu

« Fail2Ban » : différence entre les versions

De Marmits Wiki
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

  1. Éditer /etc/fail2ban/jail.local :

    [DEFAULT]
    banaction = iptables-ipset-proto6
    banaction_allports = iptables-ipset-proto6-allports
    
  2. Ajouter vos IP de confiance :

    ignoreip = 127.0.0.1/8 ::1 65.65.65.65 2a50::1
    
  3. Exemple de jail pour MediaWiki :

    [mediawiki-auth]
    enabled = true
    filter = z_mediawiki-bruteforce
    logpath = /var/log/mediawiki/authentication.log
    maxretry = 3
    bantime = 24h
    
  4. 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 ipset est 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 maxretry et findtime dans jail.local.
  • Ajoutez vos IP à ignoreip.

6. Bonnes pratiques

  • Ne pas modifier jail.conf : Toujours utiliser jail.local pour 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 > iptables pour 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