Presentamos PostScale -- API de correo para envíos transaccionales, recepción y direcciones enmascaradas. PostScale

    Qué es un registro SSHFP

    Aprende cómo los registros SSHFP publican huellas digitales de claves de host SSH en DNS para la verificación de servidores. Incluye ejemplos para el panel de DNScale y la API.

    Un registro SSHFP (SSH Fingerprint) publica la huella digital de la clave de host de un servidor SSH en DNS. Esto permite a los clientes SSH verificar la identidad de un servidor a través de DNS en lugar de depender únicamente del modelo "confiar en el primer uso" (TOFU).

    Cómo funcionan los registros SSHFP

    Cuando te conectas por primera vez a un servidor SSH, ves un mensaje como:

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

    Los registros SSHFP eliminan esta incertidumbre publicando la huella digital esperada en DNS:

    server.example.com.    3600    SSHFP    4 2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    Los clientes SSH configurados para usar SSHFP verificarán la clave del servidor contra DNS automáticamente.

    Componentes del registro

    ComponenteDescripción
    AlgoritmoTipo de algoritmo de clave SSH
    Tipo de huellaAlgoritmo hash utilizado
    Huella digitalHuella codificada en hexadecimal

    Valores de algoritmo

    ValorAlgoritmo
    1RSA
    2DSA (obsoleto)
    3ECDSA
    4Ed25519
    6Ed448

    Valores de tipo de huella

    ValorAlgoritmo hash
    1SHA-1 (obsoleto)
    2SHA-256 (recomendado)

    Casos de uso comunes

    Servidor SSH único

    Publica todos los tipos de clave para cobertura 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

    Múltiples servidores

    server1.example.com.    3600    SSHFP    4 2 hash1...
    server2.example.com.    3600    SSHFP    4 2 hash2...
    git.example.com.        3600    SSHFP    4 2 hash3...

    Host bastión/salto

    bastion.example.com.    3600    SSHFP    4 2 abc123...
    bastion.example.com.    3600    SSHFP    3 2 def456...

    Formato del registro

    CampoDescripciónEjemplo
    NombreNombre de host del servidorserver.example.com
    TipoTipo de registroSSHFP
    AlgoritmoAlgoritmo de clave4 (Ed25519)
    Tipo FPTipo de hash2 (SHA-256)
    HuellaHuella hexadecimale3b0c44...
    TTLTiempo de vida (segundos)3600

    Generar registros SSHFP

    Usando ssh-keygen

    El método más sencillo es ssh-keygen -r:

    # Generar registros SSHFP para todas las claves de host
    ssh-keygen -r server.example.com
     
    # Salida:
    # 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)

    Desde servidor remoto

    # Obtener huella desde servidor remoto
    ssh-keyscan server.example.com | ssh-keygen -r server.example.com -f /dev/stdin

    Cálculo manual

    # Para un archivo de clave específico
    awk '{print $2}' /etc/ssh/ssh_host_ed25519_key.pub | \
      base64 -d | \
      sha256sum | \
      awk '{print $1}'

    Añadir un registro SSHFP

    Usando el panel de control

    1. Navega a tu zona en el panel de DNScale
    2. Haz clic en Add Record
    3. Configura el registro:
      • Name: Introduce el nombre de host del servidor (ej., server)
      • Type: Selecciona SSHFP
      • Algorithm: Selecciona el algoritmo de clave (RSA, ECDSA, Ed25519)
      • Fingerprint Type: Selecciona SHA-256 (recomendado)
      • Fingerprint: Introduce la huella codificada en hexadecimal
      • TTL: Establece la duración de caché (por defecto: 3600)
    4. Haz clic en Create Record

    Usando la API

    Crear un registro 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
      }'

    Añadir múltiples tipos de clave:

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

    Respuesta de la 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
        }
      }
    }

    Configurar el cliente SSH

    Para habilitar la verificación SSHFP, configura tu cliente SSH:

    ~/.ssh/config

    Host *.example.com
        VerifyHostKeyDNS yes

    Línea de comandos

    ssh -o VerifyHostKeyDNS=yes server.example.com

    Niveles de verificación

    ConfiguraciónComportamiento
    yesVerificar con SSHFP, advertir si falta
    askVerificar con SSHFP, preguntar al usuario si falta
    noNo usar SSHFP (por defecto)

    Requisito de DNSSEC

    Para que SSHFP proporcione seguridad real, tu zona debe estar firmada con DNSSEC:

    • Con DNSSEC: SSHFP proporciona prueba criptográfica de la identidad del servidor
    • Sin DNSSEC: SSHFP es solo informativo (el DNS puede ser suplantado)

    Verificar el estado de DNSSEC:

    dig +dnssec server.example.com SSHFP

    Mejores prácticas

    1. Usar SHA-256 - Siempre usar tipo de huella 2 (SHA-256), no SHA-1

    2. Publicar todos los tipos de clave - Añadir registros SSHFP para todas las claves de host que ofrece tu servidor

    3. Habilitar DNSSEC - Sin DNSSEC, SSHFP proporciona un beneficio de seguridad limitado

    4. Actualizar en rotación de claves - Cuando regeneres claves de host, actualiza los registros SSHFP

    5. Usar claves Ed25519 - Modernas, seguras y producen huellas más cortas

    6. Automatizar la generación de registros - Incluye la creación de registros SSHFP en el aprovisionamiento de servidores

    Rotación de claves de host

    Al rotar claves de host SSH:

    1. Generar nuevas claves en el servidor
    2. Añadir nuevos registros SSHFP
    3. Esperar la propagación DNS (al menos la duración del TTL)
    4. Reemplazar las claves en el servidor
    5. Eliminar los registros SSHFP antiguos
    # Paso 1: Generar nuevas claves
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key_new -N ""
     
    # Paso 2-3: Añadir nuevo SSHFP y esperar
     
    # Paso 4: Reemplazar claves
    mv /etc/ssh/ssh_host_ed25519_key_new /etc/ssh/ssh_host_ed25519_key
    systemctl reload sshd
     
    # Paso 5: Eliminar registros SSHFP antiguos

    Probar registros SSHFP

    # Consultar registros SSHFP
    dig SSHFP server.example.com
     
    # Verificar conexión SSH con SSHFP
    ssh -v -o VerifyHostKeyDNS=yes server.example.com
     
    # Comparar huella local con DNS
    ssh-keygen -r server.example.com

    Tipos de registro relacionados

    • TLSA - Huellas de certificados TLS (concepto similar)
    • A - Dirección IP del servidor
    • AAAA - Dirección IPv6 del servidor

    Conclusión

    Los registros SSHFP proporcionan un método basado en DNS para la verificación de claves de host SSH, reduciendo la dependencia del modelo "confiar en el primer uso". Combinados con DNSSEC, SSHFP ofrece una prueba criptográfica sólida de la identidad del servidor. DNScale facilita la publicación de registros SSHFP para tus servidores, con campos dedicados para la selección de algoritmo y tipo de huella.