Comment sécuriser un serveur SSH

Comment sécuriser un serveur SSH

La sécurisation des connexions SSH vous aide à protéger votre système Linux et vos données. Les administrateurs système et les utilisateurs à domicile doivent également sécuriser les ordinateurs connectés à Internet. Voici 10 façons simples de vous aider à sécuriser votre serveur SSH .

Quelques notions de base sur la sécurité SSH

SSH signifie Secure Shell. Le protocole ou outil logiciel SSH permet aux administrateurs système et aux utilisateurs d'établir des connexions sécurisées avec des ordinateurs distants à l'aide de ce protocole.

Le protocole SSH est un protocole crypté conçu pour fournir une connexion sécurisée sur un réseau non sécurisé tel qu'Internet. SSH sous Linux est construit sur la version portable du projet OpenSSH. Il est implémenté dans un modèle client-serveur classique avec un serveur SSH acceptant les connexions des clients SSH. Le client est utilisé pour se connecter au serveur et exposer la session aux utilisateurs distants. Le serveur accepte la connexion et lance la session.

Dans sa configuration par défaut, le serveur SSH « écoutera » les connexions entrantes sur le port 22 du protocole de contrôle de transmission (TCP). Puisqu'il s'agit d'un port standardisé et populaire, il constitue une cible pour les menaces et les robots malveillants.

Les acteurs malveillants lancent des robots qui analysent des plages d' adresses IP à la recherche de ports ouverts. Il sonde ensuite ces ports à la recherche de vulnérabilités exploitables. Penser que je suis en sécurité, qu'il existe de nombreuses cibles plus grandes et meilleures que moi que les méchants peuvent cibler est complètement faux. Ces robots ne choisissent leurs cibles sur la base d’aucun critère, ils cherchent simplement un moyen de pénétrer dans le système.

Vous serez une victime si vous ne sécurisez pas votre système.

Friction de sécurité

Un point de friction de sécurité est toute situation dans laquelle la tâche principale est empêchée ou retardée en raison d’exigences de sécurité.

Les frictions en matière de sécurité provoquent un inconfort (à tous les niveaux) pour les utilisateurs et les autres lorsque vous mettez en œuvre des mesures de sécurité. Les nouveaux utilisateurs de systèmes informatiques peuvent se demander s'ils devront réellement saisir un mot de passe à chaque fois qu'ils se connecteront à l'ordinateur central. Pour eux, il s’agit également d’une forme de friction sécuritaire.

L’introduction de mesures de sécurité entraînera souvent une certaine forme de friction pour certaines personnes. Les propriétaires d'entreprises doivent payer pour ces mesures. Les utilisateurs d'ordinateurs devront peut-être changer leurs habitudes ou mémoriser différentes informations d'authentification, ajoutant ainsi des étapes pour se connecter avec succès. Les administrateurs système auront un travail supplémentaire à faire pour mettre en œuvre et maintenir les nouvelles mesures de sécurité.

Le renforcement et le verrouillage d'un système d'exploitation Linux ou de type Unix peuvent être rapides. Les mesures de sécurité présentées ici sont un ensemble d'étapes faciles à suivre qui amélioreront la sécurité informatique sans avoir recours à des applications tierces ni à une intervention approfondie du pare-feu .

Utiliser le protocole SSH version 2

En 2006, le protocole SSH a été mis à jour de la version 1 à la version 2. Il s'agit d'une mise à niveau significative. Il existe de nombreux changements et améliorations, notamment en matière de chiffrement et de sécurité, et la version 2 n'est pas rétrocompatible avec la version 1. Pour empêcher les connexions des clients de la version 1, vous pouvez spécifier que les ordinateurs n'acceptent que les connexions de la version 2.

Pour ce faire, éditez le fichier /etc/ssh/sshd_config à l'aide de la commande suivante :

sudo gedit /etc/ssh/sshd_config

Comment sécuriser un serveur SSH

Ajoutez la ligne suivante :

Protocol 2

Comment sécuriser un serveur SSH

Et enregistrez le fichier, puis redémarrez le processus démon SSH à l'aide de la commande suivante :

sudo systemctl restart sshd

Comment sécuriser un serveur SSH

Testez la nouvelle configuration en action en passant à une autre machine et en essayant de vous connecter en SSH à la machine de test. Nous utiliserons l'option -1 (protocole 1) pour forcer la commande ssh à utiliser la version 1 du protocole.

ssh -1 [email protected]

Comment sécuriser un serveur SSH

Demande de connexion refusée. Assurez-vous que vous pouvez toujours vous connecter au protocole 2. Nous utiliserons -2 (protocole 2) pour tester.

ssh -2 [email protected]

Comment sécuriser un serveur SSH

Le fait que le serveur SSH demande un mot de passe est un signe positif que la connexion a été établie et que vous interagissez avec le serveur. Les clients SSH modernes utiliseront par défaut le protocole 2, nous n'avons pas besoin de spécifier le protocole 2 à condition que le client soit à jour.

ssh [email protected]

Comment sécuriser un serveur SSH

La connexion a été acceptée.

Évitez la porte 22

Le port 22 est le port standard pour les connexions SSH. Si un port différent est utilisé, cela ajoute un peu de sécurité par obscurité (STO) à votre système. La sécurité par l’ambiguïté ne doit jamais être considérée comme une véritable mesure de sécurité. En fait, certains robots d'attaque plus intelligents sondent tous les ports ouverts et décident quel service ils effectuent, plutôt que de s'appuyer sur une simple liste de recherche de ports et de supposer qu'ils fournissent un service normalement. Mais l’utilisation d’un port non standard peut contribuer à réduire le mauvais trafic sur le port 22.

Pour configurer un port non standard, modifiez le fichier de configuration SSH comme ci-dessus.

Comment sécuriser un serveur SSH

Supprimez le # au début de la ligne Port et remplacez 22 par le numéro de votre choix. Enregistrez le fichier de configuration et redémarrez le démon SSH.

Sur un autre ordinateur, nous utiliserons la commande ssh pour nous connecter au serveur. La commande ssh par défaut utilise le port 22 :

ssh [email protected]

Comment sécuriser un serveur SSH

Connexion rejetée. Réessayez et spécifiez le port 470 à l'aide de l' option –p (port) :

ssh -p 479 [email protected]

Comment sécuriser un serveur SSH

Connexion confirmée.

Connectez le filtre à l'aide de TCP Wrappers

Les TCP Wrappers sont une liste de contrôle d'accès facile à comprendre. Il vous permet de refuser et d'autoriser les connexions en fonction des caractéristiques de la demande de connexion telles que l'adresse IP ou le nom d'hôte. Les TCP Wrappers doivent être utilisés avec, et non à la place, un pare-feu correctement configuré.

TCP Wrappers est préinstallé sur les machines Ubuntu 18.04 LTS . Il doit être installé sur Manjaro 18.10 et Fedora 30.

Pour installer sur Fedora, utilisez la commande suivante :

sudo yum install tcp_wrappers

Comment sécuriser un serveur SSH

Pour installer sur Manjaro, utilisez cette commande :

sudo pacman -Syu tcp-wrappers

Comment sécuriser un serveur SSH

Deux fichiers sont inclus, un fichier contient la liste autorisée et un fichier contient la liste refusée. Modifiez la liste de refus à l'aide de la commande suivante :

sudo gedit /etc/hosts.deny

Comment sécuriser un serveur SSH

La commande ci-dessus ouvrira l'éditeur gedit avec le fichier refusant de s'y charger.

Comment sécuriser un serveur SSH

Il faut ajouter la ligne :

ALL : ALL

Et enregistrez le fichier. Cette ligne bloquera tout accès non autorisé. Maintenant, nous devons accorder des autorisations aux connexions que vous souhaitez accepter. Pour ce faire, vous devez éditer le fichier de permissions :

sudo gedit /etc/hosts.allow

Comment sécuriser un serveur SSH

La commande ci-dessus ouvrira l'éditeur gedit contenant le fichier téléchargeable.

Comment sécuriser un serveur SSH

Nous avons ajouté le nom du démon SSH, SSHD, et l'adresse IP de l'ordinateur qui permet d'établir la connexion. Enregistrez le fichier et voyez si les restrictions et autorisations sont en vigueur.

Tout d’abord, vous allez essayer de vous connecter depuis un ordinateur qui n’est pas dans le fichier hosts.allow :

Comment sécuriser un serveur SSH

Connexion rejetée. Nous allons essayer de nous connecter depuis une machine avec l'adresse IP 192.168.4.23 :

Comment sécuriser un serveur SSH

Connexion acceptée.

L'exemple ici permet à une seule machine de se connecter. Les wrappers TCP sont assez flexibles, ils prennent en charge les noms d'hôte, les caractères génériques et les masques de sous-réseau pour accepter les connexions à partir de plages d'adresses IP.

Rejeter les demandes de connexion sans mot de passe

Bien que ce ne soit pas une bonne chose, les administrateurs système Linux peuvent créer des comptes d'utilisateurs sans mot de passe. Cela signifie qu'aucun mot de passe n'est requis pour les connexions à distance à partir de ce compte. Ces connexions seront acceptées mais non authentifiées.

Le paramètre par défaut pour SSH accepte les demandes de connexion sans mot de passe. Nous pouvons le modifier facilement et nous assurer que toutes ces connexions sont authentifiées.

Vous devez modifier le fichier de configuration SSH.

Comment sécuriser un serveur SSH

Faites défiler le fichier vers le bas jusqu'à ce que vous voyiez la ligne indiquant #PermitEmptyPasswords no . Supprimez # au début de la ligne et enregistrez le fichier. Redémarrez le démon SSH.

Utilisez des clés SSH au lieu de mots de passe

Les clés SSH offrent un moyen sécurisé de se connecter à un serveur SSH. Les mots de passe peuvent être déchiffrés, devinés ou forcés brutalement . Les clés SSH ne sont pas vulnérables à ce type d'attaques.

Lors de la génération d'une clé SSH, vous créez une paire de clés. L’une est la clé publique et l’autre la clé privée. La clé publique est installée sur les serveurs auxquels vous souhaitez vous connecter. La clé privée est conservée en toute sécurité sur votre ordinateur.

Les clés SSH permettent d'établir des connexions sans mot de passe, ce qui est plus sécurisé que les connexions utilisant l'authentification par mot de passe.

Lors d'une demande de connexion, l'ordinateur distant utilise une copie de la clé publique pour créer un message crypté renvoyé à l'ordinateur. Puisqu’il est chiffré avec la clé publique, l’ordinateur peut le déchiffrer avec la clé privée.

L'ordinateur extrait ensuite certaines informations du message, les crypte et les renvoie au serveur. Si le serveur peut le déchiffrer avec une copie de la clé publique. Si les informations contenues dans le message correspondent à ce que le serveur vous a envoyé, la connexion sera confirmée.

Ici, la connexion est établie au serveur au 192.168.4.11 par l'utilisateur avec la clé SSH. Notez qu'ils ne sont pas invités à saisir un mot de passe.

ssh [email protected]

Comment sécuriser un serveur SSH

Désactivez complètement l'authentification par mot de passe

Vous pouvez désactiver complètement l'authentification par mot de passe si vous utilisez des clés SSH. Nous devons modifier le fichier de configuration SSH.

Comment sécuriser un serveur SSH

Faites défiler le fichier jusqu'à ce que vous voyiez la ligne qui commence par #PasswordAuthentication yes . Supprimez # au début de la ligne, remplacez oui par non et enregistrez le fichier. Redémarrez le démon SSH.

Désactiver le transfert X11

Le transfert X11 permet aux utilisateurs distants d'exécuter des applications graphiques depuis votre serveur via une session SSH, mais est facilement exploité par des acteurs malveillants. Il est préférable de le désactiver en éditant le fichier de configuration SSH.

Comment sécuriser un serveur SSH

Faites défiler le fichier jusqu'à ce que vous voyiez la ligne #X11Forwarding no , supprimez le # au début de la ligne et enregistrez le fichier. Redémarrez le démon SSH.

Définir la valeur du délai d'inactivité

Si une connexion SSH est établie avec un ordinateur et qu'il n'y a aucune activité dessus pendant un certain temps, cela peut présenter un risque pour la sécurité.

Par conséquent, vous devez définir un délai d'attente. La connexion SSH sera déconnectée s'il n'y a aucune activité dans le délai imparti. Encore une fois, nous devons éditer le fichier de configuration SSH.

Comment sécuriser un serveur SSH

Faites défiler le fichier jusqu'à ce que vous voyiez la ligne qui commence par #ClientAliveInterval 0 . Supprimez le # au début de la ligne, remplacez le chiffre 0 par la valeur souhaitée. Habituellement, les gens le fixent à 300 secondes, soit 5 minutes. Enregistrez le fichier et redémarrez le démon SSH.

Définir une limite sur le nombre de saisies de mot de passe

Définir une limite sur le nombre de confirmations peut aider à empêcher les tentatives de devinette de mot de passe et les attaques par force brute. Après le nombre spécifié de demandes d'authentification, l'utilisateur sera déconnecté du serveur SSH. Par défaut, il n'y a pas de limite au nombre de tentatives de mot de passe, mais vous pouvez le modifier dans le fichier de configuration SSH.

Comment sécuriser un serveur SSH

Faites défiler le fichier jusqu'à ce que vous voyiez la ligne commençant par #MaxAuthTries 0 . La suppression du # au début de la ligne modifie le numéro à la valeur souhaitée. Vous pouvez le définir sur 3. Enregistrez le fichier lorsque vous apportez des modifications et redémarrez le démon SSH.

Vous pouvez tester cela en essayant de vous connecter et en saisissant un mauvais mot de passe.

Comment sécuriser un serveur SSH

Notez que le nombre MaxAuthTries est supérieur au nombre de tentatives autorisées à l'utilisateur. Après deux tentatives infructueuses, vous êtes déconnecté, ce qui signifie que MaxAuthTries est défini sur 3.

Désactiver la connexion root

Il est conseillé de ne pas vous connecter en tant que root, utilisez simplement en tant qu'utilisateur normal sous Linux et utilisez sudo pour effectuer des actions nécessitant des autorisations root. Vous ne devez pas non plus autoriser root à se connecter au serveur SSH. Seuls les utilisateurs normaux sont autorisés à se connecter. S'ils doivent effectuer une tâche de niveau administratif, ils peuvent également utiliser sudo. Si vous devez autoriser l'utilisateur root à se connecter, vous pouvez le forcer à utiliser une clé SSH.

Modifiez le fichier de configuration pour désactiver la connexion root.

Comment sécuriser un serveur SSH

Faites défiler le fichier jusqu'à ce que vous voyiez la ligne qui commence par #PermitRootLogin prohibit-password , supprimez le # au début de la ligne.

  • Si vous souhaitez empêcher root de se connecter, remplacez prohibit-password par no.
  • Si vous autorisez root à se connecter mais forcez l’utilisation d’une clé SSH, laissez le mot de passe interdit intact.

Enregistrez les modifications et redémarrez le démon SSH.

Dernière étape

Bien sûr, si vous n'avez pas besoin que SSH soit exécuté sur votre ordinateur, désactivez-le avec la commande suivante :

sudo systemctl stop sshd
sudo systemctl disable sshd

Je vous souhaite du succès !


Comment lancer des applications instantanément avec Wox sous Windows

Comment lancer des applications instantanément avec Wox sous Windows

Découvrez comment utiliser Wox pour lancer vos applications, exécuter des commandes et plus encore, instantanément.

Comment créer un cercle jaune autour du pointeur de la souris sous Windows

Comment créer un cercle jaune autour du pointeur de la souris sous Windows

Découvrez comment créer un cercle jaune autour du pointeur de la souris pour le mettre en surbrillance sur Windows 10. Suivez ces étapes faciles pour améliorer votre expérience utilisateur.

Pourquoi ladresse IP de Localhost est-elle 127.0.0.1 ?

Pourquoi ladresse IP de Localhost est-elle 127.0.0.1 ?

Découvrez pourquoi l

Comment ajouter des raccourcis de dossiers au menu Démarrer sous Windows 11

Comment ajouter des raccourcis de dossiers au menu Démarrer sous Windows 11

Sous Windows 11, configurez facilement des raccourcis pour accéder rapidement à des dossiers spéciaux dans votre menu Démarrer.

8 façons de corriger lerreur Il ny a aucun élément de démarrage à afficher dans le Gestionnaire des tâches sous Windows

8 façons de corriger lerreur Il ny a aucun élément de démarrage à afficher dans le Gestionnaire des tâches sous Windows

Découvrez comment résoudre l

Comment utiliser un disque dur externe avec un Chromebook

Comment utiliser un disque dur externe avec un Chromebook

Découvrez comment utiliser un disque dur externe avec un Chromebook pour transférer et stocker vos fichiers en toute sécurité. Suivez nos étapes pour un usage optimal.

Comment activer une adresse MAC aléatoire pour le réseau WiFi sous Windows 10

Comment activer une adresse MAC aléatoire pour le réseau WiFi sous Windows 10

Dans ce guide, vous apprendrez les étapes pour toujours utiliser une adresse MAC aléatoire pour votre adaptateur WiFi sous Windows 10. Optimisez votre sécurité en ligne!

Instructions pour désinstaller Internet Explorer sous Windows 10

Instructions pour désinstaller Internet Explorer sous Windows 10

Découvrez comment désinstaller Internet Explorer 11 sur Windows 10 pour optimiser l'espace de votre disque dur.

Comment utiliser Smart Defrag pour défragmenter efficacement les disques durs

Comment utiliser Smart Defrag pour défragmenter efficacement les disques durs

Découvrez comment utiliser Smart Defrag, un logiciel de défragmentation de disque dur gratuit et efficace, pour améliorer les performances de votre ordinateur.

Comment partager un VPN via un point daccès WiFi depuis un ordinateur portable

Comment partager un VPN via un point daccès WiFi depuis un ordinateur portable

Le moyen le plus simple de déverrouiller du contenu et de protéger tous les appareils avec un VPN crypté est de partager la connexion VPN via un point d