web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser l'authentification de clé publique pour SSH?

Je suis en cours d'exécution d'un serveur SSH et j'utilise toujours une authentification de mot de passe simple. Partout où j'ai lu la sécurité, je suis conseillé d'utiliser l'authentification de clé publique. Mais je ne reçois pas les avantages. Les utiliser sont, dans mes yeux, sans être sûr ou beaucoup de travail pratique.

Bien sûr, si quelqu'un essaie de brute-forcer la connexion à ma clé publique SSH Server est beaucoup plus forte que n'importe quel mot de passe. Mais à part cela, c'est totalement peu sûr.

Les conseillers affirment principalement que vous n'avez pas à vous rappeler un mot de passe. À quel point est-ce insécurité? Donc, si quelqu'un ticks dans mon ordinateur, il ne vient pas que mon ordinateur, mais mon serveur aussi? Si j'utilise SSH de différents clients différents, je dois stocker les clés publiques chacune d'elles, qui multiplie la possibilité qu'ils tombent dans les fausses mains. Je pourrais les sauver sur un bâton USB que je porte avec moi, mais cela peut être perdu et le Finder a accès à mon serveur.

Peut-être que je suis mieux servi avec une authentification à deux facteurs.

Y a-t-il des arguments que je manque? Quel est le meilleur moyen pour moi?

26
Aravor

si quelqu'un packs dans mon ordinateur, il ne reçoit pas seulement mon ordinateur, mais mon serveur aussi?

C'est potentiellement vrai de toute façon avec Keyloggers: dès que vous vous connectez à votre serveur à partir de l'ordinateur compromis, ils reçoivent le mot de passe.

Mais il y a 3 avantages aux clés:

1) Authentification cachable. Entrez votre phrase secrète une fois, effectuez 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 votre phrase secrète une fois, Connectez-vous à plusieurs machines. Plus vous avez des machines, plus cela est utile. Si vous avez 100 machines, que faites-vous? Vous ne pouvez pas utiliser le même mot de passe (à moins que ce ne soit une ferme clone) et que vous ne vous en souvenez plus. Vous devez donc utiliser un gestionnaire de mots de passe et vous êtes de retour à un point de compromis unique. Effectivement la clé Passphrase est Votre gestionnaire de mots de passe.

2b) Il échoue dans l'autre sens si vous avez plusieurs administrateurs utilisant les mêmes systèmes, car vous pouvez révoquer des clés de l'utilisateur A sans avoir à indiquer 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)

3) Automatisation et délégation partielle. Vous pouvez configurer SSH à exécuter une commande particulière lors de la connexion clé . 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.

(C'est un remplaçant pour Rlogin/Rsh, qui était hilariquement insécurité)

Edition: Un autre avantage des touches 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, vous connectez-vous avec un mot de passe compromet le mot de passe immédiatement. Se connecter avec une clé ne le fait pas! Je dirais que cela est plus fréquent que le bureau d'origine de l'administrateur ne peut être compromis.

32
pjc50

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 permettez à SSH à partir de la (s) IP (s) spécifique) autant que possible.

De plus, vous pouvez protéger vos clés par phrasephrase (mot de passe). Donc, cette phrase secrète doit être entrée à chaque fois que vous devez vous connecter à votre (s) serveur (s). Personne ne peut alors utiliser votre clé à moins que la bonne phrase secrète soit fournie.

Il y a des postes similaires:

  1. Poste de Serverfault .
  2. Poste de Security Stackexchange .
  3. Poste de SuperUser .
12
Khaled

Une solution où l'autorisation de clé publique est plus sécurisée, c'est que l'attaquant parvient à être man-in-the-Middle (MITM) entre votre ordinateur client et le serveur, et vous ne remarquez pas la clé de changement d'hôte (éventuellement parce que vous n'avez pas fait 'T avoir l'ancienne clé, par exemple parce que c'est la première fois à l'aide de cet ordinateur client spécifique).

(La même chose s'applique lorsque l'attaquant parvient à prendre le contrôle du serveur, et il existe d'autres serveurs où les mêmes informations d'identification fonctionnent.)

Avec l'authentification standard basée sur le mot de passe, vous soumettez votre mot de passe (à l'intérieur de la connexion crypté) dans du texte brut, le serveur authentique sera normalement haché et comparera le résultat à un hachage stocké dans sa base de données de mot de passe. Un attaquant MITM pourrait plutôt prendre ce mot de passe, ouvrir une connexion au serveur réel et vous vous connecter ... et vous renvoyer le contenu (afin que vous ne remarquez rien), ou simplement faire ses propres trucs diaboliques sur votre serveur. .

Avec l'authentification de clé publique, le client signer essentiellement certaines données connues par le serveur et le client pour prouver qu'elle est en possession de la clé privée et d'envoyer la signature au serveur. Ces données signées comprennent un identifiant de session qui dépend des numéros 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 sur le serveur réel, celui-ci aura une carte d'identité de session différente et que la signature fournie par le client ne fonctionnera pas là.

Bien sûr, comme d'autres réponses déjà racontées, vous devez garder votre clé privée sécurisée, par ex. crypté avec une phrase secrète ou possible sur un périphérique séparé qui crée uniquement des signatures après avoir entré une goupille.

12
Paŭlo Ebermann

OpenSSH peut conserver son propre CA pour gérer les clés d'hôte SSH et des clients et peut utiliser des listes de révocation. Cela pourrait ajouter à la sécurité fournie par une authentification à clé.

2
fuero

Vous avez raison sur la réclamation "Vous n'avez pas besoin d'un mot de passe". Cela n'est vraiment pas sûr du côté du client.

Ce qui rend l'autorisation seulement Les clés publiques pour la connexion beaucoup plus sécurisée sont le fait qu'il n'y a aucun moyen d'accéder à la force brute à votre serveur. Tous un attaquant seraient attaquants, c'est de mettre une charge sur votre serveur - vous pouvez utiliser échec2ban pour le garder en échec.

Pour la sécurité du côté client, vous devez protéger la clé privée avec une bonne phrase de passe. Bien sûr maintenant, la connexion au serveur est plus encombrante qu'avec un mot de passe. Pour surmonter cela, vous pouvez utiliser SSH Agent pour stocker la clé privée en mémoire si vous souhaitez vous connecter plusieurs fois au serveur de suite. C'est une bonne pratique de limiter le temps pendant combien de temps une clé doit être conservée en mémoire.

2
guntbert

Peut-être que je suis mieux servi avec une authentification à deux facteurs.

Une possibilité de 2fa pour SSH (et une condition qui nécessite relativement peu de configuration/complexité) en utilisant une clé publique et un mot de passe.

Je crois quelque chose dans les lignes de AuthenticationMethods publickey,keyboard-interactive peut être ajouté à /etc/ssh/sshd_config Pour faire ce travail.

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 touches de mots de passe Keys VS est qu'une clé sera généralement d'au moins 2048 bits, et souvent plus (pour les clés de la CE, 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, vous protéger des problèmes liés à la perdurer (bien que quelqu'un puisse essayer de brute force ce mot de passe).

Donc, fondamentalement, les différences peuvent être fabriquées assez transparentes entre les touches et les mots de passe, et l'utilisation de clés vous achète 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.

0
iwaseatenbyagrue