Fail2ban est un cadre logiciel de prévention des intrusions qui protège les serveurs informatiques des attaques par force brute, en interdisant les agents utilisateurs malveillants, en interdisant les analyseurs d'URL, et bien plus encore. Fail2ban y parvient en lisant les journaux d'accès/d'erreurs de votre serveur ou de vos applications Web. Fail2ban est codé dans le langage de programmation Python.
Le tutoriel suivant vous apprendra comment installer Fail2ban et effectuera quelques configurations avec des exemples complets et des conseils essentiels pour démarrer sur Debian 11 Bullseye.
Prérequis
- OS recommandé : Debian 11 Bullseye
- Compte utilisateur : Un compte utilisateur avec un accès sudo ou root.
- Packages requis : wget
Mettre à jour le système d'exploitation
Mettez à jour votre Debian système d'exploitation pour s'assurer que tous les packages existants sont à jour :
sudo apt update && sudo apt upgrade -y
Le tutoriel utilisera la commande sudo et en supposant que vous avez le statut sudo .
Pour vérifier le statut sudo sur votre compte :
sudo whoami
Exemple de sortie montrant l'état de sudo :
[joshua@debian~]$ sudo whoami
root
Pour configurer un compte sudo existant ou nouveau, visitez notre tutoriel sur Ajouter un utilisateur aux Sudoers sur Debian .
Pour utiliser le compte racine , utilisez la commande suivante avec le mot de passe root pour vous connecter.
su
Installer Fail2ban
Par défaut, Fail2ban est inclus dans le référentiel Debian 11 Bullseye. Pour installer le logiciel, utilisez la commande suivante dans votre terminal :
sudo apt install fail2ban
Exemple de résultat :
Tapez Y, puis appuyez sur la touche Entrée pour continuer et terminer l'installation.
Par défaut, fail2ban après l'installation doit être actif et activé. Pour vérifier cela, utilisez la commande systemctl suivante :
sudo systemctl status fail2ban
Exemple de résultat :
Si votre service fail2ban n'est pas activé, exécutez les commandes suivantes pour démarrer et, si vous le souhaitez, activez-le au démarrage du système par défaut :
sudo systemctl start fail2ban
Ensuite, pour activer fail2ban au démarrage du système, utilisez ce qui suit :
sudo systemctl enable fail2ban
Enfin, vérifiez la version et le build de fail2ban :
fail2ban-client --version
Exemple de résultat :
Fail2Ban v0.11.2
Cela montre que vous avez l'une des dernières versions stables, qui est ver. 0.11.2 (2020/11/23) - (guérir le monde avec des outils de sécurité) . Si vous souhaitez savoir à l'avenir où se situe votre version installée dans le calendrier de publication de Fail2ban, visitez la page de publication sur la page de Fail2ban Github.
Configurer Fail2ban
Après avoir terminé l'installation, nous devons maintenant effectuer une configuration et une configuration de base. Fail2ban est livré avec deux fichiers de configuration situés dans /etc/fail2ban/jail.conf et le Fail2ban par défaut /etc/fail2ban/jail.d/defaults-debian.conf . Ne modifiez pas ces fichiers. Les fichiers de configuration d'origine sont vos originaux et seront remplacés dans toute mise à jour de Fail2ban à l'avenir.
Maintenant, vous vous demandez peut-être comment nous configurons Fail2ban comme si vous mettez à jour et perdez vos paramètres. Simple, nous créons des copies se terminant par .local au lieu de .conf car Fail2ban lira toujours .local fichiers avant de charger .conf s'il n'en trouve pas.
Pour cela, utilisez la commande suivante :
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ouvrez maintenant le fichier de configuration pour procéder à la configuration :
sudo nano /etc/fail2ban/jail.local
Ensuite, le didacticiel passera en revue certains paramètres que vous pouvez utiliser ou modifier à votre guise. Notez que la plupart des paramètres sont commentés ; le tutoriel décommentera les lignes en question ou modifiera celles existantes dans les paramètres de l'exemple.
N'oubliez pas qu'il s'agit de paramètres facultatifs et que vous pouvez définir ce que vous voulez si vous en savez plus sur fail2ban et que vous avez confiance.
Incrément de temps d'interdiction
Le premier paramètre que vous rencontrerez est Interdire les incréments de temps. Vous devez l'activer chaque fois que l'attaquant revient. Cela augmentera le temps d'interdiction, évitant à votre système de bannir constamment la même adresse IP si la durée de votre interdiction est mineure ; par exemple, 1 heure, vous voudriez que cela soit plus long si l'attaquant revient x5 fois.
Vous devez également définir un multiplicateur ou un facteur pour que la logique d'augmentation de l'interdiction fonctionne. Vous pouvez choisir n'importe lequel d'entre eux; cependant, dans notre guide, nous préférons les multiplicateurs, comme indiqué dans notre exemple ci-dessous, car vous pouvez définir des augmentations de temps d'interdiction personnalisées à votre guise. Vous trouverez plus d'explications dans la configuration des calculs sous-jacents.
Exemple ci-dessous :
Liste blanche des IP dans Fail2ban
Ensuite dans la liste, nous rencontrons des options de liste blanche, décommentez ce qui suit et adressez toutes les adresses IP que vous souhaitez ajouter à la liste blanche.
ignoreip = 127.0.0.1/8 ::1 192.167.5.5 (example IP address)
Assurez-vous d'espacer ou de virgule entre les adresses IP. Vous pouvez également ajouter des plages d'adresses IP à la liste blanche.
Exemple ci-dessous :
Configuration de l'heure d'interdiction par défaut
Les délais d'interdiction par défaut sont de 10 minutes par défaut avec 10 minutes de recherche sur 5 tentatives. Une explication à cela est que la prison Fail2ban avec filtrage bannira votre attaquant pendant 10 minutes après qu'il aura retenté la même attaque dans 10 minutes (trouver l'heure) x 5 fois (tentatives) . Vous pouvez définir certains paramètres d'interdiction par défaut ici.
Cependant, lorsque vous arrivez en prison, il est conseillé de définir des délais de bannissement différents, car certains bannissements devraient automatiquement être plus longs que d'autres, y compris les tentatives qui devraient être plus ou moins longues.
Exemple ci-dessous :
E-mail configuré avec Fail2ban
Vous pouvez définir une adresse e-mail pour que Fail2ban envoie des rapports. L'action par défaut =%(action_mw)s qui interdit l'adresse IP incriminée et envoie un e-mail avec un rapport whois que vous pouvez consulter.
Cependant, dans votre dossier action.d, d'autres options de messagerie existent pour vous signaler non seulement vous-même, mais aussi envoyer des e-mails aux hébergeurs sur l'activité de l'attaquant afin que quelque chose puisse être fait. Notez que ne le faites que si vous utilisez un proxy de messagerie car certains attaquants ne l'apprécieront pas ou recevront l'e-mail directement avec l'adresse IP de votre serveur, utilisez cette action avec une extrême prudence ou pas du tout.
Exemple ci-dessous :
# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = [email protected]
# Sender e-mail address used solely for some actions
sender = [email protected]
Exemple :
Notez que par défaut, Fail2ban utilise sendmail MTA pour les notifications par e-mail. Vous pouvez le remplacer par la fonction de messagerie en procédant comme suit :
Changer de :
mta = sendmail
Remplacer par :
mail = sendmail
Prisons Fail2ban
Ensuite, nous arrivons aux prisons. Vous pouvez définir des prisons prédéfinies avec des filtres et des actions créés par la communauté couvrant de nombreuses applications serveur populaires. Vous pouvez créer des prisons personnalisées ou en trouver des externes sur divers gists et les sites Web communautaires ; cependant, nous configurerons les jails de package Fail2ban par défaut.
Configuration par défaut pour toutes les prisons selon l'image ci-dessous. Remarquez que rien n'est activé.
Exemple ci-dessous :
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
Donc, nous avons un serveur HTTP Apache 2, et comme pour filtrer/interdire les mauvais bots, tout ce que vous avez à faire est d'ajouter enabled =true comme dans l'exemple ci-dessous.
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
Remarquez que le nombre maximal de tentatives est égal à 1 et que le délai d'interdiction est de 48 heures. Il s'agit d'un réglage individuel de la durée maximale des tentatives et des interdictions pour cette prison qui augmentera automatiquement avec le multiplicateur d'interdiction que nous avons configuré plus tôt dans le guide. S'il manque ceci à l'un des filtres, vous pouvez l'ajouter à titre d'exemple.
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
Modifiez ci-dessus l'exemple suivant :
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 1d
maxretry = 3
Ensuite, vous aimeriez avoir des actions différentes de celles spécifiées dans votre configuration par défaut dans /etc/fail2ban/jail.local, des actions supplémentaires que vous pouvez trouver dans le répertoire action.d. Différentes actions de ce répertoire peuvent être facilement configurées en suivant les instructions à l'intérieur de ces lignes de configuration d'action dans les fichiers, en n'oubliant pas de les renommer d'abord en .jail sur .conf, puis en ajoutant ce qui suit à votre configuration de prison.
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = action_mw
cloudflare
bantime = 72h
maxretry = 1
Comme vous pouvez le voir, nous avons ajouté action_mw, donc il interdit automatiquement selon notre action par défaut et nous envoie un rapport avec whois, puis l'action suivante, si vous utilisez Cloudflare, il bloquera également l'adresse IP sur le service. N'oubliez pas que Cloudflare doit être configuré avant utilisation. Lire le fichier action.d cloudflare.conf .
Une fois que vous êtes satisfait de votre configuration, exécutez la commande suivante pour redémarrer fail2ban afin de charger vos nouvelles prisons.
sudo systemctl restart fail2ban
Exemples d'utilisation du client Fail2ban
Maintenant que vous êtes opérationnel avec Fail2ban, vous devez connaître certaines commandes de fonctionnement de base. Pour ce faire, nous utilisons la commande fail2ban-client . Vous devrez peut-être disposer des privilèges sudo, selon votre configuration.
Bannir une adresse IP :
sudo fail2ban-client set apache-botsearch banip <ip address>
Débannir une adresse IP :
sudo fail2ban-client set apache-botsearch unbanip <ip address>
Commande pour afficher le menu d'aide si vous avez besoin de trouver des paramètres supplémentaires ou d'obtenir de l'aide sur un paramètre particulier.
sudo fail2ban-client -h
Installer UFW (pare-feu simple)
Par défaut, Debian n'est pas fourni avec UFW. Pour les utilisateurs qui préfèrent utiliser UFW avec Fail2ban, suivez les étapes ci-dessous.
Tout d'abord, installez UFW :
sudo apt install ufw -y
Ensuite, vérifiez l'installation et la compilation :
sudo ufw version
Exemple de résultat :
ufw 0.36
Copyright 2008-2015 Canonical Ltd.
Activez maintenant au démarrage du système et activez fail2ban à l'aide de la commande terminal :
sudo ufw enable
Exemple de résultat :
Firewall is active and enabled on system startup
Ensuite, ajoutez UFW à votre banaction, qui n'utilisera pas à la place les IPTABLES par défaut et vous ce que vous spécifiez :
Exemple tiré de :
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 72h
maxretry = 1
Exemple :
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
bantime = 72h
maxretry = 1
Comme vous pouvez le voir, la nouvelle ligne banaction =ufw a été ajouté pour modifier l'action d'interdiction par défaut. Vous pouvez en ajouter plusieurs, disons que vous voulez BAN sur UFW et également utiliser le script Cloudflare pour interdire l'adresse IP à l'aide de leur service de pare-feu tout en signalant l'adresse IP à AbuseIPDB Fail2ban Integration :
Exemple :
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
cloudflare
abuseipdb
bantime = 72h
maxretry = 1
Une liste d'actions prédéfinies se trouve dans /etc/fail2ban/actions.d ; toutes les actions ont une configuration de base et des cas d'utilisation.
Pour afficher les adresses IP interdites, utilisez la commande UFW suivante :
sudo ufw status verbrose
Exemple de résultat :
Anywhere REJECT <IP ADDRESS> # by Fail2Ban after 1 attempts against apache-botsearch
Comme vous pouvez le voir, vous pouvez voir que l'UFW rejette l'adresse IP après avoir été banni par l'action Fail2ban UFW sur le filtre apache-botsearch après une seule tentative. Ceci n'est qu'un exemple de Fail2ban fonctionnant dans un environnement réel, et pour s'y attendre, vous devez modifier vos filtres en fonction de vos besoins.
Remarque, ne débloquez pas les adresses IP à l'aide d'UFW. Assurez-vous d'utiliser l'action fail2ban-client unban, sinon l'adresse IP sera à nouveau bannie lors du retour sur le site car UFW ne peut pas communiquer avec Fail2ban.
Mettre à jour Fail2ban
Les versions Fail2ban ne sortent pas souvent, vous ne verrez donc pas de changements significatifs chaque semaine ou, d'ailleurs, même mensuellement. Cependant, pour mettre à jour Fail2ban, le même processus s'applique lors de la vérification de votre système Debian pour les mises à jour.
Tout d'abord, utilisez la mise à jour apt commande :
sudo apt update
Deuxièmement, si une mise à jour est disponible, vous pouvez utiliser une mise à niveau apt, qui lancera la mise à niveau plus toutes les autres, ou si vous préférez mettre à niveau fail2ban, utilisez ce qui suit :
sudo apt upgrade fail2ban
Désinstaller Fail2ban
Si vous n'avez plus besoin de Fail2ban, pour le supprimer de votre système, utilisez la commande suivante :
sudo apt autoremove fail2ban --purge
Exemple de résultat :
Tapez Y, puis appuyez sur la TOUCHE ENTRÉE pour procéder à la suppression.
Notez que cela supprimera également toutes les dépendances inutilisées qui ont été installées avec Fail2ban à l'origine pour une suppression complète.
Surveillance des journaux Fail2ban
De nombreuses erreurs courantes consistent à mettre en place des prisons et à s'en aller sans tester ni surveiller ce qu'ils font. L'examen des journaux est essentiel, le journal fail2ban se trouvant dans son chemin par défaut /var/log/fail2ban.log .
Si vous avez un serveur recevant un trafic décent, une excellente commande pour regarder en direct pour voir les problèmes et garder un œil dessus pendant que vous travaillez sur d'autres serveurs est d'utiliser la commande tail -f ci-dessous.
sudo tail -f /var/log/fail2ban.log
La commande peut être utile pour une vérification ponctuelle sans avoir à plonger dans la journalisation.