SSHFP  (SSHFP pour Secure SHell FingerPrint ou empreinte numérique pour SSH) est un type d’enregistrement DNS, défini par la , qui identifie les clés publiques SSH associées à un nom d'hôte. La vérification d'un enregistrement SSHFP doit être sécurisée par un mécanisme tel que DNSSEC afin d'établir une chaîne de confiance.

Structure <Name> [<TTL>] [<Classe>] SSHFP <Algorithme> <Type> <Résultat de la Fonction de hachage> <Nom> Le nom de domaine de l'objet pour lequel l'enregistrement DNS appartient <TTL> Le temps de vie (en secondes) durant lequel l'enregistrement réside en cache (facultatif) <Classe> Protocole de groupe auquel l'enregistrement de ressource appartient (facultatif) <Algorithme> Algorithme de la clef publique (0=réservé, 1=RSA, 2=DSA, 3=ECDSA, 4=Ed25519) <Type> Type de fonction de Hachage utilisée (0=réservé, 1=SHA-1, 2=SHA-256) <Empreinte> Représentation hexadécimale du résultat de la fonction de hachage.

Exemple host.example.com. 3600 IN SSHFP 2 1 123456789abcdef67890123456789abcdef67890

Un client peut déterminer dans cet exemple, que l'empreinte SHA-1 de la clef publique DSA de l'hôte, ayant comme nom DNS host.example.com, est : 123456789abcdef67890123456789abcdef67890.

Utilisation du client OpenSSH

Lors de la connexion à un hôte, le client OpenSSH va demander la, ou les, clefs publiques de ce dernier. Une fois cette opération faite, il va pouvoir le comparer avec l'enregistrement DNS SSHFP et ainsi vérifier la concordance entre les deux empreintes.

Cette opération n'est pas activée par défaut dans la version de OpenSSH actuelle, mais il suffit d'ajouter l'option VerifyHostKeyDNS avec comme valeur yes (toujours) ou bien ask (sera demandé à l'utilisateur au moment de la connexion) au fichier de configuration d'OpenSSH (~/config pour un utilisateur ou /etc/ssh/ssh_config pour l'ensemble des comptes du système)man ssh_config. Exemple : $ ssh -o "VerifyHostKeyDNS ask" host.example.com [...] Matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)?

Utilisation de la commande ssh-keygen La commande unix ssh-keygen permet de rapidement et directement générer les données a renseigner au niveau de la zone DNS. # ssh-keygen -r www.example.com. www.example.com. IN SSHFP 1 1 5f2f2e0676798a0273572bc77b99d6319a560fd5 www.example.com. IN SSHFP 1 2 f5ae7764148c8f587996e5be3324286bdd1e9b935caaf3ff0ed3c9bbc0152097 www.example.com. IN SSHFP 2 1 9b913ce5339f8761c26a2ed755156d4785042b2d www.example.com. IN SSHFP 2 2 15477282e6a510a6c534e61f1df40d3750edcf86c6f4bf2ab5a964ccada7be3d www.example.com. IN SSHFP 3 1 1262006f9a45bb36b1aa14f45f354b694b77d7c3 www.example.com. IN SSHFP 3 2 e5921564252fe10d2dbafeb243733ed8b1d165b8fa6d5a0e29198e5793f0623b Remarque : Il est important de mettre le '.' en fin de domaine pour travailler en mode absolu et éviter de se retrouver avec des enregistrements tels que www.example.com.example.com.

Liens externes – Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints – Use of the SHA-256 Algorithm with RSA, Digital Signature Algorithm (DSA), and Elliptic Curve DSA (ECDSA) in SSHFP Resource Records – Using Ed25519 in SSHFP Resource Records Article de Stéphane Bortzmeyer - 4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints Article de Stéphane Bortzmeyer - 7479: Using ED25519 in SSHFP Resource Records

Notes et références

Catégorie:Domain Name System Catégorie:Standard Internet