J'utilise un serveur SSH et j'utilise toujours une authentification par mot de passe simple. Partout où je lis sur la sécurité, il est conseillé d'utiliser l'authentification par clé publique. Mais je n'obtiens pas les avantages. Les utiliser est, à mes yeux, un travail peu sûr ou très pratique.
Bien sûr, si quelqu'un essaie de forcer la connexion à mon serveur SSH, la clé publique est beaucoup plus forte que n'importe quel mot de passe. Mais à part ça, c'est totalement précaire.
Les conseillers soutiennent principalement que vous n'avez pas à vous souvenir d'un mot de passe. Comment est-ce pas sûr? Donc, si quelqu'un pirate mon ordinateur, il obtient non seulement mon ordinateur, mais aussi mon serveur? Si j'utilise SSH de différents clients, je dois stocker les clés publiques une par une, ce qui multiplie les risques qu'elles tombent entre de fausses mains. Je pourrais les enregistrer sur une clé USB que je porte avec moi, mais elle peut être perdue et le viseur a accès à mon serveur.
Je suis peut-être mieux servi avec l'authentification à deux facteurs.
Y a-t-il un argument qui me manque? Quelle est la meilleure façon pour moi?
la source
Réponses:
C'est potentiellement vrai de toute façon avec les enregistreurs de frappe: dès que vous vous connectez à votre serveur à partir de l'ordinateur compromis, ils obtiennent le mot de passe.
Mais il y a 3 avantages aux clés:
1) Authentification en cache. Saisissez une fois votre phrase secrète, exécutez plusieurs commandes ssh. Ceci est très utile si vous utilisez quelque chose qui utilise ssh comme transport, comme scp, rsync ou git.
2) Authentification évolutive. Entrez une fois votre phrase secrète, connectez-vous à plusieurs machines . Plus vous avez de machines, plus c'est utile. Si vous avez 100 machines, que faites-vous? Vous ne pouvez pas utiliser le même mot de passe (sauf s'il s'agit d'une ferme de clones) et vous ne vous en souvenez pas autant. Vous devez donc utiliser un gestionnaire de mots de passe et vous revenez à un point de compromis unique. En fait, la phrase secrète clé est votre gestionnaire de mots de passe.
2b) Il évolue dans l'autre sens si vous avez plusieurs administrateurs utilisant les mêmes systèmes, car vous pouvez révoquer les clés de l'utilisateur A sans avoir à dire à B, C, D, E, F ... que le mot de passe a changé.
(Cela peut également être fait avec des comptes individuels et sudo, mais vous devez ensuite provisionner ces comptes d'une manière ou d'une autre)
3) Automatisation et délégation partielle. Vous pouvez configurer SSH pour exécuter une commande particulière lorsqu'une clé se connecte . Cela permet à un processus automatisé sur le système A de faire quelque chose sur le système B sans avoir une confiance totale sans mot de passe entre les deux.
(Il s'agit d'un remplacement pour rlogin / rsh, qui était hilarante de manière non sécurisée)
Modifier: un autre avantage des clés publiques plutôt que des mots de passe est le scénario courant où le serveur est compromis par une vulnérabilité. Dans ce cas, la connexion avec un mot de passe compromet immédiatement le mot de passe. La connexion avec une clé ne fonctionne pas! Je dirais que c'est plus courant que le bureau d'origine de l'administrateur compromis.
la source
ssh -A
et à partir de là, vous connecter à des machines qui permettent au public de votre hôte d'origine.Si vous utilisez de bons mots de passe, cela peut être suffisamment sécurisé. Je limite généralement le nombre de serveurs accessibles au public au minimum et autorise SSH à partir d'IP spécifiques lorsque cela est possible.
De plus, vous pouvez protéger vos clés par mot de passe (mot de passe). Ainsi, cette phrase secrète doit être saisie chaque fois que vous devez vous connecter à votre ou vos serveurs. Personne ne peut alors utiliser votre clé sans la phrase de passe appropriée.
Il existe des postes similaires:
la source
L'autorisation de la clé publique est plus sécurisée lorsque l'attaquant parvient à être l'homme du milieu (MitM) entre votre ordinateur client et le serveur et que vous ne remarquez pas la modification de la clé d'hôte (peut-être parce que vous ne l'avez pas fait). 'ai pas l'ancienne clé, par exemple parce que c'est la première fois que vous utilisez cet ordinateur client spécifique).
(Il en va de même lorsque l'attaquant parvient à prendre le contrôle du serveur et qu'il existe d'autres serveurs sur lesquels les mêmes informations d'identification fonctionnent.)
Avec l'authentification par mot de passe standard, vous soumettez votre mot de passe (à l'intérieur de la connexion cryptée) en texte brut, le serveur authentique le hachera normalement et comparera le résultat à un hachage stocké dans sa base de données de mots de passe. Un attaquant MitM pourrait plutôt prendre ce mot de passe, ouvrir une connexion sur le vrai serveur, et s'y connecter ... et soit vous envoyer le contenu (pour que vous ne remarquiez rien), soit simplement faire ses propres trucs diaboliques sur votre serveur .
Avec l'authentification par clé publique, le client signe essentiellement certaines données connues du serveur et du client pour prouver qu'il est en possession de la clé privée et envoie la signature au serveur. Ces données signées incluent un identifiant de session, qui dépend de nombres aléatoires choisis par le client et le serveur, et est donc différent pour chaque session. Si le MitM ouvre sa propre connexion SSH au serveur réel, celui-ci aura un ID de session différent, et donc la signature fournie par le client n'y fonctionnera pas.
Bien sûr, comme d'autres réponses l'ont déjà dit, vous devez garder votre clé privée sécurisée, par exemple cryptée avec une phrase secrète, ou possible sur un appareil séparé qui ne crée des signatures qu'après avoir entré un code PIN.
la source
OpenSSH peut conserver sa propre autorité de certification pour gérer les clés d'hôte et de client SSH et peut y utiliser des listes de révocation. Cela pourrait ajouter à la sécurité fournie par l'authentification par clé.
la source
Vous avez raison au sujet de la revendication "vous n'avez pas besoin d'un mot de passe". C'est vraiment peu sûr du côté client.
Ce qui rend le fait d'autoriser uniquement les clés publiques pour la connexion est beaucoup plus sûr, c'est qu'il n'y a aucun moyen d'accéder par force brute à votre serveur. Tout ce que pourrait être un attaquant serait de mettre une certaine charge sur votre serveur - vous pouvez utiliser fail2ban pour garder cela en échec.
Pour la sécurité côté client, vous devez protéger la clé privée avec une bonne phrase de passe. Bien sûr, la connexion au serveur est désormais plus lourde qu'avec un mot de passe. Pour surmonter cela, vous pouvez utiliser l' agent ssh pour stocker la clé privée en mémoire si vous avez l'intention de vous connecter au serveur plusieurs fois de suite. Il est recommandé de limiter la durée pendant laquelle une clé doit être conservée en mémoire.
la source
Une possibilité pour 2FA pour SSH (et une qui nécessite relativement peu de configuration / complexité) est en fait d'utiliser une clé publique et un mot de passe.
Je crois que quelque chose dans le sens de
AuthenticationMethods publickey,keyboard-interactive
peut être ajouté/etc/ssh/sshd_config
pour que cela fonctionne.Plus généralement, le problème est plus que les mots de passe (seuls) ne sont pas une excellente méthode d'authentification car ils sont souvent de qualité douteuse. Un «argument» très simple pour les clés par rapport aux mots de passe est qu'une clé sera généralement d'au moins 2048 bits, et souvent plus (pour les clés EC, ce serait la force effective, plutôt que la taille réelle). Ces bits sont également générés par un mécanisme cryptologiquement sécurisé (ou approprié).
Un mot de passe est souvent inférieur à 2048 bits et n'est souvent pas dérivé d'une source cryptographiquement sécurisée.
Vous pouvez également sécuriser vos clés avec un mot de passe, pour vous prémunir contre les problèmes liés à leur perte (bien que quelqu'un puisse essayer de forcer brutalement ce mot de passe).
Donc, fondamentalement, les différences peuvent être rendues assez transparentes entre les clés et les mots de passe, et l'utilisation de clés vous permet d'acheter un meilleur mot de passe qu'un humain pourrait traiter. Cela ne veut pas dire qu'ils sont une panacée, mais en moyenne, ils offrent plus de sécurité que les mots de passe.
la source