Commande Linux fail2ban

Linux 命令大全Liste complète des commandes Linux


fail2ban est un outil de prévention d'intrusion open source utilisé pour protéger les serveurs Linux contre les attaques par force brute. Il détecte les comportements malveillants, tels que de multiples tentatives de connexion SSH échouées, en surveillant les fichiers journaux système (par exemple, /var/log/auth.log), puis met automatiquement à jour les règles du pare-feu pour bloquer les adresses IP de ces attaquants.


Fonctionnalités principales de fail2ban

Surveillance des journaux en temps réel

fail2ban surveille en continu les fichiers journaux spécifiés pour rechercher des modèles prédéfinis de comportement malveillant.

Bannissement automatique d'IP

Lorsque plusieurs tentatives échouées provenant de la même IP sont détectées (seuil configurable), fail2ban ajoute automatiquement cette IP à la liste de blocage du pare-feu.

Durée de bannissement configurable

Les administrateurs peuvent définir une durée de bannissement initiale et une durée de bannissement incrémentielle après des violations répétées.

Prise en charge multi-services

Il prend en charge non seulement SSH, mais aussi la protection de plusieurs services tels qu'Apache, Nginx, FTP et les services de messagerie.

Notification par e-mail

Il peut être configuré pour envoyer des notifications par e-mail aux administrateurs lorsqu'une IP est bannie.


Installation et configuration de fail2ban

Méthodes d'installation

Sur les systèmes basés sur Debian/Ubuntu :

Exemple

sudo apt update
sudo apt install fail2ban

Sur les systèmes basés sur RHEL/CentOS :

Exemple

sudo yum install epel-release
sudo yum install fail2ban

Configuration de base

Les principaux fichiers de configuration de fail2ban se trouvent à :

  • /etc/fail2ban/jail.conf- Fichier de configuration principal (modification directe non recommandée)
  • /etc/fail2ban/jail.local- Configuration personnalisée de l'utilisateur (modification recommandée ici)

Créer un fichier de configuration personnalisé :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Commandes courantes de fail2ban

Démarrer/Arrêter/Redémarrer le service

Exemple

sudo systemctl start fail2ban    # Démarrer le service
sudo systemctl stop fail2ban     # Arrêter le service
sudo systemctl restart fail2ban  # Redémarrer le service
sudo systemctl enable fail2ban   # Activer le lancement automatique au démarrage

Afficher l'état du service

sudo systemctl status fail2ban

Afficher les adresses IP bannies

sudo fail2ban-client status sshd

Débannir une adresse IP spécifique

sudo fail2ban-client set sshd unbanip 192.168.1.100

Bannir manuellement une adresse IP

sudo fail2ban-client set sshd banip 192.168.1.100

Détails du fichier de configuration fail2ban

Paramètres de configuration principaux

Exemple

[DEFAULT]
# Adresses IP ignorées (liste blanche)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Durée de bannissement (secondes)
bantime = 600

# Fenêtre temporelle de détection (secondes)
findtime = 600

# Nombre maximal de tentatives
maxretry = 3

# Backend de pare-feu à utiliser
banaction = iptables-multiport

[sshd]
# Activer ou non la protection SSH
enabled = true

# Chemin du fichier journal
logpath = %(sshd_log)s

# Nom du filtre
filter = sshd

# Numéro de port
port = ssh

Filtres personnalisés

Les filtres sont définis dans/etc/fail2ban/filter.d/répertoire. Par exemple, créez un filtre SSH personnalisé :

  1. Copiez le filtre SSH par défaut :

    sudo cp /etc/fail2ban/filter.d/sshd.conf /etc/fail2ban/filter.d/sshd-custom.conf
  2. Modifiez le filtre personnalisé et changez l'expression régulière pour correspondre à des motifs d'échec spécifiques.


Exemples pratiques fail2ban

Protéger le service SSH

  1. Modifiez le fichier jail.local :

    sudo nano /etc/fail2ban/jail.local
  2. Ajoutez ou modifiez le contenu suivant :

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    findtime = 600
  3. Redémarrez le service fail2ban :

    sudo systemctl restart fail2ban

Protéger le service Apache

  1. Assurez-vous que jail.local contient le contenu suivant :

    [apache]
    enabled = true
    port = http,https
    filter = apache-auth
    logpath = /var/log/apache2/error.log
    maxretry = 3
    bantime = 86400
  2. Redémarrez le service pour appliquer la configuration.


Utilisation avancée de fail2ban

Utiliser fail2ban pour protéger des services personnalisés

  1. Créer un fichier de filtre personnalisé :

    sudo nano /etc/fail2ban/filter.d/myapp.conf
  2. Ajouter des règles de filtre (exemple) :

    [Definition]
    failregex = ^.*  .* "POST /login.php.* 401
    ignoreregex =
  3. Ajouter la jail correspondante dans jail.local :

    enabled = true
    port = http,https
    filter = myapp
    logpath = /var/log/myapp/access.log
    maxretry = 5
    bantime = 3600

Configurer les notifications par e-mail

  1. Modifiez le fichier jail.local :

    [DEFAULT]
    destemail = admin@example.com
    sender = fail2ban@example.com
    mta = sendmail
    action = %(action_mwl)s
  2. Assurez-vous qu'un outil de livraison de courrier (tel que sendmail ou postfix) est installé et configuré sur le système.


Journaux et dépannage de fail2ban

Afficher les journaux de fail2ban

sudo tail -f /var/log/fail2ban.log

Résolution des problèmes courants

fail2ban ne fonctionne pas

  • Vérifier si le service est en cours d'exécution :sudo systemctl status fail2ban
  • Vérifiez les journaux pour les erreurs :sudo journalctl -u fail2ban

IP non bannie

  • Confirmez que le chemin du journal est correct
  • Vérifiez si l'expression régulière du filtre correspond aux entrées du journal
  • Augmentez le niveau de journalisation pour le débogage : définissez-le dans jail.localloglevel = DEBUG

Bannissement d'IP par faux positif

  • Ajoutez les IP de confiance à la liste ignoreip
  • Réduisez maxretry ou augmentez findtime

Bonnes pratiques fail2ban

  1. Mettez à jour régulièrement: Gardez fail2ban à jour pour obtenir les derniers correctifs de sécurité et améliorations de fonctionnalités.

  2. Configuration raisonnable:

    • Définissez des valeurs appropriées pour maxretry et bantime
    • Ne définissez pas bantime sur une valeur trop longue, afin d'éviter de bannir par erreur des utilisateurs légitimes
    • Ne définissez pas non plus une valeur trop courte, sinon l'effet de protection sera limité
  3. Surveillance et revue:

    • Vérifiez régulièrement la liste des IP bannies
    • Analysez les journaux pour comprendre les schémas d'attaque
  4. Protection multicouche:

    • Combinez fail2ban avec d'autres mesures de sécurité (comme les pare-feu et des politiques de mots de passe robustes)
    • Envisagez de changer le port SSH par défaut
  5. Sauvegarde de la configuration:

    • Sauvegardez les fichiers de configuration et les filtres personnalisés
    • Consignez toutes les modifications pour la reprise après sinistre

Résumé

fail2ban est un outil important pour la sécurité des systèmes Linux. En détectant et en bloquant automatiquement les comportements malveillants, il empêche efficacement les attaques par force brute. Configurer et utiliser correctement fail2ban peut considérablement améliorer la sécurité du serveur tout en réduisant la charge d'intervention manuelle des administrateurs. Grâce à cet article, vous devriez avoir maîtrisé l'utilisation de base et les techniques de configuration avancées de fail2ban, et être capable de personnaliser votre propre stratégie de protection de sécurité selon les besoins réels.


Linux 命令大全Liste complète des commandes Linux

Autres extensions