Fail2ban est une solution logicielle gratuite et open source de prévention des intrusions qui protège les serveurs contre les attaques de connexion par force brute. Il surveille divers fichiers journaux de SSH et d'autres applications Web, et chaque fois qu'une authentification échouée est détectée et atteint le nombre maximum, Fail2Ban bloquera automatiquement l'adresse IP à l'aide des iptables de Firewalld. Fail2Ban est simple, pratique, facile à configurer et flexible.
Dans ce guide, nous allons vous montrer comment installer Fail2Ban avec firewalld sur Rocky Linux 8.
Prérequis
- Un serveur exécutant Rocky Linux 8 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Rocky Linux 8 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois connecté à votre serveur, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
dnf mise à jour -y
Étape 2 - Configurer le pare-feu
dnf info firewalld
Si le est installé, vous obtiendrez le résultat suivant :
Dernière vérification de l'expiration des métadonnées :il y a 0:34:46 le mercredi 17 novembre 2021 à 09:52:51 UTC.Installed PackagesName :firewalldVersion :0.8.2Release :7.el8_4Architecture :noarchSize :1.9 MSource :firewalld-0.8.2 -7.el8_4.src.rpmRepository :@SystemFrom repo :baseosSummary :Un démon de pare-feu avec une interface D-Bus fournissant un pare-feu dynamiqueURL :http://www.firewalld.orgLicence :GPLv2+Description :firewalld est un démon de service de pare-feu qui fournit un pare-feu dynamique personnalisable avec une interface D-Bus. Interface D-Bus fournissant un pare-feu dynamiqueURL :http://www.firewalld.orgLicence :GPLv2+Description :firewalld est un démon de service de pare-feu qui fournit un client dynamique omisable :pare-feu avec une interface D-Bus.
Ensuite, vérifiez si le pare-feu est en cours d'exécution ou non.
statut systemctl pare-feu
Vous devriez voir que le service Firewalld est masqué :
● firewalld.service Chargé :masqué (Raison :l'unité firewalld.service est masquée.) Actif :inactif (mort)
Vous devrez donc démasquer le service Firewalld. Vous pouvez le démasquer à l'aide de la commande suivante :
systemctl démasque le pare-feu
Ensuite, démarrez le service Firewalld et activez-le au redémarrage du système :
systemctl démarrer le pare-feudsystemctl activer le pare-feud
À ce stade, Firewalld est installé et fonctionne sur votre système. Vous pouvez maintenant passer à l'étape suivante.
Étape 3 - Installer Fail2Ban
dnf install epel-release -y
Ensuite, installez le package Fail2Ban avec la commande suivante :
installation dnf fail2ban fail2ban-firewalld -y
Une fois Fail2Ban installé, démarrez et activez le service Fail2Ban à l'aide de la commande suivante :
systemctl start fail2bansystemctl enable fail2ban
Vous pouvez vérifier la version de Fail2Ban à l'aide de la commande suivante :
fail2ban-client --version
Exemple de sortie :
Fail2Ban v0.11.2
Étape 4 - Configurer Fail2Ban
Tout d'abord, renommez le fichier de configuration Firewalld pour Fail2Ban à l'aide de la commande suivante :
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Copiez ensuite le fichier de configuration par défaut de Fail2Ban :
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ensuite, modifiez le fichier jail.local :
nano /etc/fail2ban/jail.local
Recherchez les lignes suivantes :
banaction =iptables-multiportbanaction_allports =iptables-allports
Et remplacez-les par les lignes suivantes :
banaction =firewallcmd-rich-rules[actiontype=]banaction_allports =firewallcmd-rich-rules[actiontype=]
Enregistrez et fermez le fichier, puis redémarrez le Fail2Ban pour appliquer les modifications :
systemctl redémarre fail2ban
À ce stade, Fail2Ban est configuré pour fonctionner avec Firewalld.
Étape 5 :Sécurisez le service SSH avec Fail2Ban
Pour protéger le service SSHD, modifiez le fichier jail.local :
nano /etc/fail2ban/jail.local
Recherchez la section [sshd] et activez-la en ajoutant les lignes suivantes :
[sshd]enabled =trueport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)sbantime =10mfindtime =10mmaxretry =5
Enregistrez et fermez le fichier, puis redémarrez Fail2Ban pour appliquer les modifications :
systemctl redémarre fail2ban
Vous pouvez maintenant vérifier le statut de Fail2Ban à l'aide de la commande suivante :
statut systemctl fail2ban
Vous obtiendrez le résultat suivant :
● fail2ban.service - Service Fail2Ban chargé :chargé (/usr/lib/systemd/system/fail2ban.service ; désactivé ; préréglage fournisseur :désactivé) Actif :actif (en cours d'exécution) depuis le mer. 2021-11-17 10:34 :49 UTC ; Il y a 2 s Docs :man:fail2ban(1) Processus :21154 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS) Processus :21185 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) PID principal :21186 (fail2ban-server) Tâches :5 (limite :11411) Mémoire :14,6 M CGroup :/system.slice/fail2ban.service └─21186 /usr/bin/ python3.6 -s /usr/bin/fail2ban-server -xf startNov 17 10:34:49 rockylinux systemd[1] :Démarrage du service Fail2Ban... Nov 17 10:34:49 rockylinux systemd[1] :Démarrage du service Fail2Ban .Nov 17 10:34:49 rockylinux fail2ban-server[21186] :Serveur prêt
Étape 6 - Vérifier le pare-feu Fail2Ban
À ce stade, Fail2Ban est configuré pour protéger le service SSH. Il est maintenant temps de vérifier si Fail2Ban fonctionne.
Tout d'abord, vérifiez la configuration de la prison à l'aide de la commande suivante :
statut fail2ban-client
Vous devriez voir le résultat suivant :
Statut|- Nombre de jail :1`- Liste de jail :sshd
Maintenant, allez sur la machine distante et essayez de vous connecter au serveur SSH avec un mot de passe incorrect. Après avoir atteint le nombre maximum de tentatives (5 fois), votre adresse IP sera bloquée par Fail2Ban.
Maintenant, vérifiez l'adresse IP bloquée par Fail2Ban en utilisant la commande suivante :
fail2ban-client status sshd
Vous devriez obtenir le résultat suivant :
Statut de la prison :sshd|- Filtre| |- Échec actuel :1| |- Échec total :6| `- Correspondances du journal :_SYSTEMD_UNIT=sshd.service + _COMM=sshd`- Actions |- Actuellement interdites :1 |- Total des interdictions :1 `- Liste d'adresses IP interdites :27.61.171.115
Vous pouvez vérifier les règles ajoutées par Firewalld avec la commande suivante :
firewall-cmd --list-rich-rules
Vous obtiendrez le résultat suivant :
rule family="ipv4" source address="27.61.171.115" port port="ssh" protocol="tcp" rejet type="icmp-port-unreachable"
Vous pouvez également consulter les journaux Fail2Ban pour plus d'informations :
tail -f /var/log/fail2ban.log
Exemple de sortie :
2021-11-17 10:37:21,837 fail2ban.filter [21186] :INFO [sshd] Trouvé 27.61.171.115 - 2021-11-17 10:37:212021-11-17 10:37:21,859 fail2ban. actions [21186] :AVIS [sshd] Ban 27.61.171.1152021-11-17 10:37:27,220 fail2ban.filter [21186] :INFO [sshd] Trouvé 27.61.171.115 - 2021-11-17 10:37:27Conclusion
Toutes nos félicitations! Vous avez installé avec succès Fail2Ban avec Firewalld. Vous pouvez maintenant implémenter Fail2Ban sur votre serveur pour le protéger contre les attaques de connexion par force brute. Essayez-le sur votre compte d'hébergement VPS d'Atlantic.Net !