Enregistrement DNS SSHFP

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article ne cite pas suffisamment ses sources ().

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».

En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?

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

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) [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

  • 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)[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

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

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

Notes et références

  1. a et b (en) Request for comments no 7479
  2. a et b (en) Request for comments no 6594
  3. man ssh_config
  4. (en) Request for comments no 4255
  • icône décorative Portail d’Internet