10 puntos por GN⁺ 2025-03-27 | 1 comentarios | Compartir por WhatsApp
  • Cloudflare publicó OPKSSH (OpenPubkey SSH) como código abierto
  • OPKSSH permite generar y usar claves SSH automáticamente mediante inicio de sesión SSO basado en OpenID Connect
  • Los usuarios ya no necesitan administrar manualmente sus claves pública/privada de SSH ni desplegarlas en los servidores
  • Es posible introducir un enfoque de acceso basado en identidad en la autenticación SSH sin modificar el protocolo SSH

Explicación de fondo sobre SSO y OpenID Connect

  • SSO (Single Sign-On) es un método de autenticación que permite a un usuario acceder a varios sistemas después de iniciar sesión una sola vez
  • OpenID Connect es un protocolo usado principalmente para SSO, que emite tokens de ID con información del usuario
  • Un token de ID contiene información como el correo electrónico del usuario, pero no incluye una clave pública → por eso no puede usarse directamente en protocolos de seguridad como SSH

Introducción a OpenPubkey

  • OpenPubkey incluye la clave pública del usuario dentro del token de ID para crear un PK Token
  • Gracias a esto, puede certificar algo como: “Google autentica que el usuario alice@example.com está usando la clave pública 0x123”
  • Puede aplicarse al protocolo OpenID Connect existente sin hacer cambios

Rol y ventajas de OPKSSH

  • OPKSSH integra OpenPubkey con SSH para generar claves SSH de un solo uso mediante inicio de sesión SSO
  • Funciona sin cambios en el protocolo SSH existente y puede aplicarse agregando solo dos líneas al archivo de configuración
  • Mejora de seguridad

    • Usa claves SSH de un solo uso en lugar de claves de larga duración → reduce el impacto si una clave se filtra y permite limitar su vida útil
    • Expiran en 24 horas por defecto, aunque puede cambiarse por configuración
  • Mayor comodidad para el usuario

    • Con solo ejecutar el comando opkssh login, se pueden generar las claves SSH e iniciar sesión
    • No hace falta copiar la clave privada de SSH a varias computadoras
  • Mejor visibilidad para la administración

    • En lugar de acceso basado en claves, usa acceso basado en dirección de correo electrónico → permite rastrear con claridad quién es el usuario
    • Basta con agregar un correo como bob@example.com al archivo de permisos de acceso para habilitar el acceso

Cómo funciona OPKSSH

  • Cuando el usuario ejecuta opkssh login:
    • Se generan una clave pública y una clave privada SSH temporales
    • Se inicia sesión en un OpenID Provider (como Google) desde el navegador
    • Si el inicio de sesión tiene éxito, se genera un PK Token con la clave pública y la identidad del usuario mediante el protocolo OpenPubkey
    • En el directorio .ssh se guardan un archivo de clave pública que incluye el PK Token y un archivo de clave privada
  • Al establecer una conexión SSH:
    • El cliente SSH envía al servidor SSH la clave pública que incluye el PK Token
    • El servidor valida la clave pública mediante el verificador de OpenPubkey configurado con AuthorizedKeysCommand
    • Si el PK Token es válido y el correo electrónico está en la lista de acceso permitido, se aprueba la conexión

Resolución de problemas técnicos

  • Transmisión del PK Token: el PK Token se incluye en la clave pública SSH usando el campo de extensiones del certificado SSH
  • Validación en el servidor: se usa AuthorizedKeysCommand para delegar la validación de la clave pública a un programa personalizado (OpenPubkey verifier)
  • Verificación de coincidencia de clave pública: se comprueba que la clave pública que protege la sesión SSH coincida con la clave incluida en el PK Token

La apertura del código y su significado

  • OPKSSH se publicó en GitHub bajo licencia Apache 2.0
  • Antes estaba a nivel de prototipo, pero ahora ofrece una versión estable con funcionalidades SSH completas
  • Cloudflare no lo mantiene ni lo garantiza, pero donó el código a la comunidad de OpenPubkey

Principales mejoras

  • Se añadieron funciones SSH listas para uso real
  • Se proporciona un script de instalación automática
  • Incluye herramientas de configuración mejoradas

1 comentarios

 
GN⁺ 2025-03-27
Opiniones de Hacker News
  • Los certificados SSH existen desde hace mucho tiempo, y se puede crear una CA SSH propia para emitir certificados de corta duración
    • Hay varias opciones para obtener certificados automáticamente, una de ellas es el proyecto step-ca
    • step-ca puede comunicarse con sistemas OAUTH/OIDC y con proveedores de nube
    • También existen soluciones comerciales
  • Prefiere el enfoque de usar una CA SSH y hardware
    • No hace falta invocar código de terceros desde SSHD, lo que minimiza la superficie y los vectores de ataque
    • Puede prevenir por completo la filtración de claves o los ataques de reutilización
    • Todo se puede hacer con el comando estándar ssh-keygen, lo cual es conveniente desde la perspectiva del administrador
  • Cuestiona la afirmación de que un token de ID no puede proteger directamente el protocolo SSH porque no incluye la clave pública del usuario
    • La autenticación SSH no necesariamente tiene que estar basada en claves
    • Se pregunta si podría haberse implementado mediante GSSAPI
  • Usa Teleport para realizar autenticación SSH basada en certificados, emitiendo certificados de corta duración con autenticación SSO
    • Tiene ventajas de control de acceso y registros de auditoría
  • Está desarrollando una alternativa a SSH llamada Terminalwire
    • Es adecuada para ejecutar comandos de un solo uso sobre SaaS desde estaciones de trabajo de desarrolladores
    • Es similar a SSH en que transmite stdio del servidor al cliente, pero ofrece comandos adicionales
  • Lo compara con la tecnología de claves SSH de Userify
    • Userify usa claves normales distribuidas y solo centraliza el plano de control
    • Se puede iniciar sesión en los servidores incluso cuando el servidor de autenticación está fuera de línea
    • Tiene funciones para terminar sesiones de usuario y eliminar cuentas
  • Como autor de la publicación del blog y principal colaborador de opkssh, está listo para responder preguntas
  • Le cuesta ver la diferencia con operar una CA SSH que soporte OIDC
    • Los servidores solo necesitan confiar en la clave de la CA
  • Existe un fork de OpenSSH que soporta una CA de certificados X.509
    • Le parece interesante que se presente como innovador un estándar que devuelve la clave pública como token y un binario de autenticación del lado del servidor que la usa para iniciar sesión por SSH