Avez-vous déjà créé un serveur Web, ouvert le terminal et remarqué le nombre de tentatives de connexion alors que vous étiez hors ligne ? Les attaquants utilisent une méthode appelée « forçage brutal ». Le forçage brutal est une méthode permettant d'accéder à un serveur Web en saisissant des mots de passe aléatoires, à l'aide d'un script, dans l'espoir d'y accéder.
Pour éviter cela, nous utilisons un outil appelé Fail2Ban.
Qu'est-ce que Fail2Ban ?
Fail2Ban est un cadre logiciel de prévention des intrusions qui protège les serveurs informatiques contre les attaques par force brute. Écrit dans le langage de programmation Python, il est capable de fonctionner sur des systèmes POSIX qui ont une interface avec un système de contrôle de paquets ou un pare-feu installé localement, par exemple, iptables ou TCP Wrapper. — Wikipédia
Installer Fail2Ban
Dans ce guide, nous allons couvrir l'installation et la configuration de Fail2Ban sur un serveur Web Ubuntu 20.04.
Étape 1 - Mettre à jour le système et installer Fail2Ban
Exécutons notre commande de mise à jour.
$ sudo apt update && sudo apt upgrade -y
Installons maintenant Fail2Ban.
$ sudo apt install fail2ban
Une fois installé, Fail2Ban devrait démarrer automatiquement. Juste au cas où, vérifions son statut en utilisant la commande ci-dessous pour nous en assurer.
$ sudo systemctl status fail2ban
Notre installation de Fail2Ban est installée et active. :)
Étape 2 - Configurer Fail2Ban
Lors de l'installation de Fail2Ban, le script crée deux fichiers de configuration, /etc/fail2ban/fail.conf
et /etc/fail2ban/fail.d/defaults-debian.conf
. Toute modification apportée à ces fichiers risque d'être écrasée lors des mises à jour du package.
Fail2ban lit les fichiers de configuration dans cet ordre. Le .local
le fichier remplace les paramètres de .cong
fichier.
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Le moyen le plus efficace de configurer Fail2Ban sera de copier le contenu de jail.conf
vers jail.local
puis modifiez le fichier local.
Étape 2.1 – Créer notre fichier local et configurer le serveur
Maintenant, copions notre jail.conf
fichier dans notre jail.local
fichier.
$ sudo cp /etc/fail2ban/jail.{conf,local}
Après avoir saisi cette commande, le terminal ouvrira immédiatement une nouvelle ligne.*
Configurez le serveur Fail2Ban en ouvrant le jail.local
fichier avec nano ou votre éditeur de texte préféré.
$ sudo nano /etc/fail2ban/jail.local
Vous devriez maintenant être dans le jail.local
fichier et voir les commentaires décrivant ce que fait chaque configuration.
Étape 2.2 – Liste blanche des adresses IP
Les adresses IP, les plages et les hôtes que vous souhaitez exclure de l'interdiction doivent être ajoutés à ignoreip
directives.
Décommentez (supprimez le symbole #) la ligne ignoreip et ajoutez vos adresses IP séparées par un espace.
Étape 2.3 – Paramètres des règles d'interdiction
Quelques lignes sous le commentaire ignoreip, vous trouverez bantime
, findtime
, et maxretry
.
bantime
est la durée pendant laquelle l'adresse IP est interdite. La durée d'interdiction par défaut est de 10 minutes. Vous souhaiterez plus que probablement un bantime
plus long . Vous pouvez bannir un utilisateur de manière permanente en utilisant un nombre négatif. Si vous n'utilisez pas de suffixe (c'est-à-dire 10 au lieu de 10d), le temps sera en secondes. Vous pouvez définir cette heure pour la durée que vous souhaitez, nous utiliserons 10d.
bantime = 10d
findtime
est la durée entre le nombre d'échecs avant que l'IP ne soit bannie. Ceci est différent de maxretry
car cela n'interdit pas en fonction du nombre de tentatives de connexion, plutôt que du montant successif.
finetime = 5m
maxretry
est le nombre d'échecs de connexion avant que l'IP ne soit bannie. Encore une fois, vous pouvez le configurer à votre guise.
maxretry = 5
Étape 2.4 :Notifications par e-mail
Fail2Ban peut être configuré pour envoyer des alertes par e-mail lorsqu'une adresse IP a été bannie. Vous devez avoir SMTP configuré sur votre serveur Web. La première étape consiste à modifier le commentaire d'action.
action = %(action_MW)s
Cela interdit l'adresse IP et envoie une alerte par e-mail avec un rapport whois. Si vous souhaitez inclure des journaux dans l'e-mail, utilisez %(action_MWl)s
à la place.
Vous devrez également ajuster les adresses e-mail d'envoi et de réception afin que le système corrige l'alerte.
destemail = [email protected]
sender = [email protected]
Étape 2.5 :Prisons
Une prison dans Fail2Ban est une combinaison d'un filtre et d'une ou plusieurs actions. Un filtre définit une expression régulière qui correspond à un modèle correspondant à une tentative de connexion échouée ou à une autre activité suspecte. Les actions définissent les commandes qui sont exécutées lorsque le filtre détecte une adresse IP abusive. — Plesk
Fail2Ban est livré avec une variété de prisons pour différents services. Y compris la possibilité de créer vos propres créations personnalisées.
Une installation par défaut de Fail2Ban a une prison ssh activée. Pour activer une prison, vous devrez ajouter enabled = true
après le titre de prison. En utilisant OpenWebMail comme exemple :
[openwebmail]
enabled = true
port = http,https
logpath = /var/log/openwemail.log
Si vous souhaitez définir des règles d'interdiction pour un service, vous pouvez le faire sous le service.
[sshd]
enabled = true
maxretry = 5
findtime = 5m
bantime = 10d
ignoreip = 192.169.0.1/8 12.34.56.78
Vous pouvez modifier les filtres dans /etc/fail2ban/filter.d
répertoire.
Étape 3 - Redémarrez Fail2Ban
Après chaque installation et configuration terminées, il est préférable de redémarrer le service pour que les modifications prennent effet.
$ sudo systemctl restart fail2ban
Étape 4 - Ligne de commande Fail2ban
Utilisation de l'outil fail2ban-client
vous pouvez apporter des modifications avec le script Fail2Ban. Pour utiliser la ligne de commande, utilisez :
$ sudo fail2ban-client
[suivi de votre commande]
Pour afficher les options disponibles, utilisez :
$ sudo fail2ban-client -h
Voici quelques commandes pratiques :
Débloquer l'adresse IP :
$ sudo fail2ban-client set sshd unbanip 12.34.56.789
Bannir une adresse IP :
$ sudo fail2ban-client set sddh banip 12.34.56.789