GNU/Linux >> Tutoriels Linux >  >> Linux

Comment sécuriser SSH avec Fail2Ban

Protéger votre serveur des attaques par force brute est un must. La question est, comment exactement ? Heureusement pour vous, Fail2Ban est sur le point de protéger votre serveur, mais la configuration par défaut de Fail2Ban nécessite quelques ajustements pour une sécurité optimale. Ne vous inquiétez pas, ce didacticiel a tout ce qu'il vous faut.

Dans ce didacticiel, vous apprendrez à configurer Fail2Ban et à repousser les attaques par force brute en sécurisant votre serveur SSH.

Prêt? Lisez la suite pour optimiser la sécurité de votre serveur SSH !

Prérequis

Ce didacticiel comprend des instructions étape par étape. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants en place :

  • Un serveur Ubuntu et Debian :ce didacticiel utilise un serveur exécutant Ubuntu 18.04 LTS pour configurer Fail2Ban et un serveur Debian 10 pour tester les configurations d'interdiction Fail2Ban.
  • Accès root ou privilèges sudo sur le serveur pour exécuter des commandes en tant que superutilisateur.
  • Fail2Ban installé sur un serveur Ubuntu ou Debian.

Configuration d'un pare-feu de base

Fail2Ban protège votre serveur en surveillant les journaux et en interdisant les adresses IP qui font trop de tentatives de connexion dans un certain laps de temps. Mais d'abord, vous allez configurer un pare-feu de base dans lequel vous pourrez ajouter des règles pour bloquer les actes malveillants sur votre serveur.

1. Tout d'abord, exécutez le service commande ci-dessous pour arrêter Fail2Ban (fail2ban stop ) de courir. Arrêtez Fail2Ban lorsque vous apportez des modifications à vos fichiers de configuration afin de pouvoir tester les modifications et vous assurer qu'elles fonctionnent comme prévu.

sudo service fail2ban stop

2. Exécutez le apt install commande pour installer Sendmail et IPTables-persistent . Sendmail est un programme que Fail2Ban utilise pour vous avertir lorsqu'il interdit une adresse IP. Alors qu'IPTables-persistent est un programme qui enregistre vos paramètres de configuration modifiés dans /etc/sysconfig/iptables dossier.

L'installation de ces programmes permet de conserver les paramètres de votre pare-feu intacts même si quelque chose d'inattendu se produit, comme une panne de courant.

sudo apt install sendmail iptables-persistent -y

Exécutez maintenant chaque iptables commande ci-dessous pour configurer votre pare-feu. Ces commandes ne généreront aucune sortie mais ajouteront quatre règles à votre pare-feu. Ces règles autorisent ou bloquent les connexions à votre serveur.

## First Rule - Accepts all traffic generated by the server (lo interface) 
sudo iptables -A INPUT -i lo -j ACCEPT
## Second Rule - Accepts all traffic that are part 
## of an established o related connection
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
## Third Rule - Allows SSH traffic on port 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
## Fourth Rule - Arops all other traffic
sudo iptables -A INPUT -j DROP

4. Exécutez le iptables commande ci-dessous pour afficher un résumé de ce que vous avez configuré dans votre pare-feu.

sudo iptables -S

Ci-dessous, en surbrillance, les règles que vous avez ajoutées sur votre pare-feu.

5. Ensuite, exécutez les commandes suivantes pour enregistrer vos règles dans /etc/sysconfig/iptables-config fichier et démarrez le service Fail2Ban. Le iptables-config Le fichier contient toutes vos règles de pare-feu permanentes.

Fail2Ban ajoutera automatiquement quelques règles à votre pare-feu pour protéger votre serveur.

sudo dpkg-reconfigure iptables-persistent
sudo service fail2ban start

6. Enfin, relancez le iptables commande ci-dessous pour afficher vos règles de pare-feu.

sudo iptables -S

Ci-dessous, surligné en rouge, les nouvelles règles que Fail2Ban a ajoutées à votre pare-feu.

Ajustement de votre configuration Fail2Ban locale

Maintenant que vous avez un pare-feu de base en cours d'exécution, il est temps d'ajuster votre fichier de configuration Fail2Ban local pour ajouter plus de contrôle sur la sécurisation de votre serveur. Ce tutoriel utilise le /etc/fail2ban/jail.conf fichier de configuration car il contient toutes les options nécessaires pour configurer les paramètres globaux de l'application Fail2Ban.

Vous souhaitez peut-être créer des règles personnalisées pour votre serveur SSH. Si c'est le cas, vous allez créer un nouveau jail.local fichier (basé sur jail.conf file) et placez les règles spécifiques à SSH dans le fichier jail.local dossier. Cela vous permet de remplacer les paramètres dans jail.conf fichier pour votre serveur.

1. Exécutez le awk commande ci-dessous pour effectuer les opérations suivantes :

  • Imprimer le contenu ('{ printf "# "; print; }' ) du /etc/fail2ban/jail.conf fichier.
  • Créez un fichier nommé jail.local (basé sur jail.conf file), qui peut utiliser pour remplacer les paramètres par défaut dans le jail.conf fichier.
  • Diffuser le contenu du /etc/fail2ban/jail.conf fichier au tee commande. Cela écrira le jail.conf le contenu du fichier sur votre système de fichiers local (/etc/fail2ban/jail.local ).
awk '{ printf "# "; print; }' /etc/fail2ban/jail.conf | sudo tee /etc/fail2ban/jail.local

2. Une fois que vous avez créé le jail.local fichier, exécutez le ls commande ci-dessous. La commande liste le contenu du répertoire Fail2Ban de votre serveur (/etc/fail2ban ) pour vérifier que votre jail.local le fichier est correctement généré.

ls /etc/fail2ban

Si vous voyez le nouveau jail.local fichier, comme indiqué ci-dessous, votre fichier local a été généré correctement.

3. Ouvrez le fichier /etc/fail2ban/jail.local fichier dans votre éditeur de texte préféré et accédez au [ssh] section.

Décommentez le [sshd] et activé options en supprimant le # symbole devant les options, comme indiqué ci-dessous pour activer SSH.

À partir de ce point jusqu'au reste du didacticiel, supprimez le # devant les sections ou les options pour les activer.

4. Faites défiler vers le bas et décommentez le [DEFAULT] section illustrée ci-dessous. Cette section est l'endroit où vous configurez les paramètres par défaut pour Fail2Ban. Tous les paramètres de cette section seront appliqués à toutes les prisons gérées par Fail2Ban.

5. Ensuite, faites défiler jusqu'au bantime section, et définissez un bantime pour 60 minutes. Le bantime L'option définit la durée, en minutes, pendant laquelle une adresse IP est interdite après une tentative de connexion infructueuse.

Le paramètre de bantime par défaut est de 600 secondes (10 minutes). Vous pouvez ajuster ce paramètre à votre guise, mais il est important de noter que plus le paramètre de bantime est bas, plus votre serveur subira de charge.

6. Accédez à findtime et maxretry options. Gardez le temps de recherche tel quel (10m ) et diminuez le maxretry à 3 .

Le temps de recherche L'option définit la durée, en minutes, pendant laquelle une adresse IP peut échouer à se connecter avant d'être bannie. Alors que le maxretry L'option définit le nombre de tentatives de connexion infructueuses avant qu'une adresse IP ne soit interdite.

L'heure de recherche par défaut le paramètre est de 10 minutes et maxretry est de 5 minutes. En conséquence, une adresse IP qui ne parvient pas à se connecter 5 fois en 10 minutes sera bannie.

7. Faites défiler vers le bas, décommentez et configurez le destemail , expéditeur , et mta option :

  • dégagement – Entrez une adresse e-mail où Fail2Ban envoie des notifications.
  • expéditeur – Définissez le champ "De" dans l'e-mail que Fail2Ban envoie à destemail .
  • mta – Conservez la valeur par défaut (sendmail ) comme si. Le mta L'option définit l'agent de livraison de courrier électronique que Fail2Ban utilise pour envoyer des notifications.

8. Accédez à l'action options, comme indiqué ci-dessous, et décommentez le action_mwl option. Cela permet à Fail2Ban de vous envoyer des e-mails de suivi des journaux. Vous pouvez consulter les e-mails de logwatch pour enquêter plus avant sur tout problème de sécurité potentiel sur votre serveur.

Enregistrez les modifications et quittez l'éditeur de texte.

9. Exécutez maintenant les commandes ci-dessous pour redémarrer votre fail2ban service.

sudo service fail2ban stop
sudo service fail2ban start

10. Enfin, exécutez la commande ci-dessous pour vérifier votre fail2ban service status . sudo service fail2ban status Si le service Fail2Ban fonctionne, vous obtiendrez une sortie comme celle ci-dessous.

sudo service fail2ban status

Si le service Fail2Ban fonctionne, vous obtiendrez une sortie comme celle ci-dessous.

Tester vos configurations d'interdiction

Vous venez de configurer Fail2Ban, il est donc temps de tester si les configurations d'interdiction fonctionnent réellement. Essayez plusieurs connexions SSH échouées à votre serveur Fail2Ban à partir d'un serveur secondaire et voyez si ce serveur secondaire est banni.

1. Connectez-vous à votre serveur secondaire (Debian) et exécutez la commande ci-dessous pour vous connecter en SSH à votre serveur Fail2Ban.

Cette démo utilise un serveur Debian 10 avec une IP de 134.122.20.103 à ssh au fail2ban serveur qui a une IP de 69.28.83.134 .

ssh [email protected]

2. Entrez un mot de passe aléatoire lorsque vous y êtes invité et appuyez sur Entrée.

Au premier essai, le serveur Fail2Ban arrêtera la tentative de connexion SSH et affichera la Permission refusée message, comme illustré ci-dessous. Répétez la tentative de connexion SSH environ deux à trois fois plus, et le serveur Fail2Ban finira par cesser de répondre à votre tentative de connexion SSH.

À ce stade, vous n'obtiendrez pas une autorisation refusée message plus mais un écran vide. Obtenir un écran vide indique que votre deuxième serveur (Debian) a été banni du serveur Fail2Ban.

Mais peut-être avez-vous déjà une liste d'adresses IP à bloquer sur votre serveur Fail2Ban. Si c'est le cas, ouvrez le fichier jail.local fichier et accédez au [DEFAULT] section. Décommentez le ignoreip option et définissez les adresses IP à bloquer, comme indiqué ci-dessous.

L'adresse peut être soit plusieurs entrées IPv4 ou IPv6 distinctes, soit être séparées par des virgules.

3. Sur votre serveur Fail2Ban (Ubuntu), relancez le iptables commande ci-dessous pour afficher vos règles de pare-feu.

sudo iptables -S

Notez ci-dessous qu'il existe une nouvelle règle qui rejette les tentatives de connexion SSH depuis le 134.122.20.103 Adresse IP.

Vous recevrez également un e-mail de Fail2Ban, en cas d'interdiction réussie, avec un fichier journal en pièce jointe si vous avez configuré sendmail sur votre serveur Fail2Ban. La notification par e-mail indique que Fail2Ban a réussi à arrêter une attaque par force brute et à sauver votre serveur de dommages potentiels.

Conclusion

Tout au long de ce didacticiel, vous avez appris à configurer Fail2Ban sur un serveur Ubuntu. À ce stade, vous devriez être bien équipé avec les connaissances nécessaires pour protéger votre serveur SSH contre les attaques par force brute.

Maintenant, pourquoi ne pas approfondir ces nouvelles connaissances ? Peut-être commencer par bloquer les IP sur tous les ports avec Fail2Ban sur un hôte docker ?


Linux
  1. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  2. Sécurisez votre serveur Linux avec Fail2Ban [Guide du débutant]

  3. Comment installer le serveur SSH sur Ubuntu / Debian avec OpenSSH

  4. Comment protéger Apache et SSH avec Fail2Ban sur CentOS 8

  5. Comment sécuriser le serveur PostgreSQL

Comment gérer à distance un serveur Linux avec SSH

Comment gérer à distance le serveur Ubuntu avec SSH

Comment configurer un serveur FTP sécurisé sur Debian 10 avec Pure-FTPd

Comment configurer un serveur FTP sécurisé avec Pure-FTPd sur Ubuntu

Comment SSH au serveur via Linux

Comment verrouiller votre serveur CentOS avec IPTables