L'échange de clés SSH est-il plus sécurisé que l'authentification par mot de passe?

9

Les utilisateurs distants se connectent à plusieurs services de notre bureau principal via Internet à l'aide de SSH. Le mot de passe SSH est synchronisé avec leur compte LAN A / D.

Est-ce que demander aux utilisateurs d'apporter une copie d'une clé SSH à la maison en utilisant quelque chose comme un CD ou un morceau de papier serait plus sûr que de demander aux utilisateurs de taper leur mot de passe? Ou devrais-je avoir besoin des deux?

Ma question pourrait probablement être reformulée comme suit: y a-t-il une vulnérabilité dans le protocole d'authentification par mot de passe de SSH?

C'est ce message qui me fait douter:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
srmark
la source

Réponses:

22

Le message que vous voyez est un problème distinct. Il vous demande de confirmer que l'hôte auquel vous vous connectez est vraiment celui auquel vous vous attendez. Depuis le serveur, vous pouvez obtenir l'empreinte digitale en exécutant ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub. Ensuite, lorsque vous vous connectez à distance pour la première fois, vous pouvez vous assurer que les empreintes digitales correspondent.

Les clés d'hôte, vues en action ici, résolvent le problème des attaques de l' homme au milieu - peut-être que le DNS a été subverti et que vous vous connectez à la machine d'un concurrent au lieu de la vôtre. Cette machine rassemble vos informations d'identification et transfère de manière transparente votre connexion au vrai serveur, volant vos informations à votre insu. S'assurer que les correspondances de la clé hôte empêche cela de se produire à moins que l'attaquant n'ait réellement volé la clé publique de votre serveur.

Un problème subsiste cependant - comment savoir quelle clé est la bonne? Après la première connexion, la clé publique est stockée dans votre ~/.ssh/known_hostsfichier, les connexions suivantes sont donc correctes. Mais la première fois, soit vous avez besoin d'un moyen hors bande pour obtenir l'empreinte digitale, soit vous suivez le modèle "TOFU": la confiance à la première utilisation.

Mais rien de tout cela n'a rien à voir avec les mots de passe et les clés, sauf que les clés et les mots de passe pourraient être volés via cette attaque - dans un sens, c'est la vulnérabilité que vous demandez.

Il y a (au moins) trois raisons pour lesquelles les mots de passe sont pires que les clés:

  1. Ils peuvent être forcés brutalement. Un mot de passe typique à 8 caractères sélectionné par l'utilisateur a environ 30 bits de devinette-entropie. Une paire de clés publique / privée ssh mesure 1 024 bits ou plus. Il est effectivement impossible de forcer une clé ssh par force brute, mais la recherche automatique de mots de passe se produit tout le temps.
  2. Ils peuvent être stupides. Les utilisateurs sélectionnent régulièrement des mots de passe horribles, même avec des restrictions en place, et ils ont tendance à utiliser des mots de passe plus durs à plusieurs endroits. Cela facilite évidemment les attaques.
  3. Les mots de passe peuvent être volés à distance. Lorsque vous utilisez SSH, le mot de passe est crypté sur le câble, mais il est très courant que le serveur ssh soit remplacé sur les systèmes compromis par un serveur qui enregistre tous les mots de passe. Avec les clés, la clé privée reste sur le système local et n'est jamais envoyée du tout, et elle ne peut donc pas être volée sans compromettre réellement la machine cliente.

De plus, les clés ssh offrent une commodité lorsqu'elles sont utilisées avec quelque chose comme ssh-agent- vous obtenez l'opération sans tracas de la connexion sans réauthentification à chaque fois, tout en conservant un degré de sécurité raisonnable.

Il n'y a aucun avantage significatif à demander les deux, car quelqu'un qui a suffisamment d'accès pour voler la clé privée peut également voler assez facilement le mot de passe de l'utilisateur. Si vous avez besoin de plus de sécurité que cela, envisagez d'étudier un système d'authentification à deux facteurs comme RSA SecurID ou WiKID .

mattdm
la source
Très bonne réponse. Exactement ce que je cherchais. Merci!
srmark
concernant le numéro 3) Si vous vous connectez à un serveur déjà compressé ... pourquoi quelqu'un voudrait-il votre mot de passe? La seule raison pour laquelle je peux penser est que vous utilisez le même mot de passe partout.
Sirex
Sirex - à droite; ils volent votre mot de passe et l'utilisent sur d'autres systèmes. Notez dans la question que les mots de passe sont utilisés comme "LAN A / D". Ainsi, ils volent votre mot de passe du serveur de connexion ssh et ont également accès au serveur Windows. De plus, maintenant, chaque fois que le système est compromis, vous devez passer par l'exercice "OK, tout le monde change à nouveau votre mot de passe".
mattdm
En outre, comme il est indiqué dans le numéro 2, les utilisateurs sont en utilisant le même mot de passe partout. Soupir.
mattdm
avec les utilisateurs embêtants! :(
Sirex
1

ce que vous demandez vraiment, c'est "est un facteur meilleur qu'un autre", le sujet est l'authentification multifacteur et vous seriez bien avisé de vous pencher sur le sujet.

Généralement, un «facteur» est quelque chose que vous connaissez (mot de passe), quelque chose que vous avez (fichier ssh ou carte magnétique) ou quelque chose que vous êtes (empreinte digitale).

Un n'est pas meilleur qu'un autre en soi, ils sont gratuits. Perdre un CD avec le fichier clé est aussi mauvais que divulguer votre mot de passe si c'est tout ce dont vous avez besoin. Pour les environnements sécurisés, l'authentification à deux facteurs est courante.

Sirex
la source
Oui, je comprends ce que tu dis. Dans ce cas, j'essaie cependant de savoir si l'authentification par mot de passe peut être piratée en utilisant quelque chose comme l'homme au milieu.
srmark
pour ssh comme exemple spécifique, non, car la section donnant le mot de passe est également cryptée, et les clés changent pendant la session (30 secondes je crois). Ce n'est pas un reflet du mot de passe vs du mot de passe
Sirex