Maak kennis met PostScale -- e-mail-API voor transactionele, inkomende en gemaskeerde adressen. PostScale

    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 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    SSH-clients die zijn geconfigureerd om SSHFP te gebruiken, verifiëren de sleutel van de server automatisch tegen DNS.

    Recordcomponenten

    ComponentBeschrijving
    AlgoritmeType SSH-sleutelalgoritme
    FingerprinttypeGebruikt hash-algoritme
    FingerprintHex-gecodeerde fingerprint

    Algoritmewaarden

    WaardeAlgoritme
    1RSA
    2DSA (verouderd)
    3ECDSA
    4Ed25519
    6Ed448

    Fingerprint-typewaarden

    WaardeHash-algoritme
    1SHA-1 (verouderd)
    2SHA-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...  ; Ed25519

    Meerdere 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

    VeldBeschrijvingVoorbeeld
    NaamServer-hostnaamserver.example.com
    TypeRecordtypeSSHFP
    AlgoritmeSleutelalgoritme4 (Ed25519)
    FP-typeHashtype2 (SHA-256)
    FingerprintHex-fingerprinte3b0c44...
    TTLTime 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/stdin

    Handmatige 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

    1. Navigeer naar je zone in het DNScale-dashboard
    2. Klik op Add Record
    3. 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)
    4. 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 yes

    Opdrachtregel

    ssh -o VerifyHostKeyDNS=yes server.example.com

    Verificatieniveaus

    InstellingGedrag
    yesVerifieer met SSHFP, waarschuw als ontbreekt
    askVerifieer met SSHFP, vraag gebruiker als ontbreekt
    noGebruik 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 SSHFP

    Best practices

    1. Gebruik SHA-256 - Gebruik altijd fingerprinttype 2 (SHA-256), niet SHA-1

    2. Publiceer alle sleuteltypen - Voeg SSHFP-records toe voor alle host keys die je server aanbiedt

    3. Schakel DNSSEC in - Zonder DNSSEC biedt SSHFP beperkt beveiligingsvoordeel

    4. Werk bij na sleutelrotatie - Wanneer je host keys opnieuw genereert, werk dan de SSHFP-records bij

    5. Gebruik Ed25519-sleutels - Modern, veilig en produceert kortere fingerprints

    6. Automatiseer recordgeneratie - Neem SSHFP-recordcreatie op in serverprovisioning

    Host key-rotatie

    Bij het roteren van SSH host keys:

    1. Genereer nieuwe sleutels op de server
    2. Voeg nieuwe SSHFP-records toe
    3. Wacht op DNS-propagatie (minimaal de TTL-duur)
    4. Vervang de sleutels op de server
    5. 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-records

    SSHFP-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.com

    Gerelateerde 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.