- 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
Opiniões no Hacker News
ssh-keygen, o que é vantajoso do ponto de vista do administrador