Wat is een SSHFP-record
Leer hoe SSHFP-records SSH host key-fingerprints publiceren in DNS voor serververificatie. Inclusief voorbeelden voor het DNScale-dashboard en de API.
Een SSHFP (SSH Fingerprint) record publiceert de fingerprint van de host key van een SSH-server in DNS. Hierdoor kunnen SSH-clients de identiteit van een server verifiëren via DNS in plaats van uitsluitend te vertrouwen op het "trust on first use" (TOFU)-model.
Hoe SSHFP-records werken
Wanneer je voor het eerst verbinding maakt met een SSH-server, zie je een bericht als:
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)?SSHFP-records elimineren deze onzekerheid door de verwachte fingerprint in DNS te publiceren:
server.example.com. 3600 SSHFP 4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855SSH-clients die zijn geconfigureerd om SSHFP te gebruiken, verifiëren de sleutel van de server automatisch tegen DNS.
Recordcomponenten
| Component | Beschrijving |
|---|---|
| Algoritme | Type SSH-sleutelalgoritme |
| Fingerprinttype | Gebruikt hash-algoritme |
| Fingerprint | Hex-gecodeerde fingerprint |
Algoritmewaarden
| Waarde | Algoritme |
|---|---|
1 | RSA |
2 | DSA (verouderd) |
3 | ECDSA |
4 | Ed25519 |
6 | Ed448 |
Fingerprint-typewaarden
| Waarde | Hash-algoritme |
|---|---|
1 | SHA-1 (verouderd) |
2 | SHA-256 (aanbevolen) |
Veelvoorkomende toepassingen
Enkele SSH-server
Publiceer alle sleuteltypen voor volledige dekking:
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... ; Ed25519Meerdere servers
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/jump host
bastion.example.com. 3600 SSHFP 4 2 abc123...
bastion.example.com. 3600 SSHFP 3 2 def456...Recordformaat
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | Server-hostnaam | server.example.com |
| Type | Recordtype | SSHFP |
| Algoritme | Sleutelalgoritme | 4 (Ed25519) |
| FP-type | Hashtype | 2 (SHA-256) |
| Fingerprint | Hex-fingerprint | e3b0c44... |
| TTL | Time to live (seconden) | 3600 |
SSHFP-records genereren
Met ssh-keygen
De eenvoudigste methode is ssh-keygen -r:
# Genereer SSHFP-records voor alle host keys
ssh-keygen -r server.example.com
# Output:
# 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)Vanaf een externe server
# Haal fingerprint op van externe server
ssh-keyscan server.example.com | ssh-keygen -r server.example.com -f /dev/stdinHandmatige berekening
# Voor een specifiek sleutelbestand
awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | \
base64 -d | \
sha256sum | \
awk '{print $1}'Een SSHFP-record toevoegen
Via het dashboard
- Navigeer naar je zone in het DNScale-dashboard
- Klik op Add Record
- Configureer het record:
- Name: Voer de server-hostnaam in (bijv.
server) - Type: Selecteer
SSHFP - Algorithm: Selecteer het sleutelalgoritme (RSA, ECDSA, Ed25519)
- Fingerprint Type: Selecteer SHA-256 (aanbevolen)
- Fingerprint: Voer de hex-gecodeerde fingerprint in
- TTL: Stel de cacheduur in (standaard: 3600)
- Name: Voer de server-hostnaam in (bijv.
- Klik op Create Record
Via de API
Een SSHFP-record aanmaken:
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
}'Meerdere sleuteltypen toevoegen:
# Ed25519-sleutel
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
}'
# ECDSA-sleutel
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
}'API-respons:
{
"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
}
}
}SSH-client configureren
Om SSHFP-verificatie in te schakelen, configureer je SSH-client:
~/.ssh/config
Host *.example.com
VerifyHostKeyDNS yesOpdrachtregel
ssh -o VerifyHostKeyDNS=yes server.example.comVerificatieniveaus
| Instelling | Gedrag |
|---|---|
yes | Verifieer met SSHFP, waarschuw als ontbreekt |
ask | Verifieer met SSHFP, vraag gebruiker als ontbreekt |
no | Gebruik geen SSHFP (standaard) |
DNSSEC-vereiste
Om echte beveiliging te bieden met SSHFP, moet je zone DNSSEC-ondertekend zijn:
- Met DNSSEC: SSHFP biedt cryptografisch bewijs van serveridentiteit
- Zonder DNSSEC: SSHFP is alleen informatief (DNS kan worden gespooft)
Controleer DNSSEC-status:
dig +dnssec server.example.com SSHFPBest practices
-
Gebruik SHA-256 - Gebruik altijd fingerprinttype
2(SHA-256), niet SHA-1 -
Publiceer alle sleuteltypen - Voeg SSHFP-records toe voor alle host keys die je server aanbiedt
-
Schakel DNSSEC in - Zonder DNSSEC biedt SSHFP beperkt beveiligingsvoordeel
-
Werk bij na sleutelrotatie - Wanneer je host keys opnieuw genereert, werk dan de SSHFP-records bij
-
Gebruik Ed25519-sleutels - Modern, veilig en produceert kortere fingerprints
-
Automatiseer recordgeneratie - Neem SSHFP-recordcreatie op in serverprovisioning
Host key-rotatie
Bij het roteren van SSH host keys:
- Genereer nieuwe sleutels op de server
- Voeg nieuwe SSHFP-records toe
- Wacht op DNS-propagatie (minimaal de TTL-duur)
- Vervang de sleutels op de server
- Verwijder oude SSHFP-records
# Stap 1: Genereer nieuwe sleutels
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key_new -N ""
# Stap 2-3: Voeg nieuwe SSHFP toe en wacht
# Stap 4: Vervang sleutels
mv /etc/ssh/ssh_host_ed25519_key_new /etc/ssh/ssh_host_ed25519_key
systemctl reload sshd
# Stap 5: Verwijder oude SSHFP-recordsSSHFP-records testen
# Query SSHFP-records
dig SSHFP server.example.com
# Verifieer SSH-verbinding met SSHFP
ssh -v -o VerifyHostKeyDNS=yes server.example.com
# Vergelijk lokale fingerprint met DNS
ssh-keygen -r server.example.comGerelateerde recordtypen
- TLSA - TLS-certificaatfingerprints (vergelijkbaar concept)
- A - Server IP-adres
- AAAA - Server IPv6-adres
Conclusie
SSHFP-records bieden een DNS-gebaseerde methode voor SSH host key-verificatie, waardoor de afhankelijkheid van het "trust on first use"-model wordt verminderd. In combinatie met DNSSEC biedt SSHFP sterk cryptografisch bewijs van serveridentiteit. DNScale maakt het eenvoudig om SSHFP-records voor je servers te publiceren, met speciale velden voor algoritme- en fingerprint-typeselectie.