Enregistrement DNS SSHFP

Un article de Wikipédia, l'encyclopédie libre.

L'enregistrement DNS SSHFP  (SSHFP pour Secure SHell (Key) FingerPrint) est un enregistrement DNS de clefs publiques SSH.

Structure[modifier | modifier le code]

<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) [1]
<Type>
Type de fonction de Hachage utilisée (0=réservé, 1=SHA-1, 2=SHA-256) [2]
<Empreinte>
Représentation hexadécimale du résultat de la fonction de hachage.

Exemple[modifier | modifier le code]

  • 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[modifier | modifier le code]

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)[3]. 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[modifier | modifier le code]

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[modifier | modifier le code]

Notes et références[modifier | modifier le code]