Fail2ban est un framework de sécurité open source écrit en Python qui protège les serveurs contre les attaques par force brute . Il analyse les fichiers journaux et interdit les adresses IP qui effectuent des tentatives de connexion infructueuses. Cela 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 configuré par défaut pour surveiller les tentatives de connexion SSH et peut surveiller d'autres fichiers journaux tels que Apache, vsftpd et Postfix, etc.
Dans ce tutoriel, je vais vous expliquer comment installer et configurer fail2ban sur Ubuntu 20.04.
Installer Fail2ban sur Ubuntu
Pour commencer, ouvrez votre terminal et mettez à jour les listes de packages.
$ sudo apt update
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 install fail2ban
Une fois installé, vérifiez s'il est en cours d'exécution en :
$ sudo systemctl status 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
Sortie :
root 1310843 1 0 11:17 ? 00:00:02 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Génial. Voyons un aperçu des fichiers de configuration associés à Fail2ban et comment 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 sont situés 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.
Comme solution de contournement, la méthode recommandée pour configurer Fail2ban consiste à créer une copie du jail.conf
fichier dans jail.local
et définir plus tard 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, à l'aide de votre éditeur de texte préféré, ouvrez le fichier. Ici, j'utilise l'éditeur vim.
$ sudo vim /etc/fail2ban/jail.local
Adresses IP sur liste blanche
Utilisation du ignoreip
directive, vous pouvez exclure les adresses IP, la plage d'adresses IP ou un sous-réseau entier de l'interdiction. C'est ici que vous ajoutez les adresses IP des machines distantes que vous souhaitez mettre en liste blanche ou autoriser l'accès en termes simples. Plusieurs adresses IP peuvent être ajoutées à l'aide d'espaces ou de virgules.
Par exemple, pour mettre en liste blanche les adresses IP 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 :
- bantime
- trouver le temps
- maxretry
bantime - Il s'agit de la période pendant laquelle une adresse IP est interdite ou se voit refuser l'accès de tenter de se reconnecter au serveur. Par défaut, il est réglé sur 10 min, mais n'hésitez pas à le régler 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 10min. 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.
maxretry - Cela représente le nombre maximum de tentatives de connexion infructueuses avant qu'une IP ne soit bannie. B par défaut, il est réglé sur 5 secondes, ce qui devrait être correct, mais je préférerais 3 secondes pour minimiser les bombardements de tentatives de connexion.
Notifications par e-mail
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 à l'administrateur avec un rapport whois détaillé. Pour inclure les messages du journal, définissez le paramètre sur %(action_mwl)s
.
Définissez en outre l'adresse e-mail d'envoi ainsi que le destinataire.
Prisons Fail2ban
Fail2ban modus operandi utilise le concept de prisons. Autrement dit, si l'adresse IP incriminée tente 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 avant le bantime 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 que les entrées de journal correspondantes sont identifiées et que les conditions sont remplies, les actions sont mises en œuvre.
La prison SSH est généralement activée par défaut pour mettre une laisse sur les connexions SSH malveillantes à partir d'adresses IP suspectes. Pour activer une prison pour un autre service, ajoutez simplement le enabled =true attribut après l'en-tête de la prison. Vous pouvez également fournir des paramètres d'interdiction comme nous l'avons vu précédemment.
Client Fail2ban
Fail2ban fournit un outil de ligne de commande pour interagir avec Fail2ban appelé fail2ban-client . Vous pouvez effectuer une myriade de tâches, y compris interdire et débannir des adresses IP.
Pour vérifier l'état de Fail2ban et voir s'il y a des IP interdites ou des filtres violés, exécutez la commande :
$ sudo fail2ban-client status sshd
La sortie ci-dessous confirme la présence d'une adresse IP interdite ou sur liste noire après des tentatives de connexion SSH infructueuses. 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*
Sortie :
2021-04-29 11:17:55,081 fail2ban.actions [1310843]: NOTICE [sshd] Ban 117.221.69.37 2021-04-29 11:17:55,123 fail2ban.actions [1310843]: NOTICE [sshd] Ban 49.233.251.133 2021-04-29 11:17:55,131 fail2ban.actions [1310843]: NOTICE [sshd] Ban 106.52.93.202 2021-04-29 11:17:55,139 fail2ban.actions [1310843]: NOTICE [sshd] Ban 222.187.232.205 2021-04-29 11:17:55,147 fail2ban.actions [1310843]: NOTICE [sshd] Ban 222.187.239.107
Pour débannir l'adresse IP de la liste noire, exécutez la commande :
$ sudo fail2ban-client set sshd unbanip 192.168.2.102
Maintenant, vérifiez à nouveau le statut de Fail2ban, et cette fois, l'IP bannie ne s'enregistre plus.
Pour interdire une adresse IP, tapez :
$ sudo fail2ban-client set 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 celles des robots et des scripts automatisés. Ceci conclut ce tutoriel sur l'installation et la configuration de Fail2ban sur Ubuntu 20.04.