10 pontos por GN⁺ 2025-03-27 | 1 comentários | Compartilhar no WhatsApp
  • A Cloudflare lançou o OPKSSH (OpenPubkey SSH) como open source
  • O OPKSSH permite gerar e usar chaves SSH automaticamente por meio de login SSO baseado em OpenID Connect
  • Os usuários não precisam mais gerenciar manualmente chaves públicas/privadas SSH nem distribuí-las aos servidores
  • É possível introduzir uma abordagem de acesso baseada em identidade na autenticação SSH sem modificar o protocolo SSH

Explicação de fundo sobre SSO e OpenID Connect

  • SSO (Single Sign-On) é um método de autenticação que permite ao usuário acessar vários sistemas após fazer login uma única vez
  • OpenID Connect é um protocolo usado principalmente para SSO, emitindo tokens de ID com informações do usuário
  • O token de ID contém informações como o e-mail do usuário, mas não inclui a chave pública → por isso não pode ser usado diretamente em protocolos de segurança como o SSH

Introdução ao OpenPubkey

  • O OpenPubkey inclui a chave pública do usuário no token de ID, transformando-o em um PK Token
  • Com isso, é possível atestar que “o Google autentica que o usuário alice@example.com está usando a chave pública 0x123”
  • Pode ser aplicado sem alterações ao protocolo OpenID Connect existente

Papel e vantagens do OPKSSH

  • O OPKSSH integra o OpenPubkey ao SSH e gera chaves SSH efêmeras por meio de login SSO
  • Funciona sem alterações no protocolo SSH existente e pode ser aplicado adicionando apenas duas linhas ao arquivo de configuração
  • Melhoria de segurança

    • Usa chaves SSH efêmeras em vez de chaves de longa duração → reduz o impacto em caso de vazamento e permite limitar a vida útil da chave
    • Expira em 24 horas por padrão, com possibilidade de ajuste via configuração
  • Melhoria na conveniência do usuário

    • Basta executar o comando opkssh login para gerar a chave SSH e fazer login
    • Não é necessário copiar a chave privada SSH para vários computadores
  • Melhoria na visibilidade administrativa

    • Em vez de acesso baseado em chave, usa acesso baseado em endereço de e-mail → fica claro rastrear quem é o usuário
    • Basta adicionar um e-mail como bob@example.com ao arquivo de permissões de acesso para liberar o acesso imediatamente

Como o OPKSSH funciona

  • Quando o usuário executa opkssh login:
    • Gera uma chave pública/privada SSH temporária
    • Faz login no OpenID Provider (como o Google) pelo navegador
    • Em caso de sucesso, gera um PK Token contendo a chave pública e a identidade do usuário por meio do protocolo OpenPubkey
    • Salva no diretório .ssh o arquivo de chave pública com o PK Token incluído e o arquivo de chave privada
  • Ao estabelecer a conexão SSH:
    • O cliente SSH envia ao servidor SSH a chave pública com o PK Token incluído
    • O servidor valida a chave pública por meio do verificador OpenPubkey configurado com AuthorizedKeysCommand
    • Se o PK Token for válido e o e-mail estiver na lista de acesso permitido, a conexão é autorizada

Resolução de problemas técnicos

  • Transmissão do PK Token: usa o campo de extensão do certificado SSH para incluir o PK Token na chave pública SSH
  • Validação no servidor: usa AuthorizedKeysCommand para delegar a validação da chave pública a um programa customizado (OpenPubkey verifier)
  • Verificação de correspondência da chave pública: confirma se a chave pública que protege a sessão SSH corresponde à chave dentro do PK Token

Tornando open source e seu significado

  • O OPKSSH foi publicado no GitHub sob a licença Apache 2.0
  • Antes estava em nível de protótipo, mas agora oferece uma release estável com funcionalidade SSH completa
  • A Cloudflare não fará manutenção nem dará garantias sobre o projeto, mas doou o código para a comunidade OpenPubkey

Principais melhorias

  • Adição de funcionalidade SSH pronta para uso real
  • Fornecimento de script de instalação automática
  • Inclusão de ferramentas de configuração aprimoradas

1 comentários

 
GN⁺ 2025-03-27
Opiniões no Hacker News
  • Certificados SSH já existem há muito tempo, e é possível criar sua própria CA SSH para emitir certificados de curta duração
    • Existem várias opções para obter certificados automaticamente, e uma delas é o projeto step-ca
    • O step-ca pode se comunicar com sistemas OAUTH/OIDC e provedores de nuvem
    • Também existem soluções comerciais
  • Prefere a abordagem de usar CA SSH e hardware
    • Não é necessário chamar código de terceiros a partir do SSHD, o que minimiza a superfície e os vetores de ataque
    • É possível evitar completamente vazamento de chaves ou ataques de reutilização
    • Tudo pode ser feito com o comando padrão ssh-keygen, o que é vantajoso do ponto de vista do administrador
  • Tem dúvidas sobre a alegação de que tokens de ID não incluem a chave pública do usuário e, por isso, não podem proteger diretamente o protocolo SSH
    • A autenticação SSH não precisa necessariamente ser baseada em chaves
    • Pergunta se isso poderia ter sido implementado via GSSAPI
  • Usa o Teleport para fazer autenticação SSH baseada em certificados e emitir certificados de curta duração com autenticação SSO
    • Há vantagens em controle de acesso e logs de auditoria
  • Está desenvolvendo uma alternativa ao SSH chamada Terminalwire
    • É adequada para executar comandos únicos em SaaS a partir da workstation do desenvolvedor
    • Assim como o SSH, faz streaming de stdio do servidor para o cliente, mas oferece comandos adicionais
  • Compara com a tecnologia de chaves SSH da Userify
    • A Userify usa chaves comuns distribuídas e centraliza apenas o plano de controle
    • Ainda é possível fazer login no servidor mesmo quando o servidor de autenticação está offline
    • Há funções para encerrar sessões de usuário e excluir contas
  • Como autor da postagem no blog e principal contribuidor do opkssh, está pronto para responder perguntas
  • Considera difícil entender a diferença em relação a operar uma CA SSH com suporte a OIDC
    • O servidor só precisa confiar na chave da CA
  • Existe um fork do OpenSSH que oferece suporte a CA de certificados X.509
    • Acha interessante que foi apresentado como inovador um padrão que retorna a chave pública em token e um binário de autenticação no lado do servidor para fazer login via SSH