Vi presentiamo PostScale -- API email per invii transazionali, ricezione e indirizzi mascherati. PostScale

    Cos'è un record SSHFP

    Scopri come i record SSHFP pubblicano le fingerprint delle chiavi host SSH nel DNS per la verifica del server. Include esempi per la dashboard e l'API di DNScale.

    Un record SSHFP (SSH Fingerprint) pubblica la fingerprint della chiave host di un server SSH nel DNS. Questo consente ai client SSH di verificare l'identità di un server tramite il DNS invece di affidarsi esclusivamente al modello "trust on first use" (TOFU).

    Come funzionano i record SSHFP

    Quando ti connetti per la prima volta a un server SSH, vedi un messaggio come:

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

    I record SSHFP eliminano questa incertezza pubblicando la fingerprint attesa nel DNS:

    server.example.com.    3600    SSHFP    4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    I client SSH configurati per usare SSHFP verificheranno automaticamente la chiave del server confrontandola con il DNS.

    Componenti del record

    ComponenteDescrizione
    AlgoritmoTipo di algoritmo della chiave SSH
    Tipo di fingerprintAlgoritmo di hash utilizzato
    FingerprintFingerprint codificata in esadecimale

    Valori dell'algoritmo

    ValoreAlgoritmo
    1RSA
    2DSA (deprecato)
    3ECDSA
    4Ed25519
    6Ed448

    Valori del tipo di fingerprint

    ValoreAlgoritmo di hash
    1SHA-1 (deprecato)
    2SHA-256 (consigliato)

    Casi d'uso comuni

    Server SSH singolo

    Pubblica tutti i tipi di chiave per una copertura completa:

    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

    Server multipli

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

    Formato del record

    CampoDescrizioneEsempio
    NomeHostname del serverserver.example.com
    TipoTipo di recordSSHFP
    AlgoritmoAlgoritmo della chiave4 (Ed25519)
    Tipo FPTipo di hash2 (SHA-256)
    FingerprintFingerprint esadecimalee3b0c44...
    TTLTime to live (secondi)3600

    Generazione dei record SSHFP

    Utilizzando ssh-keygen

    Il metodo più semplice è ssh-keygen -r:

    # Genera i record SSHFP per tutte le chiavi host
    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)

    Da server remoto

    # Ottieni la fingerprint da un server remoto
    ssh-keyscan server.example.com | ssh-keygen -r server.example.com -f /dev/stdin

    Calcolo manuale

    # Per un file chiave specifico
    awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | \
      base64 -d | \
      sha256sum | \
      awk '{print $1}'

    Aggiungere un record SSHFP

    Tramite la dashboard

    1. Naviga alla tua zona nella dashboard di DNScale
    2. Clicca su Add Record
    3. Configura il record:
      • Name: Inserisci l'hostname del server (es. server)
      • Type: Seleziona SSHFP
      • Algorithm: Seleziona l'algoritmo della chiave (RSA, ECDSA, Ed25519)
      • Fingerprint Type: Seleziona SHA-256 (consigliato)
      • Fingerprint: Inserisci la fingerprint codificata in esadecimale
      • TTL: Imposta la durata della cache (predefinito: 3600)
    4. Clicca su Create Record

    Tramite l'API

    Creare un record 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
      }'

    Aggiungere tipi di chiave multipli:

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

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

    Configurazione del client SSH

    Per abilitare la verifica SSHFP, configura il tuo client SSH:

    ~/.ssh/config

    Host *.example.com
        VerifyHostKeyDNS yes

    Riga di comando

    ssh -o VerifyHostKeyDNS=yes server.example.com

    Livelli di verifica

    ImpostazioneComportamento
    yesVerifica con SSHFP, avvisa se mancante
    askVerifica con SSHFP, chiede all'utente se mancante
    noNon usa SSHFP (predefinito)

    Requisito DNSSEC

    Affinché SSHFP fornisca vera sicurezza, la tua zona deve essere firmata con DNSSEC:

    • Con DNSSEC: SSHFP fornisce prova crittografica dell'identità del server
    • Senza DNSSEC: SSHFP è solo informativo (il DNS può essere falsificato)

    Controlla lo stato DNSSEC:

    dig +dnssec server.example.com SSHFP

    Best practice

    1. Usa SHA-256 - Utilizza sempre il tipo di fingerprint 2 (SHA-256), non SHA-1

    2. Pubblica tutti i tipi di chiave - Aggiungi record SSHFP per tutte le chiavi host offerte dal tuo server

    3. Abilita DNSSEC - Senza DNSSEC, SSHFP fornisce un beneficio di sicurezza limitato

    4. Aggiorna alla rotazione delle chiavi - Quando rigeneri le chiavi host, aggiorna i record SSHFP

    5. Usa chiavi Ed25519 - Moderne, sicure e producono fingerprint più brevi

    6. Automatizza la generazione dei record - Includi la creazione dei record SSHFP nel provisioning del server

    Rotazione delle chiavi host

    Quando si ruotano le chiavi host SSH:

    1. Genera le nuove chiavi sul server
    2. Aggiungi i nuovi record SSHFP
    3. Attendi la propagazione DNS (almeno la durata del TTL)
    4. Sostituisci le chiavi sul server
    5. Rimuovi i vecchi record SSHFP
    # Passo 1: Genera le nuove chiavi
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key_new -N ""
     
    # Passo 2-3: Aggiungi il nuovo SSHFP e attendi
     
    # Passo 4: Sostituisci le chiavi
    mv /etc/ssh/ssh_host_ed25519_key_new /etc/ssh/ssh_host_ed25519_key
    systemctl reload sshd
     
    # Passo 5: Rimuovi i vecchi record SSHFP

    Test dei record SSHFP

    # Query dei record SSHFP
    dig SSHFP server.example.com
     
    # Verifica la connessione SSH con SSHFP
    ssh -v -o VerifyHostKeyDNS=yes server.example.com
     
    # Confronta la fingerprint locale con il DNS
    ssh-keygen -r server.example.com

    Tipi di record correlati

    • TLSA - Fingerprint dei certificati TLS (concetto simile)
    • A - Indirizzo IP del server
    • AAAA - Indirizzo IPv6 del server

    Conclusione

    I record SSHFP forniscono un metodo basato sul DNS per la verifica delle chiavi host SSH, riducendo la dipendenza dal modello "trust on first use". Combinati con DNSSEC, gli SSHFP offrono una prova crittografica forte dell'identità del server. DNScale semplifica la pubblicazione dei record SSHFP per i tuoi server, con campi dedicati per la selezione dell'algoritmo e del tipo di fingerprint.