Ajouter les champs SSHFP dans la zone DNS

../../../../2015/05/20/ajouter-champs-sshfp-dans-le-dns/
Antoine Van-Elstraete (antoine@van-elstraete.net)
mercredi 20 mai 2015





2 min.

Image d'illustration

Introduction

Tous les utilisateurs de ssh connaissent le fameux message demandant de vérifier la clé du serveur (méthode “trust on first use”). Mais parfois on ne connait pas cette clé, ou simplement on ne vérifie pas…

::
The authenticity of host ‘[0.0.0.0]:22 ([0.0.0.0]:22)’ can’t be established. ECDSA key fingerprint is 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00. Are you sure you want to continue connecting (yes/no)?

OpenSSH peut vérifier de lui-même cette clé en la comparant à une référence enregistrée dans le DNS. Pour cela, il faut que les condensats des clés d’hôtes soient ajoutées au fichier de zone, puis d’ajouter l’option permettant cette vérification à ssh.

Méthode

Côte serveur

La commande ssh-keygen permet de faire rapidement cette opération. Associé à l’outil find et la commande hostname, on peut obtenir les condensats des clés en une seule commande :

::
find /etc/ssh/ -name ‘ssh_host_*_key.pub’ -exec ssh-keygen -f {} -r $(hostname). ;

Il suffit ensuite d’ajouter ces champs au fichier de zone. Si on utilise DNSSEC, il faut resigner le fichier de zone, et enfin recharger la zone DNS (avec par exemple rndc reload si on utilise bind).

Côté client

Il faut ajouter dans la configuration de ssh (~/.ssh/config) l’option VerifyHostKeyDNS yes.