La plupart des guides pour la configuration OpenSSH conseillent de désactiver l'authentification par mot de passe en faveur de l'authentification par clé. Mais à mon avis, l’authentification par mot de passe présente un avantage considérable: la possibilité de se connecter de manière absolue n’importe où sans clé. S'il est toujours utilisé avec un mot de passe fort, cela ne devrait pas poser de risque de sécurité. Ou devrait-il?
security
ssh
authentication
ssh-keys
Septagram
la source
la source
Réponses:
Il y a des avantages et des inconvénients pour l'authentification pw ou basée sur une clé.
Dans certains cas, par exemple, l'authentification par clé est moins sécurisée que l'authentification par mot de passe. Dans d'autres cas, il est moins sécurisé sur la base de son logiciel. Dans certains cas, l'un est plus pratique, dans d'autres, moins.
Tout se résume à ceci: lorsque vous effectuez une authentification basée sur une clé, vous devez sécuriser votre clé avec une phrase secrète. Sauf si ssh-agent est en cours d'exécution (ssh-agent vous évite de saisir votre phrase secrète à chaque fois), vous n'avez rien gagné en termes de commodité. La sécurité est discutable: le vecteur d’attaque est maintenant passé du serveur à VOUS, à votre compte ou à votre machine personnelle, (...) - ceux-ci peuvent être plus ou moins faciles à détruire.
Pensez en dehors de la boîte lorsque vous décidez cela. Que vous gagniez ou perdiez en termes de sécurité dépend du reste de votre environnement et d'autres mesures.
edit: Oh, viens de voir que vous parlez d'un serveur domestique. J'étais dans la même situation, "mot de passe" ou "clé USB avec la clé" toujours avec moi? Je suis allé pour l'ancien mais ai changé le port d'écoute SSH en quelque chose de différent de 22. Cela arrête tous ces enfoirés de script lamentables brute forçant des plages de réseau entières.
la source
L'utilisation des clés ssh présente une caractéristique unique par rapport à la connexion par mot de passe: vous pouvez spécifier les commandes autorisées. Cela peut être fait en modifiant le
~/.ssh/authorized_keys
fichier sur le serveur.Par exemple,
n'autoriserait que la commande `/usr/local/bin/your_backup_script.sh" avec cette clé particulière.
Vous pouvez également spécifier les hôtes autorisés pour la clé:
Ou combinez les deux:
Avec les clés, vous pouvez également accorder un accès temporaire à un utilisateur (un consultant, par exemple) à un serveur sans révéler le mot de passe de ce compte particulier. Une fois que le consultant a terminé son travail, la clé temporaire peut être supprimée.
la source
Vous pouvez obtenir le meilleur des deux mondes en autorisant uniquement l'authentification par mot de passe à partir de votre réseau. Ajoutez ce qui suit à la fin de votre
sshd_config
:la source
Vous avez partiellement répondu à votre question: plus l'attaquant peut se connecter, plus il a de possibilités pour pénétrer sur votre serveur en armant brutalement (considérez les attaques DDoS).
Comparez également la longueur de votre mot de passe avec la taille de la clé (généralement des milliers de bits).
la source
mywifesnameisangelaandshehasanicebutt
invunlable aux attaques par dictionnaire, est très fort, et très simple à retenir, mais impossible à deviner. Et cela vient avec le bonus si points brownie si jamais vous avez besoin de donner votre mot de passe à votre femme.Lorsque vous vous connectez avec un mot de passe, vous transmettez votre mot de passe au serveur. Cela signifie que l'opérateur du serveur peut modifier le SSHD pour accéder à votre mot de passe. Avec l'authentification par clé publique, ils ne peuvent pas obtenir votre clé privée, car seule votre clé publique est attribuée au serveur.
la source
Les clés ssh empêchent les attaques de type homme du milieu contre votre mot de passe.
Lorsque vous essayez de vous connecter avec une clé, le serveur crée un défi basé sur votre clé publique et l'envoie à votre client. qui le déchiffrera et construira une réponse appropriée à envoyer.
Votre clé privée n'est jamais envoyée au serveur et toute personne qui écoute est incapable de faire autre chose que d'intercepter cette session.
avec un mot de passe, ils auraient vos informations d'identification.
Ma solution est d’avoir une clé SSH portable dans des formats appropriés sur une partition chiffrée sur une clé USB. cela me permet de:
retirer facilement cette clé en cas de perte.
restreindre quels serveurs il me permet d'accéder à
et toujours le transporter
Bien que l’installation du logiciel de montage pose un problème (TrueCrypt)
la source
C'est un compromis, comme le dit @MartinVejmelka.
La raison pour laquelle vous utilisez une clé basée sur l'authentification est que la clé est si loin au-dessus de la force brute actuelle ou future qui vous oblige à venir de votre propre PC ou d'avoir la clé sur une clé USB ou similaire.
Un mot de passe a les problèmes suivants:
Une clé est un ordre de grandeur plus long et ne s'affiche à aucun moment, ce qui évite ces trois problèmes.
la source
08Forging2?seminal*^Rajas-(Posed/|
. C'est généré aléatoirement mais je n'ai aucun mal à m'en souvenir. Et bonne chance pour surfer sur les épaules ou le forcer.Bons points mentionnés ici déjà.
Ce que je considère comme le plus gros risque, étant donné que vous vous êtes occupé des bases avec un mot de passe fort, est que de nombreux ordinateurs ont des enregistreurs de frappe installés sans que l'utilisateur ne s'en rende compte. Il y a même des gens qui créent des sites entiers avec des utilitaires utiles contenant des chevaux de Troie, afin que cela puisse arriver aux meilleurs d'entre nous. Un enregistreur de frappe enverra par exemple les informations de connexion par courrier électronique à un pirate informatique qui pourrait alors accéder facilement au serveur.
Norton m'a récemment mis en garde de télécharger le programme d'installation de Zombee Mod (et non le fichier jar, l'installateur) pour avoir ajouté le vol au fichier jar Minecraft. J'ai examiné les détails et Norton a répertorié de nombreux utilitaires sur ce site, marqués comme contenant un cheval de Troie. Je ne sais pas si cela est correct ou non, mais c'était assez spécifique avec les noms de fichiers. C'est également un fait connu que les chevaux de Troie sont placés dans (certains) warez avant d'être distribués.
la source
L'un des avantages potentiels de SSH par rapport aux mots de passe est que, si vous ne spécifiez pas de phrase de passe SSH, vous ne devez plus jamais taper de mot de passe ... votre ordinateur est intrinsèquement approuvé sur le serveur car il possède la clé. Cela dit, j’utilise généralement toujours un mot de passe composé SSH, de sorte que j’écarte cet avantage.
Je trouve que la meilleure réponse pour laquelle les guides de l'utilisateur recommandent souvent SSH au-dessus de l'authentification par mot de passe provient du manuel Ubuntu pour SSHOpenSSHKeys. Je cite,
Essentiellement, si vous avez un mot de passe très solide, avec des signes de ponctuation, des majuscules et des minuscules et des chiffres, l'authentification par mot de passe sera probablement satisfaisante. De même, si vous envisagez de surveiller vos journaux et que vous ne procédez de toute façon pas à des tâches "super sécurisées" sur le réseau, utilisez un serveur domestique. Alors, bien sûr, un mot de passe fonctionne bien.
la source
La méthode d'authentification par mot de passe n'est vraiment pas sécurisée (à mon humble avis). Avec ce mécanisme, le mot de passe sera transmis au serveur sshd (comme @ramon l’a déjà dit). Cela signifie que certaines personnes pourraient modifier le serveur sshd pour récupérer le mot de passe. Avec une attaque Man-In-The-Middle, cela est très facile à réaliser au sein d'un réseau local.
Vous pouvez simplement corriger le serveur sshd en installant ce correctif ( https://github.com/jtesta/ssh-mitm ). Utilisez
arpspoof
etiptables
pour placer votre serveur corrigé entre le client et le serveur sshd authentique.Veuillez désactiver le mot de passe d'authentification: ouvrez le fichier de configuration
/etc/ssh/ssh_config
et ajoutez la lignePasswordAuthentication no
.la source
Vous pouvez contourner le avec l'
-o StrictHostKeyChecking=no
option. Ceci est très utile lorsque vous utilisez ssh dans un script shell.la source