Protégez votre serveur des tentatives d’intrusion avec Fail2ban.


échec 2 interdiction Lisez le fichier journal et supprimez les adresses IP avec trop d’échecs d’authentification. Il peut mettre à jour les règles du pare-feu pour refuser l’adresse IP. Fail2ban peut lire plusieurs fichiers journaux, par ex. serveur sshd ou apache Entre autres.

Installez Fail2Ban.

On peut créer une jail via un service (ssh, http, …), on renseigne quelques informations (fichier log, filtre à appliquer, …), lorsque le filtre trouve une correspondance, on effectue une action (ban, mail , whois,…).

Ce tutoriel a été réalisé sur un serveur Ubuntu.

Pour installer le logiciel, utilisez simplement la commande suivante :

#sudo apt-get install fail2ban

Le répertoire Fail2ban contient les fichiers et répertoires suivants :

  • Action.d : Contient les actions à effectuer lors d’une tentative d’intrusion
  • filtre.d : Contient l’expression régulière utilisée pour analyser les journaux du service donné
  • jail.conf : Contient les paramètres de chaque service surveillé (bantime, maxretry, mail, etc.). Le fichier n’est plus modifié directement.Nous allons activer la prison dans ce fichier /etc/fail2ban/jail.d/defaults-debian.conf.
  • Échec de 2ban.conf : Le fichier de configuration globale se trouve à/etc/fail2ban/fail2ban.conf Ne contient pas grand chose à modifier. Vous pouvez définir où Fail2Ban doit enregistrer ses journaux, la verbosité de ces derniers et modifier certains paramètres de socket Unix. Quant à moi, je ne touche à rien.

Surveillez les connexions SSH.

Pour surveiller les connexions SSH, nous allons modifier ce fichier /etc/fail2ban/jail.d/defaults-debian.conf Activez la prison. Qu’il s’agisse de SSH, d’Apache ou d’un autre logiciel, toute l’activation des jails se fait dans ce fichier.

Puisque c’est la première fois que vous éditez le fichier, nous définirons des options communes à toutes les prisons.

  • aller à la poste Saisissez ici les adresses e-mail qui recevront les alertes
  • expéditeur Affiche le nom de la personne qui a envoyé l’e-mail
  • igonorep Permet d’autoriser des adresses spécifiques, qu’il est important de configurer pour éviter d’être banni par votre propre serveur. Vous pouvez ajouter d’autres adresses IP en mettant un espace entre elles.

Vous pourrez personnaliser ces paramètres dans chaque section jails du fichier. Par exemple, si vous souhaitez envoyer des alertes à une adresse email SSH spécifique, il vous suffit de l’indiquer dans la section SSH du fichier.

Maintenant pour activer les protections sur SSH, voici comment les déclarer.

Pensez à parcourir les filtres prédéfinis dans le catalogue filtre.d Afin de voir ce qu’il y a par défaut et activer ou désactiver la jail selon vos besoins.

je viens d’activer la prison sshd et sshd-ddos, Mail peut ajouter et personnaliser d’autres options pour la prison.C’est la valeur par défaut pour le fichier si vous ne mettez rien prison.conf Soyez applicable.

  • nombre maximal de tentatives Le nombre de tentatives pour autoriser une connexion avant d’être banni
  • Trouver le temps permet de préciser la période de temps sur laquelle on considère l’événement (en dehors de findtime, on commence à zéro)
  • ban taï Définissez combien de temps l’ip restera bloquée par Fail2Ban
  • Port Vous permet de spécifier les ports à bloquer
  • chemin du journal Indique le fichier journal à analyser

Maintenant que vous avez configuré votre première prison pour SSH, vous devez redémarrer le service.

A Voir  Guide du Blackjack : les bases et quelques stratégies faciles à appliquer

# Redémarrage du service fail2ban

Ensuite, nous nous assurons que toutes les prisons servent :

#fail2ban – Statut du client

Configurez le test.

Il est important de vérifier que tout est ok avant de sauvegarder la configuration.Idéal pour tester les fichiers Journal d’autorisation (au moins pour SSH) par exemple en faisant une entrée avec l’intrus.

Cette commande est utile si vous créez votre propre prison. Vous pouvez tester vos expressions régulières pour voir si elles trouvent l’élément que vous recherchez.

Pour cela, vous devez utiliser la commande suivante :

fail2ban-regex fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Commandes de base pour l’utilitaire fail2ban-client.

Voici une liste des commandes de base que vous utiliserez certainement avec Fail2ban. Si la plupart d’entre eux sont explicites, concentrons-nous sur :

  • Démarrer: Démarrez le serveur et la prison.
  • Recharger: Recharger la configuration.
  • Recharger<监狱>: Ne recharge que la configuration de la prison.
  • arrêt: Arrêtez le serveur.
  • statut: Renvoie l’état du serveur : jails, filtres, échecs…
  • appartement: Juste pour s’assurer que le serveur répond.
  • -H : Renvoie toutes les commandes possibles non répertoriées ici.

Fail2Ban possède une base de données SQLite interne. Cette base de données est utilisée pour stocker des informations entre les redémarrages, en particulier les règles ips à bloquer et iptables à recréer au démarrage.

  • Configurez le fichier de base de données : Définissez l’emplacement de la base de données.
  • Ensemble de purge : Définit la durée de conservation des informations dans la base de données.
  • Obtenez le fichier de base de données : Renvoie le chemin de la base de données.
  • Obtenez dbpurge : Récupère le nombre de secondes de conservation des informations dans la base de données de configuration actuelle.

Surveillez les interdictions IP en temps réel.

Grâce à la commande ci-dessous, vous allez pouvoir tracer l’IP de votre serveur qui scanne Internet (il faut dire que c’est assez impressionnant).

#tail -f /var/log/fail2ban.log

Créez des rapports quotidiens sur les adresses IP interdites.

échec 2 interdiction Permet d’envoyer des e-mails lorsque l’IP est bloquée. Dans quelques jours, lorsque votre boite mail sera saturée de 3000 emails, vous ne l’utiliserez plus, mais c’est très utile pour savoir ce qui se passe sur le serveur.

Dans ce tutoriel, nous allons mettre en place un rapport quotidien de toutes les IP qui tentent d’attaquer votre serveur. Un e-mail répertoriant toutes les attaques de la journée. c’est pas mal, hein !

La première étape consiste à créer un fichier mail daily.conf exister /etc/fail2ban/action.d/ Utilisez le code suivant :

# Profil Fail2Ban # # Auteur : Guillaume REYNAUD # Version : 1.0 (12/04/2019) # URL : https://quick-tutoriel.com # Source : https://kdecherf.com/ #
[Definition]actionsstart = echo -en « ***** Fail2Ban *****nnType de notification : RÉCUPÉRATIONnnService :<名称>nHôte :<服务器>nAdresse :<服务器IP>nÉtat : Démarrén nDate/Heure : `Date`nnInformations supplémentaires :nn » | mail -a « De :  » -s « ** Alerte de RÉCUPÉRATION – / la prison est DÉMARRÉE ** » actionstop=echo -en « ***** Fail2Ban **** *nnType de notification : ALERTEnnService :<名称>nHôte :nAdresse :nÉtat : ARRÊTÉnnDate/Heure : `date`nnInformations supplémentaires :n n » | mail -a « De :  » -s « ** ALERTE alerte – / la prison est ARRETE ** » actioncheck=actionban=echo `date | awk -F ‘ ‘ ‘{print $4}’` » – ( à droite tentative) » >> actionunban=
[Init]tmpfile=/temp/fail2ban-mail.txt # destination par défaut destination=root

Concrètement, à chaque arrêt et/ou redémarrage du service Fail2ban, vous recevrez un email (actionstart et actionstop).

Ensuite, lorsqu’une adresse IP est bannie au lieu de vous envoyer un e-mail à chaque fois, cette adresse IP sera enregistrée dans un fichier temporaire appelé fail2ban-mail.txt situé dans le répertoire /Température/ Quelques informations sur votre serveur (tmpfile) : IP, attaque de service et tentatives.

La deuxième étape consiste à activer l’e-mail dans la prison (= prison) que vous souhaitez.Il faut maintenant aller dans le répertoire /etc/fail2ban/jail.d, puis éditez le fichier Default-debian.conf.

attention! ! ! Avant d’apporter des modifications aux fichiers de production, je vous recommande de les sauvegarder. Par exemple, j’ai systématiquement renommé le fichier en nom-fichier.conf.date

# cp defaults-debian.conf defaults-debian.conf.20191204

  • 1: Pour que le script fonctionne correctement, vous devez définir 4 variables, qui sont fromt (le nom de l’expéditeur), servert (le nom du serveur attaqué), serveript (l’adresse IP publique du serveur) et emailt (le courrier de l’expéditeur adresse). destination).
  • 2 : Dans chaque prison vous devez ajouter une ligne d’action précisant l’action de votre choix, voici mail-daily, le fichier que nous avons créé précédemment. Actuellement, je n’active le courrier que pour SSH.

# action = courrier quotidien[name=SSH, dest=%(emailt)s, from=%(fromt)s, server=%(servert)s, serverip=%(serveript)s]

La troisième étape consiste à créer un script bash qui générera le rapport. Oui, les signalements ne sont pas faits par Fail2ban, mais par des scripts.

vous devez /etc/fail2ban/action.d/. Le scénario s’appelle Signalez le courrier à daily.sh.

#!/bin/sh SERVER= »Nom_du_serveur » IP= »IP_du_serveur » FROM= »Fail2ban  » TO= »Mail » TMP=/temp/fail2ban-mail.txt Si [ -f $TMP ]; then echo « ***** Fail2Ban *****nnType de notification : INFOnnService : *nHôte : $SERVERnAdresse : $IPnStatut : OKn nDate/heure du rapport a été envoyé : `date + »%d-%m-%Y %H:%M:%S »`nnInformations supplémentaires :nnCes hôtes sont déjà le `date –date ‘il y a 1 jours’ +  » banni %a %d %b »`n`cat $TMP` » | mail -a « De : $FROM » -s « ** INFO alert – $SERVER ($IP) jail REPORT ** » $TO rm $TMPfi

attention! ! !Vous devez rendre votre script bash exécutable pour Linux pour l’exécuter à l’aide de la commande chmod u+x puis entrez le nom de votre script

  • 1: Pour que le script fonctionne, vous devez définir 4 variables, qui sont FROM (nom de l’expéditeur), SERVER (nom du serveur affecté par l’attaque), IP (adresse IP publique du serveur) et TO (adresse e-mail de destination).
  • 2 : Indique le chemin vers le fichier .txt contenant les IP bloquées pour la journée.
  • 3 : Si aucun fichier n’existe, aucun e-mail n’est envoyé. Vous devez savoir que les fichiers .txt sont supprimés lors de l’envoi d’un e-mail.

La dernière étape consiste à créer une tâche planifiée pour envoyer le rapport une fois par jour.

Créez des tâches CRON pour envoyer des rapports quotidiens.

  • Si vous Vous voulez voir les emplois CRON En cours d’exécution sur votre système, vous pouvez utiliser la commande suivante :

# crontab -l

  • si tu veux Modifier ou ajouter des tâches CRON :

# crontab -e

Dans le fichier CRON, j’ai ajouté une ligne pour envoyer un rapport d’attaque quotidien sur mon serveur VPS à 6h du matin avec la tâche CROM suivante (1) :

# 0 6 * * * /etc/fail2ban/action.d/report-mail-daily.sh > /dev/null

Pour prendre en compte tous ces changements, vous devez redémarrer le service Fail2ban.

Il est six heures du matin…