# Sécuriser avec fail2ban

Cédrix - 2024-07-24

#debian #fail2ban #bash

---

## Introduction

Fail2Ban est un logiciel de sécurité conçu pour protéger les systèmes informatiques contre les attaques par force brute et d'autres comportements malveillants. Il fonctionne en surveillant les fichiers de journalisation des services et en prenant des mesures automatisées pour bloquer les adresses IP suspectes.


### Fonctionnement de Fail2Ban

1. **Surveillance des journaux :**
   Fail2Ban surveille les fichiers de log des différents services sur un système, tels que SSH, Apache, Postfix, etc. Lorsqu'une tentative de connexion échouée ou un comportement suspect est détecté, il enregistre l'adresse IP de l'attaquant.

2. **Détection des attaques :**
   Grâce à des expressions régulières définies dans ses fichiers de configuration, Fail2Ban identifie les tentatives de connexion échouées, les erreurs d'authentification, et d'autres types de comportements malveillants.

3. **Actions automatisées :**
   Lorsque le nombre de tentatives échouées pour une adresse IP dépasse un certain seuil (défini dans la configuration), Fail2Ban peut prendre des mesures automatisées telles que :
   - Ajouter une règle au pare-feu pour bloquer l'adresse IP.
   - Envoyer des notifications par email à l'administrateur.
   - Exécuter des scripts personnalisés pour répondre à l'incident.

### Composants principaux de Fail2Ban

1. **Fail2Ban Server :**
   Le serveur Fail2Ban est le processus principal qui exécute les actions de surveillance et de blocage. Il lit les fichiers de configuration, surveille les journaux et applique les actions définies.

2. **Fail2Ban Client :**
   Le client Fail2Ban est une interface en ligne de commande qui permet aux utilisateurs d'interagir avec le serveur Fail2Ban. Il est utilisé pour vérifier l'état des jails, débloquer des adresses IP, redémarrer le serveur Fail2Ban, etc.

3. **Fichiers de configuration :**
   Les fichiers de configuration de Fail2Ban se trouvent généralement dans le répertoire `/etc/fail2ban/`. Ils incluent :
   - **jail.conf** et **jail.local** : Définissent les jails et les paramètres globaux.
   - **filter.d/** : Contient les filtres spécifiques aux services, qui définissent les expressions régulières pour détecter les comportements suspects.
   - **action.d/** : Contient les actions spécifiques que Fail2Ban peut prendre lorsqu'une attaque est détectée.

### Processus de blocage

1. **Détection :**
   Fail2Ban utilise les filtres définis pour analyser les journaux des services. Lorsqu'une ligne correspondant à une tentative de connexion échouée ou à une erreur d'authentification est trouvée, elle est enregistrée.

2. **Comptage des tentatives :**
   Fail2Ban garde une trace du nombre de tentatives échouées pour chaque adresse IP. Si le nombre de tentatives échouées dépasse le seuil défini (par exemple, 3 tentatives), l'adresse IP est considérée comme suspecte.

3. **Application des actions :**
   Une fois qu'une adresse IP est identifiée comme suspecte, Fail2Ban applique les actions définies dans sa configuration. Cela peut inclure l'ajout d'une règle au pare-feu pour bloquer l'adresse IP pendant une certaine période.

### Avantages de Fail2Ban

1. **Automatisation :**
   Fail2Ban permet de bloquer automatiquement les adresses IP suspectes sans intervention manuelle, réduisant ainsi la charge de travail des administrateurs système.

2. **Personnalisation :**
   Les fichiers de configuration de Fail2Ban sont hautement personnalisables, permettant aux administrateurs de définir des règles spécifiques pour chaque service et de configurer les actions à prendre en cas d'attaque.

3. **Extensibilité :**
   Fail2Ban peut être étendu pour surveiller n'importe quel service qui génère des journaux en texte clair, en ajoutant simplement des filtres et des jails appropriés.

4. **Protection en temps réel :**
   Fail2Ban fournit une protection en temps réel contre les attaques par force brute et d'autres comportements malveillants, améliorant ainsi la sécurité globale du système.


## Installer Fail2Ban sous Debian 12

Pour installer Fail2Ban sous Debian 12, suivez les étapes ci-dessous :

### Étape 1 : Mettre à jour les paquets

Avant d'installer Fail2Ban, il est recommandé de mettre à jour la liste des paquets et les paquets installés sur votre système Debian. Ouvrez un terminal et exécutez les commandes suivantes :

```sh
sudo apt update
sudo apt upgrade -y
```

### Étape 2 : Installer Fail2Ban

Installez le paquet Fail2Ban en utilisant `apt` :

```sh
sudo apt install fail2ban -y
```

### Étape 3 : Vérifier l'installation

Après l'installation, vérifiez que le service Fail2Ban est correctement installé et fonctionne en vérifiant son statut :

```sh
sudo systemctl status fail2ban
```

Vous devriez voir une sortie indiquant que le service Fail2Ban est actif et en cours d'exécution.

### Étape 4 : Configuration de base

1. **Créer un fichier de configuration local :**

   Pour personnaliser la configuration de Fail2Ban sans modifier les fichiers de configuration par défaut, créez un fichier `jail.local` à partir du fichier de configuration par défaut `jail.conf` :

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

2. **Éditer le fichier `jail.local` :**

   Ouvrez le fichier `jail.local` avec votre éditeur de texte préféré :

   ```sh
   sudo nano /etc/fail2ban/jail.local
   ```

   Apportez les modifications nécessaires pour configurer les jails que vous souhaitez activer. Par exemple, pour activer la protection SSH, recherchez la section `[sshd]` et définissez `enabled` à `true` :

   ```ini
   [sshd]
   enabled = true
   port    = ssh
   logpath = %(sshd_log)s
   backend = %(sshd_backend)s
   ```

   Vous pouvez configurer d'autres options comme `maxretry`, `bantime`, et `findtime` selon vos besoins.

### Étape 5 : Redémarrer Fail2Ban

Après avoir modifié la configuration, redémarrez le service Fail2Ban pour appliquer les changements :

```sh
sudo systemctl restart fail2ban
```

### Étape 6 : Vérifier le statut des jails

Pour vérifier que vos jails sont correctement configurées et actives, utilisez la commande suivante :

```sh
sudo fail2ban-client status
```

Cette commande affichera un résumé des jails activées et leur statut.

### Étape 7 : Vérifier les logs de Fail2Ban

Pour vérifier que Fail2Ban fonctionne correctement et bannit les adresses IP malveillantes, consultez les logs de Fail2Ban :

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

## Autres articles

- [Sécuriser Postfix avec fail2ban](fail2ban-postfix-sasl.md)

- [Sécuriser sshd avec fail2ban](fail2ban-sshd.md)





