You are currently viewing Nouveau serveur: mettez en place Fail2ban pour plus de sécurité

Nouveau serveur: mettez en place Fail2ban pour plus de sécurité

L’avancement exponentiel de l’informatique a entraîné de nouveaux besoins pour les entreprises. L’un de ces besoins est la gestion des informations grâce à un système informatique capable de stocker des informations en un seul endroit.  Pour y faire face, la plupart des entreprises se tournent vers l’utilisation des serveurs en interne ou en ligne ((serveurs cloud).

Avoir un serveur apporte d’énormes avantages.  Cependant, cela implique certaines responsabilités comme être à même d’assurer sa gestion, sa sécurité, etc. Cet article abordera les points suivants: 

  • C’est quoi un serveur ?
  • Pourquoi sécuriser son serveur ?
  • Comment utiliser Fail2ban pour sécuriser l’accès à son serveur ?

C’est quoi un serveur ?

Un serveur informatique  est un dispositif informatique (pouvant être matériel ou logiciel) qui offre des services à un ou plusieurs clients. Parmi ces services, il y a l’accès aux informations, le courrier électronique, le stockage et la consultation de base de données, la gestion de l’authentification et du contrôle d’accès, etc.

Image d'une salle serveur

Maintenant que la définition d’un serveur est connue, nous allons passer au second point ou répondre à la question: « Quelles sont les raisons pour lesquelles la sécurité d’un serveur est primordiale?« 

Pourquoi sécuriser un serveur ?

Il existe d’innombrables raisons pour lesquelles vous ne devez surtout pas négliger la sécurité de votre serveur :

  1. D’abord votre serveur est le pilier de votre système informatique, il constitue donc une cible à laquelle les pirates s’intéressent particulièrement (Un exemple: en Février 2023 des milliers de serveurs de VMWare ESXI ont été attaqués d’après le journal de la cybernews AXido)
  2. Même si votre serveur est sur Linux (qui dispose de diverses fonctionnalités de sécurité pour le rendre plus sûr), il n’est pas impénétrable ;
  3. Un serveur mal configuré est comparable à une ouverture que vous laissez vous-mêmes pour des cyberattaques ;
  4. Lorsqu’un hackeur arrive à prendre le contrôle de votre serveur, toute votre entreprise peut se retrouve paralyser (il aura accès à des données sensibles, pourra bloquer ou rendre indisponible vos services et applications, la confidentialité des données de vos utilisateurs sera comprise, etc).

Vous avez maintenant une idée sur les raisons pour lesquelles il faut absolument sécuriser votre serveur. Connaitre ses raisons fait ressortir une autre inquiétude : quels outils  utiliser pour atteindre cet objectif ? Pas de souci, ce tutoriel vous donnera une réponse.

De manière générale, quels outils pour sécuriser un serveur ?

Il y a une panoplie d’outils que vous pouvez utiliser pour assurer la sécurité de votre serveur. Cependant, chaque outil joue un rôle spécifique. Parlons de certains d’entre eux: 

  • Iptables :  il joue le rôle de firewall, c’est-à-dire qu’il vous permet de bloquer tous les ports non utilisés sur votre serveur 
  • SSH : vous permet non seulement de configurer la méthode de connexion à votre serveur (par mot de passe, par clé SSH, …) mais aussi de définir quels utilisateurs peuvent y avoir accès
  • Wireshark: outil de surveillance réseau et un analyseur de paquets Linux 
  • Fail2ban dont nous allons parler dans ce tutoriel
Quelques outils pour sécuriser un serveur Linux

Parlons de Fail2ban

Définition 

Fail2ban est un logiciel (disponible sur Windows, Linux, Mac, ….) qui se charge d’analyser les logs de divers services installés sur votre serveur, pour bannir automatiquement un hôte pour une durée déterminée, en cas d’échec après X tentatives de connexion. Si nous recadrons cette définition dans le contexte de ce tutoriel, nous dirons que Fail2ban est un outil qui analyse le service SSH et bannit automatiquement un utilisateur lorsqu’il fausse n fois (n étant le nombre de tentatives que vous avez défini) son mot de passe.

Y a-t-il encore des zones d’ombre sur la définition ? Passons à la pratique pour mieux comprendre.

La pratique sera subdividivée en quatre étapes: 

  1. Installation de Fail2ban
  2. Configuration de Fail2ban
  3. Test de bannissement avec Fail2ban
  4. Libérer une adresse IP bannie par Fail2ban

Passons à la première partie

1. Pratique: installation de Fail2ban

Pour installer Fail2Ban, connectez-vous à votre serveur à l’aide d’un client SSH comme un terminal ou PuTTY.

a) Installation sur Ubuntu et Debian

Avant d’installer Fail2ban sur Debian ou Ubuntu, je vous recommande de mettre à jour vos packages avec la commande suivante :

$ sudo apt update

Après avoir mis à jour les packages, installer Fail2Ban en exécutant dans le terminal, cette commande :

$ sudo apt install -y fail2ban

b) Installation sur Centos

Au cas où votre serveur est sur Centos, exécuter les commandes suivantes pour installer Fail2ban: 

$ sudo yum update
$ sudo yum install fail2ban

Une fois Fail2ban installé sur votre serveur, il faut maintenant l’activer et le démarrer.
Par activer, je veux dire autoriser le lancement automatique du service Fail2ban au démarrage de votre serveur. Exécutez les commandes suivantes: 

$ sudo systemctl enable fail2ban
$ sudo systemctl start fail2ban

Si vous avez bien suivi les étapes, vous devez avoir Fail2ban installé sur votre serveur.  Comment vérifier cela ? Il vous suffit de taper la commande permettant de voir le statut du service Fail2ban. Il s’agit de la commande suivante:  

$ sudo systemctl status fail2ban

Si tout s’est bien passé, vous devez avoir une sortie semblable à celle sur l’image ci-dessous :

Statut du service Fail2ban

L’installation de Fail2ban est terminée. Nous passons à la prochaine étape: sa configuration. 

2. Pratique: configuration de Fail2ban

Le fichier de configuration principal de Fail2ban est /etc/fail2ban/jail.conf. Dans ce fichier, vous avez les paramètres par défaut des différents services que Fail2ban supporte.

Editer ce fichier avec votre éditeur de texte (vim, nano) pour voir son contenu. Si vous utilisez comme moi nano,  exécuter la commande suivante  :

$ sudo nano /etc/fail2ban/jail.conf

Parlons du contenu du fichier jail.conf

Le fichier est organisé en différentes sections. Dans la section DEFAULT, vous avez les paramètres par défaut que Fail2ban  appliquera à tous les services qu’il supporte. Parmi ces paramètres, ceux qui nous intéressent dans ce tutoriel sont les suivants :

  • bantime : c’est le temps durant lequel un hôte (machine ayant une adresse IP) sera banni. Exemple : 10m (m pour minute) signifie que l’hôte sera banni pendant 10 minutes ;
  • maxretry: Nombre de tentatives maximal que l’hôte est autorisé à faire avant d’être banni. Ex : maxretry : 4 signifie que pour une connexion SSH, si l’utilisateur fausse le password 4 fois, son hôte sera banni pendant le bantime que vous avez défini ;
  • findtime : un hôte est banni s’il a généré le maxretry défini pendant le findtime. En français facile, si maxretry=4 et findtime= 10m (10 minutes), alors l’hôte sera banni si et seulement si ce dernier fausse son mot de passe (cas de SSH) 4 fois en 10 minutes. En effet, Fail2ban initie une boucle, quand l’utilisateur fausse le password pour la première fois, il commence par incrémenter le temps, si en 10 minutes, l’utilisateur épuise son maxretry (4 dans notre exemple), il sera banni, dans le cas contraire, Fail2ban va recommence le décomptage.  Vu la définition du findtime, vous allez peut-être vous poser la question suivante comment définir un findtime qui va marcher à tous les coups? La réponse est très simple, définir un grand findtime (par exemple un jour, une semaine, un mois, un an, …) ;
  • port: le port du service en question (dans notre cas, ce sera le port su service SSH, 22 par défaut) ;
  • ignoreip:  adresse IP ou plage d’adresses IP que Fail2ban va ignorer. Si vous voulez définir une adresse IP une ou liste d’adresses IP que Fail2ban ne va pas bannir, alors utiliser ce paramètre. Ex : 192.168.65.76.

Nous avons présenté les paramètres que nous allons utiliser dans la suite du tutoriel.

Définissez vos paramètres pour le service SSH

Lorsque vous voulez définir vos propres paramètres pour un service (SSH dans notre cas), il faut suivre ces étapes :

  • Créer un nouveau fichier /etc/fail2ban/jail.local. Pour faire cela, éxécuter la commande suivante dans le terminal: 
$ sudo nano /etc/fail2ban/jail.local
  • Ajouter au fichier /etc/fail2ban/jail.local la section de votre service entre quote (ex: [sshd]) et définir vos valeurs pour chaque paramètre.

Voici les paramètres que nous allons définir pour notre service SSH (vous pouvez changer les valeurs et utiliser ce que vous voulez) :  

[sshd]
port = 222
bantime= 4d
findtime= 4d
maxretry=4
ignoreip=127.0.0.1

Dans mon cas :

  • Le port SSH du serveur est 222
  • Le temps de bannissement est défini sur 4 jours (4d, d pour days ) et le findtime aussi ;
  • Ignoreip c’est 127.0.0.1 (remplacer cela par l’adresse IP publique de la machine que vous utilisez souvent pour vous connecte à votre serveur) 
  • Enrégitster le fichier /etc/fail2ban/jail.local (control + o si vous utilisez comme moi nano) ;
  • Rédémarrer Fail2ban avec la commande systemctl restart fail2ban

Fail2ban a été configuré, il faut maintenant passer au moment de vérité: le test de bannissement avec Fail2ban. 

3. Pratique: Test de bannissement avec Fail2ban

Vous avez défini vos paramètres pour le service SSH, mainteant une question à vous « Comment tester si Fail2ban fonctionne effectivement sur votre serveur ? », réponse: Il suffit de faire une tentative de connexion SSH à votre serveur et faire exprès de fausser le mot de passe de l’utilisateur n fois (n étant la valeur que vous avez défini pour votre maxretry).

Mon test: Je vais essayer une connexion SSH sur mon serveur et fausser 4 fois le mot de passe de l’utilisateur  (Le maxretry que j’ai défini c’est 4). 

Temps de pause: Faites le test avant de continuer le tutoriel. 

C’est fait ? Cela  a marché ? 

Et bien cela a marché de mon coté, vous pouvez voir cela sur la figure ci-dessous:

Test de bannissement avec Fail2ban

Comme le montre la figure, lorsque vous atteignez le maxretry défini (4 dans mon cas), vous serez banni par Fail2ban, vous aurez un message d’erreur disant ceci Connection closed by IP_de_votre serveur port votre_port_ssh

Le test de bannissement avec Fail2ban a été fait avec succès (j’espère que chez vous aussi cela a marché). Maintenant, nous allons voir comment libérer une adresse IP qui a été bannie par Fail2ban. 

4. Pratique: Libérer une adresse IP bloquée par Fail2ban

Il peut arriver que vous ayez besoin de dire non, Fail2ban cette adresse IP que tu as banni, c’est bon maintenant, libère-la (l’adresse IP bannie). Je parle dans le cas où par exemple votre machine que vous utilisez souvent pour se connectez à votre serveur distant est banni, vous pouvez utiliser une autre machine (ayant une autre adresse IP publique bien sûr) pour retirer le bannissement de Fail2ban.

Pour libérer une adresse IP bannie par Fail2ban :

  • Connectez-vous en SSH au serveur avec la nouvelle machine (prenez le soin de ne plus fausser le mot de passe cette fois-ci, sinon, Fail2ban lui n’aura pas pitié de la machine, il va la bannir).
  • Demander à Fail2ban la liste des adresses IP bannis pour le service SSH en tapant la commande suivante :
$ sudo fail2ban-client status sshd

Vous aurez une sortie semblable à celle sur la figure ci-dessous:

Affichage de la liste des adresses IP bannies par Fail2ban

Pour libérer l’adresse que Fail2ban a banni (dans mon cas 192.168.56.72), taper la commande suivante (veuillez remplacer 192.168.56.72 par votre adresse IP) :

$ sudo fail2ban-client set sshd unbanip 192.168.56.72

Si tout s’est bien passé, en retapant la commande qui permet de lister les adresses IP bannies par Fail2ban, votre IP ne devrait plus se trouver dans la liste (figure ci-dessous).

Que retenir de ce tutoriel ?

A travers ce tutoriel, vous avez pris connaissance des raisons pour lesquelles vous ne devez pas négliger la sécurité de votre serveur puisque ce dernier est le pilier de votre système informatique. Un outil permettant de sécuriser l’accès SSH à votre serveur vous a aussi été présenté : il s’agit de Fail2ban, outil avec lequel vous pouvez lutter contre les attaques de brute force en bannissant automatiquement, dans un délai que vous pouvez vous-mêmes définir, un hôte qui essaie d’accéder de manière frauduleuse à votre serveur par SSH.

Sachez que comme cela a été dit plus haut dans ce tutoriel, à part Fail2ban, il y a d’autres outils, avec des fonctionnalités spécifiques que vous pouvez utiliser si vous voulez aller plus loin.

SEGNIGA Edoh K.

Je suis administrateur système et réseau de formation avec trois ans d'expériences. J'aide les entreprises dans la mise en place des solutions informatiques leur permettant d'automatiser la plupart des services. Je travaille en collaboration avec les développeurs pour la mise en production des projets que ce soit sur un serveur VPS, un serveur dédié ou un serveur cloud. Je suis aussi passionné par le développement d'applications web (autodidacte avec 2 ans d'expérience)