Randomart OpenSSH : reconnaître un serveur

 Publié le 15 février 2014, à 18:18, par Allaedine El Banna   Aucun commentaire
Rangé dans Mémos sur logiciels libres


Lors de multiples connexions au même serveur OpenSSH, il est indispensable de pouvoir reconnaître l’empreinte du serveur, afin d’éviter l’attaque classique de l’Homme du Milieu (MITM).

Le fichier known_hosts

La tâche qui consiste à reconnaître son serveur OpenSSH habituel de manière sûre, est en général facilitée en général par le fichier ~/.ssh/known_hosts sur le client (Linux), qui après une première validation et connexion réussie, enregistre pour de bon l’empreinte du serveur OpenSSH afin de pouvoir avertir immédiatement l’utilisateur en cas de changement.

[wedjat@temple ~]$ ssh wedjat@myserver
The authenticity of host 'myserver (192.168.56.1)' can't be established.
ECDSA key fingerprint is d0:fe:2a:68:f7:ae:30:71:16:67:c0:1d:75:25:ea:bb.
Are you sure you want to continue connecting (yes/no)?

Lors d’une seconde connexion à partir du même poste client, si l’empreinte change, l’utilisateur en est immédiatement averti (exemple typique : la réinstallation d’un serveur ou d’une machine virtuelle) :

[wedjat@temple ~]$ ssh wedjat@myserver
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
21:d9:46:0e:0d:5b:d8:87:6a:67:5d:1e:84:40:85:56.
Please contact your system administrator.
Add correct host key in /home/wedjat/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/wedjat/.ssh/known_hosts:219
ECDSA host key for myserver has changed and you have requested strict checking.
Host key verification failed.

L’utilisation du fichier ~/.ssh/known_hosts trouve ses limites lorsque l’utilisateur change fréquemment de poste de travail (donc de client SSH). Dans l’exemple précédent, à moins d’avoir noté l’empreinte « d0:fe:2a:68:f7:ae:30:71:16:67:c0:1d:75:25:ea:bb » au préalable (ce qui est en général conseillé), il est difficile de la retenir « de tête ».

Le « randomart »

OpenSSH propose depuis déjà plusieurs versions le concept de « randomart » : il s’agit d’un arrangement de caractères ASCII censé réprésenter une forme « facile » à mémoriser pour l’utilisateur, généré à partir d’une clé publique.
Il est possible d’afficher le « randomart » correspondant à une clé publique en utilisant le binaire ssh-keygen :

[wedjat@temple ~]$ ssh-keygen -lv .ssh/id_dsa.pub
2048 de:2e:5a:e4:0e:e3:8d:20:0b:c3:4c:08:04:4a:ff:27  wedjat@temple(RSA)
+--[ RSA 2048]----+
|oo               |
|+ .              |
|o  .             |
|o   .            |
|..   E .S        |
|+     o+ .       |
|oo. . o + .      |
| o o o B..       |
|  .   +.o..      |
+-----------------+

Lors de la connexion à un serveur, on pourra afficher automatiquement le « randomart » en activant l’option VisualHostKey :

[wedjat@temple ~]$ ssh -o='VisualHostKey yes' wedjat@myserver
ECDSA key fingerprint is ae:b8:56:f6:a5:fd:b6:2f:af:7c:a4:4a:5b:87:9b:86.
+--[ECDSA  256]---+
|                 |
|                 |
|                 |
|                 |
|        S        |
|      o.  .  ..  |
|     o ..+..oo.  |
|    .. .o.E+=+.  |
|   .o..   o=BBo  |
+-----------------+
Are you sure you want to continue connecting (yes/no)?

On peut également activer cette option pour de bon en ajoutant une ligne dans son fichier ~/.ssh/config :

VisualHostKey yes

Il est alors plus simple de pouvoir reconnaître son propre serveur, même en changeant souvent de moyen de connexion !



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs avec une astérisque (*) doivent être obligatoirement remplis.