55 votes

Comment puis-je confirmer que cet avertissement SSH n'est pas une véritable attaque man in the middle ? "AVERTISSEMENT : L'IDENTIFICATION DE L'HÔTE DISTANT A CHANGÉ !"

Je suis novice dans ce domaine et je veux exclure toute attaque de type "man-in-the-middle".

Je me connecte depuis un PC Windows 10 à un Raspberry Pi 4 via SSH, au sein de mon réseau local et j'obtiens ce message. Je suis l'administrateur système, donc il n'y a personne avec qui vérifier.

J'ai trouvé beaucoup de messages sur la façon de résoudre le problème, mais je veux savoir ce que je dois faire pour exclure (ou confirmer) une attaque avant de la résoudre.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:0xgFiU5j9W2WgyurDOgORf+qeFQoHf0YE6G92KnrduY.
Please contact your system administrator.
Add correct host key in C:\\Users\\JamesAlesi/.ssh/known_hosts to get rid of this message.
Offending RSA key in C:\\Users\\JamesAlesi/.ssh/known_hosts:2
ECDSA host key for 192.168.1.123 has changed and you have requested strict checking.
Host key verification failed.

3voto

Robert McKay Points 41

Le plus Dans la plupart des cas, surtout lorsqu'il s'agit d'appareils relativement éphémères comme les Raspberry Pis, ce message est bénin ; vous avez peut-être inséré une carte SD différente, réinstallé le système d'exploitation, attribué la même adresse IP à un autre appareil ou effectué l'une des dizaines d'actions qui peuvent donner lieu à une nouvelle empreinte hôte. Cependant, je vous suggère de ne pas vous contenter de "la plupart du temps" lorsqu'il s'agit d'empreintes d'hôte, car elles sont si faciles à vérifier.

Comme d'autres l'ont déjà souligné à juste titre, vous devez vérifier l'empreinte de la clé hôte via un canal de confiance. En d'autres termes, ne vous contentez pas de vous connecter en SSH au Pi et d'exécuter les commandes ci-dessous, car cela serait vulnérable à la même attaque MitM (potentielle) que vous essayez d'exclure. Dans ce cas, je vous suggère d'utiliser la connexion HDMI du Pi, ou une connexion série, ou une autre connexion de confiance, pour vérifier l'empreinte de l'hôte.

Maintenant, pour vérifier réellement l'empreinte digitale, vous aurez besoin d'un Shell sur le Raspberry Pi. Tapez ssh-keygen -l (petite lettre "L") et appuyez sur [Enter] . Cela vous demandera le nom de fichier de la clé. La clé que vous voulez doit être dans /etc/ssh (le chemin par défaut qu'il suggère est no contiennent les clés de l'hôte du système ; ignorez-les ici). Recherchez la clé ECDSA, puisque c'est avec elle que votre client SSH s'est connecté. Vous obtiendrez le même résultat si vous utilisez la clé publique ( .pub ) ou la clé privée (sans extension), mais à moins que vous ne soyez connecté en tant que root, vous ne pourrez lire que la clé publique.

ssh-keygen -l suivi de la saisie du nom de fichier de la clé privée correcte, l'empreinte digitale de cette clé sera affichée. Cela devrait ressembler à quelque chose comme ceci :

pi@raspberrypi:~$ ssh-keygen -l
Enter file in which the key is (/root/.ssh/id_rsa): /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:0xg...[redacted]...rduY. root@pi (ECDSA)

(Ce nom de fichier peut ou non être correct pour votre Raspberry Pi. Vérifiez avec ls -l /etc/ssh d'abord.)

Vous devez ensuite comparer soigneusement l'empreinte digitale produite par votre système avec celle que vous avez obtenue de la part de ssh plus tôt. S'ils correspondent, la connexion est vérifiée et vous pouvez mettre à jour en toute sécurité vos données locales. ~/.ssh/known_hosts en conséquence. Si elles ne correspondent pas, il se passe quelque chose de bizarre qui nécessite une enquête plus approfondie.

2voto

Attie Points 18031

Je veux savoir ce que je dois faire pour écarter (ou confirmer) une attaque avant de la réparer.

Vous devez utiliser un canal de confiance à 100% pour recevoir ces informations.

La meilleure approche consiste à se connecter directement au système, c'est-à-dire à brancher un clavier et un écran, ou à utiliser une console série si nécessaire.

Une fois que vous vous êtes connecté, exécutez l'une des commandes suivantes :

ssh-keygen -l -f <( ssh-keyscan 127.0.0.1 )

ou :

for k in /etc/ssh/ssh_host_*_key.pub; do ssh-keygen -l -f "${k}"; done

Ce sera :

  • ssh-keyscan - Connectez-vous au serveur SSH du système local et demandez les clés de l'hôte.
    • Vous pouvez échanger 127.0.0.1 pour un hôte distant aussi si vous en avez besoin... bien que faire cette opération à distance nécessite une confiance absolue que le distant est bien celui qu'il prétend être, et que tout ce qui se passe entre vous et le distant est digne de confiance.
    • Utilisation de 127.0.0.1 acheminera la connexion via l'interface de bouclage, et communiquera directement avec le système local. (en ignorant les potentiels iptables règles de réacheminement du trafic)
    • En cas d'attaque, l'utilisation de localhost peut en fait vous rediriger vers un autre hôte (en utilisant la fonction /etc/hosts ), il faut donc éviter de l'utiliser.
  • ssh-keygen - Montrer les empreintes digitales ( -l ) des clés dans le fichier fourni ( -f ${file} )
    • Utilisation avec ssh-keyscan 127.0.0.1 (c'est-à-dire l'option 1) se connectera au démon en cours d'exécution, et interrogera les clés comme le ferait n'importe quel autre client.
    • L'utilisation avec des fichiers dans le système de fichiers local (c'est-à-dire l'option 2) peut être considérée comme la solution la plus simple. plus sûr "mais cela ne tient pas compte d'une mauvaise configuration du serveur, avec des clés situées ailleurs... Il vous faudra aller chercher les bonnes clés.

Ensuite, une fois que vous avez les empreintes digitales, comparez-les soigneusement avec la clé proposée par le système distant auquel vous essayez de vous connecter (par exemple, la clé d'accès à l'Internet) : SHA256:0xgFiU5j9W2WgyurDOgORf+qeFQoHf0YE6G92KnrduY dans votre exemple).

Si l'empreinte digitale ne correspond pas à vous avez alors confirmé qu'une attaque est en cours, et vous ne parlez pas au système que vous pensez être.

Si l'empreinte digitale correspond, c'est génial ! Résolvez le problème en utilisant ssh-keygen -R ${hostname} et continuez votre chemin.

Notes :

  • L'avertissement standard selon lequel si un système est compromis, vous devez considérer que la clé hôte l'est également... auquel cas vous n'aurez aucun moyen de le savoir.
  • Il est possible de provoquer une collision de hachage et de présenter la même empreinte digitale pour deux clés différentes... auquel cas vous n'aurez aucun moyen de le savoir.
  • Tout trafic basé sur le réseau peut être modifié ou redirigé en utilisant iptables ... si vous soupçonnez qu'un système est comprimé, il peut être judicieux de le vérifier également.

Il est impossible d'y parvenir sans disposer d'un canal de communication fiable à 100 %. Dans votre cas, vous pouvez vous connecter sur le Pi, et récupérer les clés directement. Dans d'autres situations, vous pourriez avoir besoin de " croire la parole d'un collègue "... Faites attention où vous mettez votre confiance.


Je suis novice dans ce domaine et je veux exclure toute attaque de type "man-in-the-middle".

Sur un petit réseau local, c'est très que vous parlez au système que vous pensez être.

Si l'adresse IP distante se trouve dans votre sous-réseau et qu'il n'y a pas d'autres appareils inconnus ou suspects dans votre réseau, il sera difficile de construire une attaque MITM. Pour plus de certitude, essayez de supprimer tous les autres appareils, ou même de créer un lien point à point entre votre ordinateur et l'ordinateur distant (bien que l'adressage et le DHCP puissent devenir problématiques dans cette situation).

Si vous pensez que votre routeur n'est pas digne de confiance, n'oubliez pas qu'il peut annoncer des routes et des noms (DNS / mDNS / WINS) à votre système, auquel votre système fera généralement confiance implicitement. Si Internet peut être retiré de l'équation, alors de telles astuces de routage / redirection ne peuvent pas être jouées à moins qu'elles ne soient facilitées en interne.

... " La confiance dans l'informatique "C'est un très grand sujet, et il y a tellement de pistes que nous pourrions vous envoyer ici... Je vous encourage à demander / lire / jouer / etc... c'est la meilleure façon d'apprendre.


Comme cela a déjà été discuté dans d'autres réponses... la situation la plus probable dans laquelle vous vous trouvez ici est l'une ou l'autre :

  1. Vous avez réinstallé le système d'exploitation sur votre Raspberry Pi.
  2. Votre serveur DHCP a transmis un bail qui avait été donné à un autre hôte que vous avez utilisé. ssh avec, et qui a été récemment donné à votre Raspberry Pi

En général, les gens acceptent l'empreinte digitale affichée lors de la première connexion et s'en contentent à l'avenir.

Sur les systèmes particulièrement sensibles, vous voudrez confirmer que l'empreinte digitale est exactement correcte lors de la première connexion.

Si l'empreinte digitale change, c'est que quelque chose a changé sur l'hôte, par exemple un imposteur ou une réinstallation.

0voto

trognanders Points 364

Ce message signifie essentiellement que vous vous connectez à un ordinateur différent, à une adresse IP spécifique.

Pourquoi cela peut-il arriver en plus de MITM ? Il est possible que l'ordinateur ait été réinstallé. Il est possible que vous ayez placé un autre ordinateur sur l'IP et que vous vous attendiez à recevoir le message.

Dans le contexte d'une connexion entièrement acheminée par votre réseau local, les chances d'une attaque réelle au lieu d'une raison bénigne sont les suivantes très faible.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X