A propos de la première connexion SSH

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

A propos de la première connexion SSH

Messagepar tsing » 15 Déc 2005 02:03

Bonsoir à tous,

J'aurais une question à vous poser concernant la sécurité de la première connexion SSH vers un serveur SSH. Je précise bien la première car j'ai plusieurs fois remarqué en utilisant le client WinSCP3 qu'à ce moment là, sans doute à cause du fait que je ne connais pas l'identité du serveur sur lequel je tente de me connecter, une fenêtre avec un avertissement surgit à l'écran, me renseignant sur l'adresse (ou la clé, en fait je ne sais pas bien justement) dudit serveur. Voici l'alerte :

Image

D'après mes maigres connaissances en sécurité là dessus, la connexion qui s'établie est protégée par deux clés :

  • une clé publique que le serveur m'envoie
  • une clé privé que le serveur concerve et via laquelle il a pu générer la clé publique qu'il m'a envoyé


J'espère que ce n'est pas le contraire :roll: Sur google il existe plusieurs tutorials sur par exemple : comment faire pour créer des jeux de clés avec putty pour automatiser les connexion (sans réentrer de mot de passe). Moi je voudrais simplement savoir s'il est possible, un peu dans ce style là, de faire en sorte de ne pas prendre de risque (en cliquant sur le bouton Yes de l'alerte) en connaissant vraiment l'identité du serveur SSH avant d'établir la première connexion.

Je m'explique : comme vous le savez (sans non plus être parano :lol:), lorsque qu'avec un client SSH on veut contacter un serveur SSH pour ma première fois (je suis lourd on dirait), rien ne nous dit qu'un méchant a par exemple détourné notre requête vers son propre serveur, ou bien qu'il joue au man in the middle, 'fin vous voyez ce que je veux dire :twisted:

Donc si contre cette sacré faiblesse vous aurriez une parade, il ne faut surtout pas vous géner : expliquez-moi :o :)

PS : il faudrait que la solution soit assez abordable... en gros je ne souhaite pas avoir recours aux certificats et à verisign, et encore moins au FBI :wink:
A ce propos, j'imaginerais plutôt quelque chose comme par exemple aller physiquement sur le serveur et générer une clé publique que l'on peut copier sur une disquette (ou une clé USB si vous voulez 8)) pour ensuite aller la stocker sur le client SSH afin qu'il connaisse directement le serveur... 'fin c'est assez flou dans ma tête dès que je veux mettre cette idée en pratique :oops: Merci :wink:
tsing
Matelot
Matelot
 
Messages: 10
Inscrit le: 22 Déc 2004 12:40
Localisation: Paris

Messagepar schlouf » 15 Déc 2005 04:30

Sur la machine meme, tu peux noter le fingerprint de ton ssh_host_rsa_key.pub avec
Code: Tout sélectionner
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

Ainsi, quand tu te connectes, tu peux comparer les signatures et t'assurer que tu es effectivement connecte sur la bonne machine. A ce moment-la, tu peux la mettre en cache sur ton client ssh.

Pour l'authentification par clefs, il existe une multitude de tutorials sur internet. Juste google 'ssh public key authentication'... En voila une qui semble etre pas mal lisible avec des explications et tout et tout: http://slacker.com/things/publickey.php. Pour utiliser les clefs avec putty par exemple, la procedure est ici: http://the.earth.li/~sgtatham/putty/0.5 ... tml#pubkey
Avatar de l’utilisateur
schlouf
Major
Major
 
Messages: 72
Inscrit le: 29 Jan 2002 01:00
Localisation: QC, Canada

Messagepar tsing » 15 Déc 2005 20:24

Chic chic ! ça marche (la commande pour lire la clé public) :P Euh par contre (désolé je sais que là, je sors un peu du cadre pationnant de la sécurité), est-ce que vous saurriez comment on peut enregistrer du texte vers un périphérique externe (comme une clé USB par exemple) ?

EDIT:

En cherchant un peu j'ai réussi à trouver la commande qui va bien : cp nom_d_un_fichier > /dev/nom_d_un_peripherique :)

Par contre je suis assez étonné car dans WinSCP3 lorsque l'on souhaite se connecter à un serveur SSH, le formulaire propose ces champs à compléter :

  • Host name
  • Port number
  • User name
  • Password
  • Private key file
  • Protocol

Or c'est génant car ça l'avant dernier champ Private key file entre en contradiction avec le raisonement que l'on a tenu (un peu plus haut). En effet, si dans mon client SSH je dois indiquer la clé publique de mon serveur SSH, pourquoi est-ce que le client SSH WinSCP3 me demande dans ce formulaire le champ Private key file ? Pour moi ça n'est pas logique. :?

Merci pour vos lumières


Bonne soirée !! :)
1.e4 e5 2.Cf3 f5!
les blancs peuvent abandonner :)
tsing
Matelot
Matelot
 
Messages: 10
Inscrit le: 22 Déc 2004 12:40
Localisation: Paris

Messagepar schlouf » 16 Déc 2005 08:47

En fait, tu l'as eu de travers un peu plus haut, d'ou la confusion... La publique reste sur le serveur, la privee est gardee par le proprietaire, comme leurs noms l'indiquent d'ailleurs. Si le sujet t'interesse, je te re-recommande google, 'public key infrastructure' est un bon sujet de recherche.
Avatar de l’utilisateur
schlouf
Major
Major
 
Messages: 72
Inscrit le: 29 Jan 2002 01:00
Localisation: QC, Canada

Messagepar tsing » 16 Déc 2005 12:06

Bonjour schlouf,
tu l'as eu de travers un peu plus haut, d'ou la confusion...

Si tu parles de la photo (et du raisonnement que j'ai tenu à partir d'elle) c'est sans doute un peu bancale car je l'ai copié hasardeusement sur google. Voici une autre prise d'écran vraiment plus parlante (et plus adaptée) :
Image

Par rapport au raisonnement tenu, je crois qu'il est juste. En effet, j'ai naturelement fait des recherches et voici un paragraphe sûr qui résume bien le principe de la gestion des clefs :
Pour SSH, le client garde la trace des clefs des serveurs qu'il a contactés. Si, lors de la prise de contact avec un serveur, il reçoit une clef publique inconnue, il en avertit l'utilisateur :
  • soit l'administrateur du serveur a changé kes clefs ;
  • soit un intrus s'est placé au milieu (man in the middle, ou MiM).
Reste le problème de ce type d'attaques lors de la première connexion à un serveur, dont la véritable clef publique est inconnue.


Je crois que c'est clair : le client SSH doit bien posséder la clef publique du serveur SSH.[/list]
1.e4 e5 2.Cf3 f5!
les blancs peuvent abandonner :)
tsing
Matelot
Matelot
 
Messages: 10
Inscrit le: 22 Déc 2004 12:40
Localisation: Paris

Messagepar schlouf » 16 Déc 2005 13:22

Ce qu'on appelle communement 'host key' et 'public key' sont deux choses distinctes.

Le host key est la clef qui va identifier le serveur de facon a ce que le client puisse etre sure qu'il parle bien au bon serveur. Il est normalement genere par le serveur lors de son installation. Dans ce cas, comme tu disais, il est important que le client connaisse le fingerprint d'avance de facon a pouvoir y faire confiance lors de la premiere connexion.

Pour l'autentification des sessions (par clefs), c'est le 'public key' qui est utilise. Il s'agit d'une paire de clefs que le client lui meme (c-a-d toi) genere. Dans ce cas, le client conserve la partie privee de la clef et le serveur dispose de la partie publique. C'est pour cette raison que tu vois le champs 'private key' dans l'ecran de configuration de WinSCP.
Avatar de l’utilisateur
schlouf
Major
Major
 
Messages: 72
Inscrit le: 29 Jan 2002 01:00
Localisation: QC, Canada

Messagepar tsing » 16 Déc 2005 13:48

Merci pour le détail. Bon, je n'ai plus qu'à trouver comment enregistrer cette host key dans Putty maintenant :o :roll:
1.e4 e5 2.Cf3 f5!
les blancs peuvent abandonner :)
tsing
Matelot
Matelot
 
Messages: 10
Inscrit le: 22 Déc 2004 12:40
Localisation: Paris


Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron