Neu: PostScale -- E-Mail-API für transaktionale, eingehende und maskierte Adressen. PostScale

    Was ist ein SSHFP-Eintrag

    Erfahren Sie, wie SSHFP-Einträge SSH-Host-Key-Fingerprints im DNS veröffentlichen, um die Serververifizierung zu ermöglichen. Mit Beispielen für das DNScale-Dashboard und die API.

    Ein SSHFP-Eintrag (SSH Fingerprint) veröffentlicht den Fingerprint eines SSH-Server-Host-Keys im DNS. Dies ermöglicht es SSH-Clients, die Identität eines Servers über DNS zu verifizieren, anstatt sich ausschließlich auf das „Trust on First Use" (TOFU)-Modell zu verlassen.

    Wie SSHFP-Einträge funktionieren

    Wenn Sie sich zum ersten Mal mit einem SSH-Server verbinden, sehen Sie eine Meldung wie:

    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-Einträge beseitigen diese Unsicherheit, indem sie den erwarteten Fingerprint im DNS veröffentlichen:

    server.example.com.    3600    SSHFP    4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    SSH-Clients, die für die Nutzung von SSHFP konfiguriert sind, verifizieren den Schlüssel des Servers automatisch gegen den DNS-Eintrag.

    Eintragskomponenten

    KomponenteBeschreibung
    AlgorithmSSH-Schlüssel-Algorithmustyp
    Fingerprint TypeVerwendeter Hash-Algorithmus
    FingerprintHex-kodierter Fingerprint

    Algorithmus-Werte

    WertAlgorithmus
    1RSA
    2DSA (veraltet)
    3ECDSA
    4Ed25519
    6Ed448

    Fingerprint-Typ-Werte

    WertHash-Algorithmus
    1SHA-1 (veraltet)
    2SHA-256 (empfohlen)

    Häufige Anwendungsfälle

    Einzelner SSH-Server

    Veröffentlichen Sie alle Schlüsseltypen für umfassende Abdeckung:

    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

    Mehrere Server

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

    Eintragsformat

    FeldBeschreibungBeispiel
    NameServer-Hostnameserver.example.com
    TypEintragstypSSHFP
    AlgorithmSchlüsselalgorithmus4 (Ed25519)
    FP TypeHash-Typ2 (SHA-256)
    FingerprintHex-Fingerprinte3b0c44...
    TTLGültigkeitsdauer (Sekunden)3600

    SSHFP-Einträge generieren

    Mit ssh-keygen

    Die einfachste Methode ist ssh-keygen -r:

    # SSHFP-Einträge für alle Host-Keys generieren
    ssh-keygen -r server.example.com
     
    # Ausgabe:
    # 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)

    Vom Remote-Server

    # Fingerprint vom Remote-Server abrufen
    ssh-keyscan server.example.com | ssh-keygen -r server.example.com -f /dev/stdin

    Manuelle Berechnung

    # Für eine bestimmte Schlüsseldatei
    awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | \
      base64 -d | \
      sha256sum | \
      awk '{print $1}'

    SSHFP-Eintrag hinzufügen

    Über das Dashboard

    1. Navigieren Sie zu Ihrer Zone im DNScale-Dashboard
    2. Klicken Sie auf Add Record
    3. Konfigurieren Sie den Eintrag:
      • Name: Geben Sie den Server-Hostnamen ein (z. B. server)
      • Type: Wählen Sie SSHFP
      • Algorithm: Wählen Sie den Schlüsselalgorithmus (RSA, ECDSA, Ed25519)
      • Fingerprint Type: Wählen Sie SHA-256 (empfohlen)
      • Fingerprint: Geben Sie den hex-kodierten Fingerprint ein
      • TTL: Setzen Sie die Cache-Dauer (Standard: 3600)
    4. Klicken Sie auf Create Record

    Über die API

    SSHFP-Eintrag erstellen:

    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
      }'

    Mehrere Schlüsseltypen hinzufügen:

    # Ed25519-Schlüssel
    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-Schlüssel
    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-Antwort:

    {
      "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 konfigurieren

    Um die SSHFP-Verifizierung zu aktivieren, konfigurieren Sie Ihren SSH-Client:

    ~/.ssh/config

    Host *.example.com
        VerifyHostKeyDNS yes

    Kommandozeile

    ssh -o VerifyHostKeyDNS=yes server.example.com

    Verifizierungsstufen

    EinstellungVerhalten
    yesMit SSHFP verifizieren, warnen wenn fehlend
    askMit SSHFP verifizieren, Benutzer fragen wenn fehlend
    noSSHFP nicht verwenden (Standard)

    DNSSEC-Voraussetzung

    Damit SSHFP echte Sicherheit bietet, muss Ihre Zone DNSSEC-signiert sein:

    • Mit DNSSEC: SSHFP liefert kryptografischen Beweis der Serveridentität
    • Ohne DNSSEC: SSHFP ist nur informativ (DNS kann gefälscht werden)

    DNSSEC-Status prüfen:

    dig +dnssec server.example.com SSHFP

    Best Practices

    1. SHA-256 verwenden - Verwenden Sie immer Fingerprint-Typ 2 (SHA-256), nicht SHA-1

    2. Alle Schlüsseltypen veröffentlichen - Fügen Sie SSHFP-Einträge für alle Host-Keys hinzu, die Ihr Server anbietet

    3. DNSSEC aktivieren - Ohne DNSSEC bietet SSHFP nur begrenzten Sicherheitsvorteil

    4. Bei Schlüsselrotation aktualisieren - Wenn Sie Host-Keys neu generieren, aktualisieren Sie die SSHFP-Einträge

    5. Ed25519-Schlüssel verwenden - Modern, sicher und erzeugt kürzere Fingerprints

    6. Eintragserstellung automatisieren - Integrieren Sie die SSHFP-Eintragserstellung in die Server-Bereitstellung

    Host-Key-Rotation

    Bei der Rotation von SSH-Host-Keys:

    1. Neue Schlüssel auf dem Server generieren
    2. Neue SSHFP-Einträge hinzufügen
    3. Auf DNS-Propagierung warten (mindestens die TTL-Dauer)
    4. Schlüssel auf dem Server ersetzen
    5. Alte SSHFP-Einträge entfernen
    # Schritt 1: Neue Schlüssel generieren
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key_new -N ""
     
    # Schritt 2-3: Neuen SSHFP hinzufügen und warten
     
    # Schritt 4: Schlüssel ersetzen
    mv /etc/ssh/ssh_host_ed25519_key_new /etc/ssh/ssh_host_ed25519_key
    systemctl reload sshd
     
    # Schritt 5: Alte SSHFP-Einträge entfernen

    SSHFP-Einträge testen

    # SSHFP-Einträge abfragen
    dig SSHFP server.example.com
     
    # SSH-Verbindung mit SSHFP verifizieren
    ssh -v -o VerifyHostKeyDNS=yes server.example.com
     
    # Lokalen Fingerprint mit DNS vergleichen
    ssh-keygen -r server.example.com

    Verwandte Eintragstypen

    • TLSA - TLS-Zertifikats-Fingerprints (ähnliches Konzept)
    • A - Server-IP-Adresse
    • AAAA - Server-IPv6-Adresse

    Fazit

    SSHFP-Einträge bieten eine DNS-basierte Methode zur SSH-Host-Key-Verifizierung und verringern die Abhängigkeit vom „Trust on First Use"-Modell. In Kombination mit DNSSEC bietet SSHFP einen starken kryptografischen Beweis der Serveridentität. DNScale macht es einfach, SSHFP-Einträge für Ihre Server zu veröffentlichen, mit dedizierten Feldern für Algorithmus- und Fingerprint-Typ-Auswahl.