Qu'est-ce qu'un enregistrement SSHFP
Découvrez comment les enregistrements SSHFP publient les empreintes de clés hôte SSH dans le DNS pour la vérification des serveurs. Inclut des exemples pour le tableau de bord et l'API DNScale.
Un enregistrement SSHFP (SSH Fingerprint) publie l'empreinte de la clé hôte d'un serveur SSH dans le DNS. Cela permet aux clients SSH de vérifier l'identité d'un serveur via le DNS au lieu de se fier uniquement au modèle « trust on first use » (TOFU — confiance à la première utilisation).
Comment fonctionnent les enregistrements SSHFP
Lorsque vous vous connectez pour la première fois à un serveur SSH, vous voyez un message comme :
The authenticity of host 'server.example.com' can't be established.
ED25519 key fingerprint is SHA256:abc123...
Are you sure you want to continue connecting (yes/no)?Les enregistrements SSHFP éliminent cette incertitude en publiant l'empreinte attendue dans le DNS :
server.example.com. 3600 SSHFP 4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855Les clients SSH configurés pour utiliser SSHFP vérifieront automatiquement la clé du serveur par rapport au DNS.
Composants de l'enregistrement
| Composant | Description |
|---|---|
| Algorithme | Type d'algorithme de clé SSH |
| Type d'empreinte | Algorithme de hash utilisé |
| Empreinte | Empreinte encodée en hexadécimal |
Valeurs d'algorithme
| Valeur | Algorithme |
|---|---|
1 | RSA |
2 | DSA (obsolète) |
3 | ECDSA |
4 | Ed25519 |
6 | Ed448 |
Valeurs du type d'empreinte
| Valeur | Algorithme de hash |
|---|---|
1 | SHA-1 (obsolète) |
2 | SHA-256 (recommandé) |
Cas d'utilisation courants
Serveur SSH unique
Publiez tous les types de clés pour une couverture complète :
server.example.com. 3600 SSHFP 1 2 abc123... ; RSA
server.example.com. 3600 SSHFP 3 2 def456... ; ECDSA
server.example.com. 3600 SSHFP 4 2 ghi789... ; Ed25519Plusieurs serveurs
server1.example.com. 3600 SSHFP 4 2 hash1...
server2.example.com. 3600 SSHFP 4 2 hash2...
git.example.com. 3600 SSHFP 4 2 hash3...Bastion / hôte de rebond
bastion.example.com. 3600 SSHFP 4 2 abc123...
bastion.example.com. 3600 SSHFP 3 2 def456...Format de l'enregistrement
| Champ | Description | Exemple |
|---|---|---|
| Nom | Nom d'hôte du serveur | server.example.com |
| Type | Type d'enregistrement | SSHFP |
| Algorithme | Algorithme de clé | 4 (Ed25519) |
| Type d'empreinte | Type de hash | 2 (SHA-256) |
| Empreinte | Empreinte hexadécimale | e3b0c44... |
| TTL | Durée de vie (secondes) | 3600 |
Générer des enregistrements SSHFP
Avec ssh-keygen
La méthode la plus simple est ssh-keygen -r :
# Générer les enregistrements SSHFP pour toutes les clés hôte
ssh-keygen -r server.example.com
# Sortie :
# server.example.com IN SSHFP 1 2 abc123... (RSA)
# server.example.com IN SSHFP 3 2 def456... (ECDSA)
# server.example.com IN SSHFP 4 2 ghi789... (Ed25519)Depuis un serveur distant
# Obtenir l'empreinte depuis un serveur distant
ssh-keyscan server.example.com | ssh-keygen -r server.example.com -f /dev/stdinCalcul manuel
# Pour un fichier de clé spécifique
awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | \
base64 -d | \
sha256sum | \
awk '{print $1}'Ajouter un enregistrement SSHFP
Via le tableau de bord
- Accédez à votre zone dans le tableau de bord DNScale
- Cliquez sur Add Record
- Configurez l'enregistrement :
- Name : Saisissez le nom d'hôte du serveur (ex.
server) - Type : Sélectionnez
SSHFP - Algorithm : Sélectionnez l'algorithme de clé (RSA, ECDSA, Ed25519)
- Fingerprint Type : Sélectionnez SHA-256 (recommandé)
- Fingerprint : Saisissez l'empreinte encodée en hexadécimal
- TTL : Définissez la durée de cache (par défaut : 3600)
- Name : Saisissez le nom d'hôte du serveur (ex.
- Cliquez sur Create Record
Via l'API
Créer un enregistrement SSHFP :
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "server",
"type": "SSHFP",
"content": "4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600
}'Ajouter plusieurs types de clés :
# Clé Ed25519
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "server",
"type": "SSHFP",
"content": "4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600
}'
# Clé ECDSA
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "server",
"type": "SSHFP",
"content": "3 2 abc123def456789...",
"ttl": 3600
}'Réponse de l'API :
{
"status": "success",
"data": {
"message": "Record created successfully",
"record": {
"id": "encoded-record-id",
"name": "server.example.com.",
"type": "SSHFP",
"content": "4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"ttl": 3600,
"disabled": false
}
}
}Configurer le client SSH
Pour activer la vérification SSHFP, configurez votre client SSH :
~/.ssh/config
Host *.example.com
VerifyHostKeyDNS yesLigne de commande
ssh -o VerifyHostKeyDNS=yes server.example.comNiveaux de vérification
| Paramètre | Comportement |
|---|---|
yes | Vérifier avec SSHFP, avertir si absent |
ask | Vérifier avec SSHFP, demander à l'utilisateur si absent |
no | Ne pas utiliser SSHFP (par défaut) |
Prérequis DNSSEC
Pour que SSHFP offre une vraie sécurité, votre zone doit être signée DNSSEC :
- Avec DNSSEC : SSHFP fournit une preuve cryptographique de l'identité du serveur
- Sans DNSSEC : SSHFP est uniquement informatif (le DNS peut être usurpé)
Vérifier le statut DNSSEC :
dig +dnssec server.example.com SSHFPBonnes pratiques
-
Utilisez SHA-256 - Utilisez toujours le type d'empreinte
2(SHA-256), pas SHA-1 -
Publiez tous les types de clés - Ajoutez des enregistrements SSHFP pour toutes les clés hôte que votre serveur propose
-
Activez DNSSEC - Sans DNSSEC, SSHFP n'offre qu'un bénéfice de sécurité limité
-
Mettez à jour lors de la rotation des clés - Lorsque vous regénérez les clés hôte, mettez à jour les enregistrements SSHFP
-
Utilisez les clés Ed25519 - Modernes, sécurisées et produisent des empreintes plus courtes
-
Automatisez la génération des enregistrements - Incluez la création d'enregistrements SSHFP dans le provisionnement des serveurs
Rotation des clés hôte
Lors de la rotation des clés hôte SSH :
- Générer les nouvelles clés sur le serveur
- Ajouter les nouveaux enregistrements SSHFP
- Attendre la propagation DNS (au moins la durée du TTL)
- Remplacer les clés sur le serveur
- Supprimer les anciens enregistrements SSHFP
# Étape 1 : Générer les nouvelles clés
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key_new -N ""
# Étapes 2-3 : Ajouter le nouveau SSHFP et attendre
# Étape 4 : Remplacer les clés
mv /etc/ssh/ssh_host_ed25519_key_new /etc/ssh/ssh_host_ed25519_key
systemctl reload sshd
# Étape 5 : Supprimer les anciens enregistrements SSHFPTester les enregistrements SSHFP
# Requête des enregistrements SSHFP
dig SSHFP server.example.com
# Vérifier la connexion SSH avec SSHFP
ssh -v -o VerifyHostKeyDNS=yes server.example.com
# Comparer l'empreinte locale avec le DNS
ssh-keygen -r server.example.comTypes d'enregistrements associés
- TLSA - Empreintes de certificats TLS (concept similaire)
- A - Adresse IP du serveur
- AAAA - Adresse IPv6 du serveur
Conclusion
Les enregistrements SSHFP fournissent une méthode basée sur le DNS pour la vérification des clés hôte SSH, réduisant la dépendance au modèle « trust on first use ». Combinés avec DNSSEC, les enregistrements SSHFP offrent une preuve cryptographique solide de l'identité du serveur. DNScale facilite la publication des enregistrements SSHFP pour vos serveurs, avec des champs dédiés pour la sélection de l'algorithme et du type d'empreinte.