Sécurisez votre SSH avec une connexion sans mot de passe
Introduction
SSH est un outil essentiel pour tout utilisateur de Linux, mais beaucoup de gens ne tirent pas le meilleur parti de ses capacités robustes, à savoir les connexions sécurisées avec des clés.
Les paires de clés SSH vous permettent de vous connecter de manière beaucoup plus sécurisée en limitant les connexions aux seuls ordinateurs qui possèdent une clé chiffrée associée à la cible de connexion. Contrairement aux mots de passe, ces clés ne peuvent pas être devinées, il n’y a donc pas besoin de s’inquiéter que quelqu’un essaie des milliers de mots de passe pour s’introduire dans votre ordinateur ou votre serveur. Pas de clé, c’est pas d’accès.
La bonne nouvelle, c’est que Ces clés sont très faciles à configurer et à utiliser, vous n’avez donc pas à vous soucier de la maintenance des configurations ou d’un long processus de configuration.
Le besoin de clés
Si vous exécutez une machine publique, vous avez besoin de ces clés. Désolé, mais si vous utilisez l’authentification par mot de passe, vous êtes plus vulnérable.
Les mots de passe sont terribles. C’est bien connu depuis un certain temps maintenant. La plupart des principales applications et utilitaires Web qui reposent sur des mots de passe offrent une authentification à 2 facteurs, car ils reconnaissent les lacunes des mots de passe, même les plus forts. Pour SSH, les clés sont le deuxième facteur d’authentification. Ils constituent une deuxième étape pour garantir uniquement l’accès autorisé à un système.
Génération d’une paire de clés
La majorité du travail ici est effectuée sur le système client de votre choix, et vous enverrez l’une des clés de la paire au serveur auquel vous souhaitez accéder.
Si vous ne voulez pas trop vous investir dans la personnalisation du processus de génération de clés, ce n’est pas grave. La plupart des options offertes par la commande qui génère les clés ne sont pas très utiles dans des circonstances courantes.
La façon la plus simple de générer une clé est d’utiliser la commande linux suivante.
ssh-keygen -t rsaAvec cette commande, vous exécutez à peu près tout avec les valeurs par défaut. La seule chose que vous devez spécifier est le type de cryptage utilisé, rsa.
Il vous demandera si vous souhaitez inclure un mot de passe pour votre clé. Ce n’est pas tout à fait nécessaire, et beaucoup de gens ne le font pas. Si vous voulez une couche de sécurité supplémentaire, ajoutez également une phrase de passe forte. Sachez simplement que vous devrez le saisir à chaque fois que vous vous connecterez à l’aide de cette clé.
Il existe une autre option que vous pouvez utiliser si vous souhaitez ajouter plus de sécurité à votre clé. En ajoutant l’indicateur -b à votre commande ssh-keygen, vous pouvez spécifier la quantité de bits utilisés. La valeur par défaut est 2048, ce qui devrait convenir dans la plupart des cas. Voici à quoi ressemble un exemple.
ssh-keygen -b 4096 -t rsaTransfert d’une clé vers le serveur
Pour que l’ensemble fonctionne, vous devez donner à la machine que vous essayez de connecter une partie de la paire de clés. C’est pourquoi ils sont générés par paires, après tout. Les fichiers contenant le .key sont votre clé privée. Ne partagez pas ou ne distribuez pas celui-ci. Celui avec l’extension .pub, cependant, doit être envoyé aux machines avec lesquelles vous souhaitez vous connecter.
La plupart des systèmes Linux sont livrés avec un script très simple qui vous permet de pousser votre clé publique vers les machines auxquelles vous souhaitez vous connecter. Ce script, ssh-copy-id, vous permet d’envoyer votre clé avec une seule commande.
ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.1Bien sûr, vous devez remplacer par le nom d’utilisateur de l’utilisateur auquel vous vous connecteriez sur la machine cible et l’adresse IP réelle de cet ordinateur. Un nom de domaine ou un nom d’hôte fonctionnerait également.
Si vous avez configuré votre serveur pour utiliser SSH sur un autre port, vous pouvez spécifier le port à ssh-copy-id à l’aide de l’indicateur -p suivi du numéro de port souhaité.
Connexion
La connexion via SSH doit être à peu près la même qu’auparavant, sauf que vous utiliserez votre paire de clés pour la validation. Connectez-vous simplement via SSH comme vous le feriez normalement.
ssh username@192.168.1.1Si vous n’avez pas configuré de mot de passe pour votre clé, vous vous connecterez automatiquement. Si vous avez ajouté un mot de passe, vous serez invité à le fournir avant que le système ne vous connecte.
Désactivation des connexions par mot de passe
Maintenant que vous utilisez des clés SSH pour vous connecter, il est judicieux de désactiver les connexions basées sur un mot de passe pour SSH. De cette façon, vous n’êtes pas vulnérable à ce que quelqu’un découvre le mot de passe de l’un de vos comptes et l’utilise. Toutes les connexions par mot de passe seront désactivées.
Sur la machine à laquelle vous souhaitez vous connecter, probablement un serveur, recherchez le fichier de configuration SSH. Il se trouve généralement dans /etc/ssh/sshd_config. Ouvrez ce fichier dans l’éditeur de texte de votre choix en tant que root ou avec sudo.
vim /etc/ssh/sshd_configRecherchez la ligne PasswordAuthentication et décommentez-la, si nécessaire, puis définissez sa valeur sur no.
PasswordAuthentication noIl existe quelques autres options que vous voudrez peut-être modifier dans cette section pour une meilleure sécurité également. De cette façon, seules les connexions avec votre clé seront autorisées.
PasswordAuthentication no
PermitEmptyPasswords no
HostbasedAuthentication no
Lorsque vous avez terminé, enregistrez et quittez le fichier. Vous devrez redémarrer le service SSH pour que les modifications prennent effet.
systemctl restart sshdou
/etc/init.d/sshd restartRéflexions finales
Avec seulement un effort minimal, la connexion SSH de votre serveur est devenue beaucoup plus sécurisée. Les mots de passe sont problématiques à bien des égards, et SSH est l’un des services les plus couramment attaqués sur Internet. Prenez le temps d’utiliser des clés SSH et assurez-vous que votre serveur est protégé contre les attaques par mot de passe.