Comment installer Fail2ban avec Firewalld sur Rocky Linux 8.4

Fail2ban est un démon système pour protéger les serveurs contre les connexions malveillantes et les attaques par force brute. Fail2ban est un framework IPS (Intrusion Prevention Software) open-source écrit en Python et il est extrêmement configurable. Il fonctionne comme un service démon qui surveille le journal SystemD et les fichiers journaux, puis recherche les tentatives d’authentification échouées. Lorsque l’échec de l’authentification atteint le nombre X maximum, le fail2ban bloque automatiquement l’adresse IP à l’aide du logiciel de pare-feu.

Si tu es propriétaire d’un VPS (Virtual Private Server) ou d’un serveur dédié, tu devrais envisager d’installer fail2ban sur tous tes serveurs. Il t’aidera à protéger certains services de base comme SSH et FTP contre les attaques malveillantes par force brute. De plus, fail2ban est très pratique, facile à configurer et flexible.

Dans ce guide, tu apprendras comment installer fail2ban sur Rocky Linux, configurer fail2ban avec firewalld et sécuriser le service SSH contre les attaques par force brute.

Conditions préalables

  • Un utilisateur avec les privilèges sudo root.

Configuration de Firewalld

Firewalld est le logiciel pare-feu par défaut sur Rocky Linux. Il est automatiquement installé lors de ton installation de Rocky Linux, mais il n’est pas activé par défaut.

1. Exécute la commande suivante pour t’assurer que le paquetage firewalld est disponible sur ton système.

sudo dnf info firewalld

Tu obtiendras une sortie similaire à celle ci-dessous.

Vérifier le paquet fail2ban

Comme tu le vois sur la capture d’écran, le paquet firewalld est répertorié dans la liste des« Paquets installés« .

2. Ensuite, démarre le service firewalld à l’aide de la commande suivante.

sudo systemctl start firewalld

3. Active maintenant le service firewalld pour qu’il s’exécute automatiquement à chaque démarrage du système.

sudo systemctl enable firewalld

Et tu obtiendras le résultat suivant.

Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.

4. Ensuite, vérifie l’état du service firewalld à l’aide de la commande suivante.

sudo systemctl status firewalld

Et tu obtiendras le résultat suivant.

Statut du service Fail2ban actif et en cours d'exécution

Comme tu le vois, le service firewalld est actif et fonctionne.

5. En option, tu peux vérifier l’état du service firewalld à l’aide de la commande firewall-cmd. La commande firewall-cmd est l’interface principale pour interagir avec firewalld. La commande firewall-cmd est un utilitaire pour gérer les règles de firewalld, elle te permet d’ajouter des règles, de supprimer des règles, de vérifier l’état, etc.

Exécute la commande firewall-cmd ci-dessous pour vérifier l’état du service firewalld.

sudo firewall-cmd --state

Si ton firewalld est actif, tu obtiendras la sortie« en cours d’exécution« . Sinon, tu obtiendras le message« non en cours d’exécution« .

Exécute maintenant la commande firewall-cmd suivante pour vérifier toutes les règles firewalld actuellement appliquées.

sudo firewall-cmd --list-all

Tu obtiendras un résultat similaire à celui ci-dessous.

firewalld vérifie l'état en utilisant firewall-cmd

Ajout du dépôt EPEL à Rocky Linux

Avant d’installer fail2ban, tu dois ajouter le dépôt EPEL(Extra Packages for Enterprise Linux) à ton système.

1. Exécute la commande suivante pour installer le référentiel EPEL.

sudo dnf install epel-release

Tape « y » pour installer et continuer.

Ajouter le dépôt EPEL à Rocky Linux

2. Une fois l’installation terminée, vérifie tous les référentiels disponibles sur ton système à l’aide de la commande suivante.

sudo dnf repolist

Tu verras maintenant le résultat comme ci-dessous.

Vérifie le référentiel activé sur Rocky Linux avec la commande DNF

Comme tu le vois, le référentiel EPEL est disponible et actif sur le système. Maintenant, continuons l’installation de Fail2ban.

Installation de Fail2ban sur Rocky Linux

1. Pour installer fail2ban, exécute la commande ci-dessous.

sudo dnf install fail2ban fail2ban-firewalld

Tape « y » pour confirmer l’installation et appuie sur« Enter » pour continuer.

Installation de fail2ban sur Rocky Linux

Comme sur la ligne de commande, tu installes aussi le paquet supplémentaire « fail2ban-firewalld ». Il permettra à fail2ban de manipuler les règles de firewalld.

2. Lorsque l’installation est terminée, démarre le service fail2ban à l’aide de la commande ci-dessous.

sudo systemctl start fail2ban

3. Ensuite, exécute la commande suivante pour permettre au service fail2ban de démarrer automatiquement à chaque démarrage du système.

sudo systemctl enable fail2ban

4. Maintenant, vérifie l’état des services fail2ban en exécutant la commande suivante.

sudo systemctl status fail2ban

Et tu obtiendras que le service fail2ban est actif et fonctionne avec la configuration par défaut comme ci-dessous.

Vérifie l'état du service fail2ban

Configuration de Fail2ban

Tu vas maintenant configurer fail2ban et permettre à fail2ban de fonctionner avec le firewalld.

1. Copie la configuration par défaut de fail2ban de « jail.conf » à« jail.local » en utilisant la commande suivante.

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

2. Ensuite, modifie la configuration fail2ban à l’aide de la commande suivante de l’éditeur nano.

sudo nano /etc/fail2ban/jail.local

Sous la section « [DEFAULT]« , vérifie les configurations ci-dessous.

[DEFAULT]
....
bantime = 1h
findtime = 1h
maxretry = 5

Options que tu dois connaître.

  • [DEFAULT] = Toutes les configurations de cette section s’appliqueront comme une configuration globale par défaut.
  • bantime = Le nombre de fois que l’adresse IP x sera bannie. Il prend en charge le format d’un jour, d’une minute ou d’heures. Dans cet exemple, l’hôte ou l’adresse IP sera interdit(e) pendant « 1 heure » après un maximum de tentatives d’échec d’authentification.
  • findtime = L’adresse IP sera interdite si elle a connu un maximum d’échecs d’authentification au cours de la dernière « findtime ».
  • maxretry = Lorsque l’adresse IP a le nombre X d’échecs de connexion maxretry, elle sera interdite. Dans cet exemple, l’adresse IP sera bannie après 5 tentatives d’échec d’authentification.

Ajuste le bantime, findtime et maxretry selon tes besoins, puis appuie sur « Ctrl+x » et tape « y », puis appuie sur « Enter » pour enregistrer la configuration.

3. La configuration par défaut de fail2ban utilise iptables pour le blocage. Pour permettre à fail2ban d’utiliser firewalld pour le blocage, copie la configuration« 00-firewalld.conf » dans« 00-firewalld.local » à l’aide de la commande ci-dessous.

sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

Cette configuration« 00-firewalld.conf » fait partie du paquet« fail2ban-firewalld« .

4. Redémarre maintenant le service fail2ban pour appliquer les nouvelles configurations à l’aide de la commande ci-dessous.

sudo systemctl restart fail2ban

Protéger le service SSH avec Fail2ban

Par défaut, le fail2ban ne bloque aucune adresse IP, jusqu’à ce que tu actives la configuration jail pour chaque service que tu veux protéger. De plus, la configuration jail remplacera la configuration par défaut sur « jail.local ». La configuration jail sera disponible dans le répertoire « /etc/fail2ban/jail.d ».

1. Crée une nouvelle configuration jail pour le service SSH à l’aide de la commande suivante.

sudo nano /etc/fail2ban/jail.d/sshd.local

Colle maintenant la configuration suivante.

[sshd]
enabled = true

# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3

Comme tu le vois, la configuration remplace les options« bantime » et« maxretry » pour le jail« sshd« .

Appuie sur « Ctrl+x » et tape« Y » puis appuie sur« Enter » pour enregistrer la nouvelle configuration jail.

2. Pour appliquer la nouvelle configuration, redémarre le service fail2ban à l’aide de la commande suivante.

sudo systemctl restart fail2ban

3. Ensuite, vérifie l’état de fail2ban à l’aide de la commande fail2ban-client. La commande fail2ban-client est une ligne de commande pour gérer le serveur de contrôle fail2ban.

Exécute maintenant la commande fail2ban-client ci-dessous pour vérifier la configuration de la prison.

sudo fail2ban-client status

Tu obtiendras une sortie similaire à celle ci-dessous.

Vérifie l'état de fail2ban en utilisant fail2ban-client

Le fail2ban fonctionne avec 1 jail actif nommé« sshd« .

Pour vérifier la configuration d’un jail spécifique, tu peux utiliser l’option« get » suivie du nom du jail, puis des options que tu veux vérifier.

Vérifie la configuration « maxretry » pour le jail « sshd » à l’aide de la commande ci-dessous.

sudo fail2ban-client get sshd maxretry

Tu verras que le résultat est« 3« , ce qui correspond à la valeur de la configuration « sshd.local ».

Ensuite, vérifie l’action d’interdiction par défaut pour jail « sshd » à l’aide de la commande ci-dessous.

sudo fail2ban-client get sshd actions

Et tu verras que la sortie est« firewallcmd-rich-rules« , correspond à la configuration globale de fail2ban dans « 00-firewalld.local ».

Vérifie l’installation de Fail2ban et Firewalld

Pour vérifier l’installation de fail2ban, vérifie l’état complet de la jail (pour ce guide, il s’agit de la jail sshd), et vérifie les règles firewalld générées par fail2ban.

À des fins de test, voici la capture d’écran après avoir essayé de te connecter à un serveur SSH avec un mot de passe incorrect. Après avoir atteint le maximum de tentatives« 3 » fois, la connexion est abandonnée par le serveur.

La connexion SSH a été abandonnée par le serveur après avoir atteint le nombre maximal de tentatives (maxretry). 3 tentatives d'authentification ont échoué.

1. Exécute la commande suivante pour vérifier l’état d’une jail spécifique (dans cet exemple, la jail sshd).

sudo fail2ban-client status sshd

Tu obtiendras un résultat similaire à celui indiqué ci-dessous.

Vérifier l'état de la prison de fail2ban

Comme tu le vois, la prison sshd a 1 adresse IP bannie. Si tu es sur un VPS ou un serveur dédié en direct, tu verras beaucoup plus d’adresses IP.

2. Le fail2ban génère des règles riches firewalld pour bloquer les adresses IP. Les règles riches de firewalld sont une capacité de filtrage avancée de firewalld.

Exécute la commande suivante pour afficher les règles riches de firewalld générées par fail2ban.

firewall-cmd --list-rich-rules

Tu obtiendras une sortie similaire à celle ci-dessous.

Vérification des règles riches de firewalld générées par fail2ban

Débanner une adresse IP sur Fail2ban

Pour débanaliser une adresse IP de fail2ban, tu peux utiliser la commande fail2ban-client.

1. Exécute la commande fail2ban-client ci-dessous pour débanaliser l’adresse IP« 192.168.1.10« .

sudo fail2ban-client unban 192.168.1.10

L’adresse IP sera retirée de la liste des interdictions sur fail2ban.

Ensuite, exécute la commande suivante pour t’assurer que l’adresse IP est supprimée de la base de données fail2ban (pour cet exemple, le jail sshd).

sudo fail2ban-client status sshd

Et tu obtiendras que l’adresse IP est supprimée de la section« Liste des IP interdites« .

Conclusion

Félicitations ! Tu as réussi à installer le framework fail2ban IPS sur Rocky Linux 8.4. Et pour la prochaine étape, tu peux envisager une autre configuration de jail pour sécuriser d’autres services tels que le serveur FTP, phpMyAdmin, WordPress, etc.

Vous aimerez aussi...