Recherche de site Web

Comment protéger SSH avec Fail2Ban : Un guide pour débutants


Plongez dans notre guide du débutant sur la sécurisation de SSH avec Fail2Ban pour protéger votre serveur contre les accès non autorisés et les attaques par force brute.

Nous commencerons par une métaphore. Imaginez une forteresse ; bien que ses hautes murs et ses portes solides soient construits pour repousser les visiteurs non désirés, il y aura toujours ceux qui tenteront de gravir les murs ou de forcer les portes.

De même, notre forteresse numérique, en particulier les serveurs, fait face à des menaces persistantes. Une telle porte d'entrée est le Secure Shell (SSH), un protocole permettant un accès distant sécurisé. Ainsi, tout comme les portes nécessitent des gardes et des systèmes de surveillance, le SSH nécessite des mesures de protection contre les intrus potentiels.

Entrez Fail2Ban – un sentinelle vigilante pour vos serveurs. C'est l'un des boucliers les plus efficaces contre les tentatives d'accès non autorisées, en particulier les attaques par force brute.

Qu'est-ce que Fail2Ban ?

Fail2Ban est un outil logiciel open-source qui protège contre des activités malveillantes automatisées telles que les attaques par force brute sur les serveurs.

L'une des choses les plus précieuses de Fail2Ban est qu'il agit de manière proactive. En d'autres termes, au lieu d'attendre une attaque, Fail2Ban propose une approche en identifiant et en bloquant les menaces potentielles en temps réel.

La beauté de Fail2Ban réside dans sa simplicité et son adaptabilité. Bien qu'il soit fréquemment utilisé pour sécuriser SSH, sa fonctionnalité n'est pas limitée à ce protocole. Fail2Ban peut être configuré pour surveiller les fichiers journaux de n'importe quel service, offrant une solution polyvalente pour des services comme FTP, SMTP, serveurs web, et plus encore.

De plus, il est léger en ressources, donc il ne surcharge pas les performances de votre serveur - une considération critique pour les serveurs traitant un volume élevé de transactions ou d'interactions.

Comment fonctionne Fail2Ban

Tout d'abord, expliquons brièvement ce qu'est exactement le brute-forcing. Il s'agit d'un type de cyberattaque dans laquelle un attaquant tente d'accéder de manière non autorisée à un système ou à un service en essayant systématiquement toutes les combinaisons possibles de mots de passe ou de clés de cryptage jusqu'à ce que la bonne soit trouvée.

À cet égard, Fail2Ban surveille les journaux du serveur à la recherche de modèles spécifiques indiquant de telles attaques – par exemple, des tentatives de connexion échouées répétées dans un court laps de temps.

Sur la base de règles prédéfinies ou personnalisées, appelées « filtres », Fail2Ban identifie des modèles suggérant une attaque et déclenche automatiquement certaines actions prédéfinies. La plus courante consiste à interdire temporairement l'adresse IP de l'attaquant, à appliquer des règles de pare-feu et à empêcher d'autres tentatives malveillantes.

Comment fonctionne Fail2Ban

Une caractéristique clé de Fail2Ban est le concept de « prisons » – des politiques de surveillance spécifiques pour les services serveur qui combinent un filtre avec des actions. Vous pouvez avoir différentes prisons pour différents services (par exemple, une pour SSH, une autre pour FTP, etc.).

Chaque prison spécifie quel fichier journal surveiller, quels motifs rechercher et quelles actions entreprendre lorsque ces motifs sont détectés.

Après avoir été banni pendant une période déterminée, l'adresse IP est automatiquement débannie, permettant aux utilisateurs légitimes qui ont pu être temporairement bloqués en raison, par exemple, d'un mot de passe oublié, de réessayer.

Installer Fail2Ban

Installons maintenant Fail2Ban, ce qui est assez simple, comme vous pouvez le voir. Veuillez utiliser la commande appropriée pour la distribution Linux que vous utilisez.

Debian/Ubuntu

sudo apt install fail2ban

Aucune autre action n'est nécessaire ici puisque le service est automatiquement activé après l'installation.

RHEL/Rocky Linux/Alma Linux/Fedora

Puisque Fail2Ban se trouve dans le dépôt EPEL, vous devez d'abord l'ajouter à votre système si vous ne l'avez pas déjà fait :

sudo dnf install epel-release

Ensuite, installez Fail2Ban et activez le service pour qu'il démarre au démarrage :

sudo dnf install fail2ban
sudo systemctl enable fail2ban

openSUSE

sudo zypper in fail2ban

Configurer Fail2Ban pour SSH

Une fois installé, le fichier de configuration principal est “/etc/fail2ban/jail.conf.” Cependant, les meilleures pratiques ne recommandent pas de le modifier directement. Au lieu de cela, nous allons le copier en en créant un nouveau avec l'extension “.local.” Pourquoi ? C'est simple : cela évite les problèmes de fusion lors des mises à jour. Alors, faisons-le.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Lorsque le service Fail2Ban est redémarré, le fichier jail.conf est lu en premier, puis jail.local, les paramètres ultérieurs remplaçant les précédents.

Maintenant, passons à la partie amusante - configurer Fail2Ban. Ouvrez le fichier "jail.local" avec votre éditeur de texte terminal préféré.

sudo nano /etc/fail2ban/jail.local

Faites défiler vers le bas jusqu'à ce que vous trouviez la partie « [sshd] » qui ressemble à celle ci-dessous.

Modifiez le fichier ‘jail.local’.

Remplacez le contenu existant de la partie « [sshd] » par ceci :

[sshd]

enabled = true
port    = ssh
backend = systemd
maxretry = 3
findtime = 300
bantime = 3600
ignoreip = 127.0.0.1

La version finale devrait ressembler à celle montrée ci-dessous. Vous voulez savoir ce que signifient ces options ? N'ayez crainte - nous avons expliqué chacune d'elles en détail plus bas.

Configurer Fail2Ban
  • activé – Détermine si la prison est active ou non.
  • port – Spécifie le(s) port(s) que vous souhaitez surveiller. Accepte n'importe quel numéro de port ou nom de service, par exemple, “ssh,” “22,” “2200,” etc.
  • backend –  Spécifie le backend utilisé pour obtenir la modification des fichiers. Puisque tous les systèmes Linux modernes s'appuient sur le service de journalisation de systemd, nous le spécifions comme notre backend.
  • maxretry – Le nombre de tentatives échouées d'une adresse IP avant qu'elle ne soit bannie.
  • findtime – La période (en secondes) pendant laquelle les échecs de connexion « maxretry » entraîneront un bannissement. Nous avons spécifié 300 secondes, c'est-à-dire 5 minutes.
  • bantime – La durée (en secondes) pendant laquelle une adresse IP doit rester bannie. Dans notre cas, nous avons fixé 3600 secondes, ce qui signifie que dans l'heure qui suit, toutes les demandes ultérieures (pas seulement à partir du port SSH) provenant de cette adresse IP seront bloquées.
  • ignoreip – Vous permet d'ajouter des adresses IP à une liste blanche qui doivent être ignorées. Cela garantit que les adresses IP données, même si elles dépassent le nombre de tentatives infructueuses spécifié dans “maxretry,” ne seront pas bloquées.

C'est tout. Enregistrez le fichier et quittez, puis redémarrez le service Fail2Ban.

sudo systemctl restart fail2ban

Ensuite, assurez-vous que tout va bien avec le service.

sudo systemctl status fail2ban

Vérifiez si le service est en ligne et fonctionne.

Test et surveillance

Essayez de vous connecter via SSH plusieurs fois depuis un autre ordinateur au serveur sur lequel vous venez d'installer et de configurer Fail2Ban. Après la troisième tentative échouée, votre accès devrait être bloqué.

Vous vous demandez probablement déjà comment surveiller ce qui se passe à l'intérieur. La bonne nouvelle est que Fail2Ban dispose d'excellents outils intégrés à cet effet. Pour voir les adresses IP qui sont actuellement bloquées, exécutez la commande suivante :

sudo fail2ban-client status sshd

Vérifiez les adresses IP bloquées par Fail2Ban.

Si nous allons encore plus loin et examinons les règles iptables, nous découvrirons que Fail2Ban a créé une chaîne (« f2b-sshd ») dans laquelle il a inséré les adresses IP en question. Elles seront automatiquement supprimées de là après la période de timeout donnée dans l'option « bantime ».

sudo iptables -L -n

Lister les règles iptables.

Pour débannir manuellement toutes les adresses IP dans toutes les prisons, exécutez ce qui suit :

sudo fail2ban-client unban --all

Pour une adresse distincte uniquement, votre commande devrait être :

sudo fail2ban-client unban <ip-address>

Bien sûr, la commande fail2ban-client a de nombreuses autres options, vous offrant de grandes possibilités et flexibilité. Si vous êtes curieux de les voir en détail, regardez ici.

Important à Garder à l'Esprit

Bien que Fail2Ban soit un excellent logiciel, il n'est pas aussi bénéfique lorsque votre serveur SSH est configuré pour n'accepter que l'authentification par clé publique, car il est impossible de se connecter avec un mot de passe. En savoir plus à ce sujet ici.

De plus, rappelez-vous que cela ne remplace pas la sécurité qu'un VPN vous fournirait pour accéder à votre serveur. Ainsi, sauf si cela est absolument nécessaire, évitez d'exposer vos services à Internet.

Conclusion

Sécuriser votre serveur devrait toujours être une priorité absolue. Avec SSH étant un point d'entrée commun pour de nombreux attaquants, cela nécessite une attention particulière.

À travers ce guide, nous avons expliqué les étapes simples pour installer et configurer Fail2Ban afin de surveiller et protéger SSH contre les tentatives de connexion malveillantes répétées.

En configurant cet outil, vous ajoutez une couche de sécurité essentielle qui peut prévenir les intrusions potentielles. Donc, restez en sécurité, restez à jour et soyez toujours proactif dans la stratégie de défense de votre serveur.

Merci pour votre temps ! Enfin, nous vous recommandons de consulter la page GitHub de Fail2Ban pour obtenir de l'aide supplémentaire ou des informations précieuses.