Fail2ban est un framework de sécurité open source écrit en Python qui protège les serveurs contre attaques par force brute. Il analyse les fichiers journaux et interdit les adresses IP qui effectuent des tentatives de connexion infructueuses. Il fonctionne en mettant à jour le pare-feu pour rejeter les nouvelles connexions à partir de ces adresses IP pendant une période de temps configurable.
Par défaut, Fail2ban utilise Iptables et il est possible de l’utiliser avec d’autres pare-feu. Prise en charge de Fail2ban pour IPv4 et IPv6.
Fail2ban par défaut configuré pour surveiller Tentatives de connexion SSH et peut surveiller d’autres fichiers journaux tels que pour Apache, vsftpd et Postfix, etc.
Dans ce tutoriel, je vais vous expliquer comment installer et configurer fail2ban au Ubuntu 20.04.
Installer Fail2ban sur Ubuntu
Pour commencer, ouvrez votre terminal et mettez à jour les listes de paquets.
$ sudo mise à jour appropriée
Fail2Ban est déjà fourni avec la plupart des distributions Linux. Pour installer fail2ban à l’aide du gestionnaire de packages APT, exécutez :
$ sudo apt installer fail2ban
Une fois installé, vérifiez s’il fonctionne en :
$ sudo état systemctl fail2ban
À partir de la sortie, nous pouvons voir que le service fail2ban est actif et fonctionne comme prévu.

Pour vérifier le processus fail2ban en cours d’exécution, tapez :
$ sudo ps -efww | egrep fail2ban
Sortir:
racine 1310843 1 0 11:17 ? 00:00:02 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Super. Ayons un aperçu des fichiers de configuration associés à Fail2ban et de la façon de modifier les paramètres des adresses IP de la liste noire ou de la liste blanche.
Présentation des fichiers de configuration
Les fichiers de configuration de Fail2ban se trouvent dans le /etc/fail2ban
répertoire comme indiqué.

Les principaux fichiers de configuration sont /etc/fail2ban/jail.conf
et /etc/fail2ban/jail.d/defaults-debian.conf
.
Quoi que vous fassiez, il n’est pas recommandé de modifier ces fichiers car il y a de fortes chances qu’ils soient écrasés lors de la mise à jour du package fail2ban.
Pour contourner ce problème, la méthode recommandée pour configurer Fail2ban consiste à créer une copie du jail.conf
fichier à jail.local
et plus tard définir vos propres paramètres. Vous n’êtes pas obligé d’inclure tous les paramètres du jail.conf
fichier, uniquement ceux que vous souhaitez remplacer.
Alors, créons d’abord le jail.local
fichier de configuration comme suit.
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Maintenant, en utilisant votre éditeur de texte préféré, ouvrez le fichier. Ici, j’utilise l’éditeur vim.
$ sudo vim /etc/fail2ban/jail.local
Ajouter des adresses IP à la liste blanche
En utilisant le ignoreip
directive, vous pouvez exclure l’interdiction des adresses IP, de la plage d’adresses IP ou d’un sous-réseau entier. C’est ici que vous ajoutez les adresses IP des machines distantes que vous souhaitez ajouter à la liste blanche ou autoriser l’accès en termes simples. Plusieurs adresses IP peuvent être ajoutées à l’aide d’espaces ou de virgules.
Pour example, pour ajouter les adresses IP à la liste blanche 192.168.2.50 , 192.168.2.100 ajoutez les entrées comme suit.

Paramètres d’interdiction
Les conditions d’interdiction sont définies par les paramètres suivants :
- l’heure du ban
- trouver le temps
- essai max
l’heure du ban – Il s’agit de la période pendant laquelle une adresse IP se voit interdire ou refuser l’accès pour tenter de se reconnecter au serveur. Par défaut, cela est défini sur 10 min, mais n’hésitez pas à le définir selon vos préférences.
trouver le temps – Il s’agit de la durée entre les tentatives de connexion infructueuses avant qu’une interdiction ne soit mise en œuvre. Celui-ci est réglé sur 10 minutes. Cela signifie que si vous tentez une connexion SSH et que les échecs atteignent le maxtry valeur dans un délai de 10 minutes, l’adresse IP à partir de laquelle vous vous connectez sera bannie.
essai max – Cela représente le nombre maximum de tentatives de connexion infructueuses avant qu’une IP ne soit interdite. B par défaut, il est défini sur 5 secondes, ce qui devrait être correct, mais je préférerais 3 secondes pour minimiser le bombardement de tentatives de connexion.

Notifications par email
Fail2ban possède la capacité d’envoyer des alertes par e-mail une fois qu’une adresse IP a été bannie. Pour envoyer et recevoir des e-mails, vous devez avoir un serveur SMTP installé et configuré. Pour utiliser la fonction de notification par e-mail, ajoutez la ligne ci-dessous
action = %(action_mw)s
Le paramètre %(action_mw)s
interdit l’adresse IP suspecte et envoie un e-mail au admin avec un rapport whois détaillé. Pour inclure les messages de journal, définissez le paramètre sur %(action_mwl)s
.
De plus, définissez l’adresse e-mail d’envoi ainsi que le destinataire.

Fail2ban prisons
Fail2ban modus operandi utilise le concept de prisons. C’est-à-dire que si l’adresse IP incriminée essaie sans succès de se connecter ou d’accéder à un service, elle est placée dans une « prison » et ne peut pas établir de connexion tant que le l’heure du ban s’écoule.
Une prison, en termes simples, est un service avec des filtres et des actions. Fail2ban examine les entrées de journal et une fois les entrées de journal correspondantes identifiées et les conditions remplies, les actions sont mises en œuvre.
La prison SSH est généralement activée par défaut pour mettre en laisse les connexions SSH malveillantes à partir d’adresses IP suspectes. Pour activer une prison pour un autre service, ajoutez simplement le activé = vrai attribut après le titre de prison. Vous pouvez également fournir des paramètres d’interdiction comme nous l’avons vu précédemment.

Client Fail2ban
Fail2ban fournit un outil en ligne de commande pour interagir avec Fail2ban connu sous le nom fail2ban-client. Vous pouvez effectuer une myriade de tâches, notamment interdire et annuler l’interdiction d’adresses IP.
Pour vérifier l’état de Fail2ban et voir s’il existe des IP interdites ou des filtres violés, exécutez la commande :
$ sudo fail2ban-client statut sshd
La sortie ci-dessous confirme la présence d’une adresse IP interdite ou sur liste noire après l’échec des tentatives de connexion SSH. L’adresse IP est actuellement dans la prison SSH.

Vous pouvez également filtrer le fichier fail2ban.log pour répertorier toutes les adresses IP interdites :
$ sudo zgrep ‘Ban’ /var/log/fail2ban.log*
Sortir:
2021-04-29 11:17:55,081 fail2ban.actions [1310843]: REMARQUER [sshd] Interdiction 117.221.69.37 2021-04-29 11:17:55,123 fail2ban.actions [1310843]: REMARQUER [sshd] Interdiction 49.233.251.133 2021-04-29 11:17:55,131 fail2ban.actions [1310843]: REMARQUER [sshd] Interdiction 106.52.93.202 2021-04-29 11:17:55,139 fail2ban.actions [1310843]: REMARQUER [sshd] Interdiction 222.187.232.205 2021-04-29 11:17:55,147 fail2ban.actions [1310843]: REMARQUER [sshd] Interdiction 222.187.239.107
Pour annuler l’interdiction de l’adresse IP sur liste noire, exécutez la commande :
$ sudo fail2ban-client définir sshd unbanip 192.168.2.102
Vérifiez maintenant à nouveau le statut de Fail2ban, et cette fois, l’adresse IP interdite ne s’enregistre plus.

Pour bannir une adresse IP, tapez :
$ sudo fail2ban-client définir sshd banip 192.168.2.102
Pour plus d’options de ligne de commande, exécutez la commande :
$ fail2ban-client -h

Conclusion
Gardez à l’esprit que Fail2ban ne remplace pas les pare-feu et autres mesures de sécurité utilisées pour protéger votre système. Il s’agit simplement d’une couche de sécurité supplémentaire qui donne à votre serveur une couche supplémentaire de protection contre les attaques par force brute, en particulier des robots et des scripts automatisés. Ceci conclut ce tutoriel sur la façon d’installer et de configurer Fail2ban sur Ubuntu 20.04.