Comment protéger votre serveur Linux avec fail2ban

Contenu

Une fenêtre de terminal stylisée s'exécutant sur un ordinateur portable Linux de style Ubuntu.

Avec fail2ban, votre ordinateur Linux bloque automatiquement les adresses IP qui ont trop d'échecs de connexion. C'est la sécurité autorégulée! Nous allons vous montrer comment l'utiliser.

Sécurité Sécurité Sécurité

Duchesse de Windsor, Wallis Simpson, dit une fois: “Vous ne pouvez jamais être trop riche ou trop mince”. Nous l'avons mis à jour pour notre monde moderne et interconnecté: vous ne pouvez jamais être trop prudent ou trop prudent.

Si votre ordinateur accepte les demandes de connexion entrantes, Quoi Couverture sûre (SSH) Connexions, il agit comme un serveur Web ou de messagerie, vous devez le protéger des attaques par force brute et des devinettes de mot de passe.

Pour le faire, vous devrez surveiller les demandes de connexion qui n'entrent pas dans un compte. S'ils ne parviennent pas à s'authentifier à plusieurs reprises dans un court laps de temps, il devrait leur être interdit de faire d'autres tentatives.

La seule façon pratique d'y parvenir est d'automatiser l'ensemble de la procédure. Avec une petite configuration simple, fail2ban gérera le surveiller, interdire et outrepasser l'interdiction pour toi.

fail2ban s'intègre avec Pare-feu Linux iptables. Appliquer des interdictions sur les adresses IP suspectes en ajoutant des règles au pare-feu. Pour garder cette explication bien rangée, nous utilisons iptables avec un jeu de règles vide.

Depuis lors, si vous êtes soucieux de la sécurité, vous avez probablement un pare-feu configuré avec un ensemble de règles bien rempli. fail2ban seul ajouter et supprimer vos propres règles—Vos fonctions de pare-feu habituelles resteront intactes.

Nous pouvons voir notre ensemble de règles vides à l’aide de cette commande:

sudo iptables -L

EN RELATION: Le guide du débutant iptables, Pare-feu Linux

Installation de fail2ban

installation fail2ban est simple dans toutes les distributions que nous utilisons pour rechercher cet article. Sous Ubuntu 20.04, la commande est la suivante:

sudo apt-get install fail2ban

Dans Fedora 32, scribe:

sudo dnf install fail2ban

à Manjaro 20.0.1, nous utilisons pacman:

sudo pacman -Sy fail2ban

Configuration de fail2ban

Les fail2ban l’installation contient un fichier de configuration par défaut nommé jail.conf. Ce fichier est écrasé lorsque fail2ban est mis à jour, nous perdrons donc les modifications si nous personnalisons ce fichier.

À sa place, nous copierons le fichier jail.conf dans un fichier appelé jail.local. En mettant nos changements de configuration dans jail.local, persister dans les mises à jour. Les deux fichiers sont automatiquement lus par fail2ban.

Voici comment le fichier est copié:

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

Ouvrez maintenant le fichier dans votre éditeur préféré. nous allons utiliser gedit:

sudo gedit /etc/fail2ban/jail.local

Nous allons chercher deux sections dans les archives: [FAIRE DÉFAUT] et [sshd]. Malgré cela, faites attention à trouver les sections réelles. Ces balises apparaissent également en haut dans une section qui les décrit., mais ce n'est pas ce que nous voulons.

/etc / fail2ban / jail.local ouvert dans une fenêtre gedit.

Vous trouverez le [FAIRE DÉFAUT] section quelque part autour de la ligne 40. C'est une longue section avec beaucoup de commentaires et d'explications.

/etc / fail2ban / jail.local ouvert dans une fenêtre gedit et fait défiler jusqu'à la ligne 89.

Faites défiler jusqu'à la ligne 90 et vous trouverez les quatre paramètres suivants que vous devez connaître:

  • ignorant: Une liste blanche d’adresses IP qui ne seront jamais interdites. Ils ont une carte permanente pour sortir de prison gratuitement. Les Adresse IP localhost (127.0.0.1) est répertorié par défaut, avec son IPv6 identique (::1). S’il y a d’autres adresses IP dont vous savez qu’elles ne devraient jamais être interdites, ajoutez-les à cette liste et laissez un espace entre chacun d’eux.
  • bantime: La durée pendant laquelle une adresse IP est interdite (la “m” signifie minutes). Si vous entrez une valeur sans valeur “m” O “h” (pendant des heures), sera traité comme des secondes. Une valeur de -1 bannir définitivement une adresse IP. Faites très attention à ne pas vous bloquer définitivement.
  • temps de recherche: La durée pendant laquelle trop de tentatives de connexion infructueuses entraîneront l'interdiction d'une adresse IP.
  • essai max: La valeur de “trop de tentatives échouées”.

Si une connexion est établie à partir de la même adresse IP maxretry tentatives de connexion infructueuses dans le findtime cours du temps, sont interdits pendant la durée de bantime. Les seules exceptions sont les adresses IP dans le ignoreip prêt.

fail2ban met les adresses IP en prison pour une période de temps spécifiée. fail2ban admet de nombreuses prisons différentes, et chacun d'eux représente que la configuration s'applique à un seul type de connexion. Cela vous permet d'avoir différents paramètres pour différents types de connexion. Ou vous pouvez avoir fail2ban surveiller uniquement un ensemble choisi de types de connexion.

Vous l'avez peut-être deviné d'après le [FAIRE DÉFAUT] Nom de la section, mais les paramètres que nous avons vus sont les paramètres par défaut. Maintenant, Voyons la configuration de la prison SSH.

EN RELATION: Comment éditer graphiquement des fichiers texte sous Linux avec gedit

Mettre en place une prison

Les prisons vous permettent de déplacer des types de connexion dans et hors de fail2ban's surveillance. Si les paramètres par défaut ne correspondent pas à ce que vous voulez que la prison applique, peut déterminer des valeurs spécifiques pour bantime, findtime, et maxretry.

Faites défiler jusqu'à la ligne 280 et vous verrez le [sshd] section.

/etc / fail2ban / jail.local ouvert dans une fenêtre gedit et fait défiler jusqu'à la ligne 280.

C'est ici que vous pouvez déterminer des valeurs pour la cage de connexion SSH. Inclure cette prison dans la surveillance et l'interdiction, nous devons écrire la ligne suivante:

activé = vrai

Nous écrivons aussi cette ligne:

essai max = 3

Le paramètre par défaut était cinq, mais nous voulons être plus prudents avec les connexions SSH. Nous le réduisons à trois, puis nous sauvegardons et fermons le fichier.

Nous ajoutons cette prison à fail2ban's surveiller et remplacer l'un des paramètres par défaut. Une prison peut utiliser une combinaison de paramètres spécifiques à la prison et par défaut.

Activation de fail2ban

Jusqu'à maintenant, nous avons installé fail2ban et je l'ai configuré. Maintenant, nous devons l'activer en tant que service de démarrage automatique. Après, nous devons le tester pour nous assurer qu'il fonctionne comme prévu.

Pour permettre fail2ban en tant que service, nous utilisons le systemctl commander:

sudo systemctl activer fail2ban

Nous l'utilisons également pour démarrer le service:

sudo systemctl démarrer fail2ban

Nous pouvons vérifier l'état du service en utilisant systemctl, en outre:

statut sudo systemctl fail2ban.service

Tout a l'air bien, nous avons le feu vert, donc tout va bien.

Voyons si fail2ban est d'accord:

statut sudo fail2ban-client

Cela reflète ce que nous configurons. Nous avons activé une seule prison, appel [sshd]. Si nous incluons le nom de la prison avec notre commande précédente, nous pouvons l'examiner de plus près:

sudo fail2ban-client statut sshd

Ceci répertorie le nombre de défauts et d'adresses IP interdites. Depuis lors, toutes les statistiques sont à zéro en ce moment.

Tester notre prison

Sur un autre ordinateur, nous allons faire une demande de connexion SSH à notre machine de test et mal orthographier le mot de passe volontairement. Obtient trois tentatives pour obtenir le mot de passe correct à chaque tentative de connexion.

Les maxretry La valeur sera activée après trois tentatives de connexion infructueuses, pas trois tentatives infructueuses de mot de passe. Pour cela, nous devons taper un mauvais mot de passe trois fois pour échouer la tentative de connexion.

Ensuite, nous ferons une autre tentative de connexion et saisirons le mot de passe incorrectement trois fois de plus. La première tentative de mauvais mot de passe de la troisième demande de connexion devrait être déclenchée fail2ban.

Après le premier mot de passe erroné lors de la troisième demande de connexion, nous n'obtenons pas de réponse de la machine distante. Nous n'avons aucune explication; nous n'avons qu'une épaule froide.

Vous devez appuyer sur Ctrl + C pour revenir à l'invite de commande. Si nous essayons encore une fois, nous aurons une réponse différente:

ssh [email protected]

Précédemment, le message d'erreur était “permission refusée”. Cette fois, la connexion est complètement rejetée. Nous sommes une personne ingrate. Ils nous ont interdit.

Voyons les détails de la [sshd] prison encore:

sudo fail2ban-client statut sshd

Il y a eu trois échecs et une adresse IP (192.168.4.25) il a été interdit.

Comme nous l'avons mentionné précédemment, fail2ban appliquer des interdictions en ajoutant des règles à l'ensemble de règles de pare-feu. Jetons un autre regard sur l'ensemble de règles (avant qu'il ne soit vide):

sudo iptables -L

Une règle a été ajoutée à la politique INPUT, qui envoie le trafic SSH vers f2b-sshd chaîne. La règle dans le f2b-sshd La chaîne rejette les connexions SSH de 192.168.4.25. Nous ne modifions pas les paramètres par défaut pour bantime, Pour ce que, au 10 minutes, cette adresse IP sera remplacée et vous pourrez faire de nouvelles demandes de connexion.

Si vous définissez une extension d'interdiction plus longue (comme plusieurs heures), mais vous voulez autoriser une adresse IP à faire une autre demande de connexion avant, peut le libérer plus tôt.

Nous écrivons ce qui suit pour ce faire:

sudo fail2ban-client définir sshd unbanip 192.168.5.25

Sur notre ordinateur distant, si nous faisons une autre demande de connexion SSH et écrivons le mot de passe correct, nous pourrons nous connecter:

ssh [email protected]

Simple et efficace

Le plus simple est généralement meilleur et fail2ban est une solution élégante à un obstacle compliqué. Nécessite très peu de configuration et impose peu de surcharge opérationnelle, ni pour vous ni pour votre ordinateur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.