Como posso ser minha própria Autoridade de Certificação (CA) e gerar chaves ssh para meus computadores clientes?

Como posso ser minha própria Autoridade de Certificação (CA) e gerar chaves ssh para meus computadores clientes?

Tenho visto muitos tutoriais sobre como você pode ser sua própria Autoridade Certificadora (CA). Os tutoriais que vi são sobre como gerar chaves SSL e não chaves ssh, então fiquei me perguntando como faço para gerar chaves ssh como essa no Ubuntu Server 14.04 LTS? A razão pela qual quero fazer isso dessa maneira é para poder gerenciar melhor as chaves ssh e para permitir que eu as revogue caso eles saiam da empresa, para que não possam mais acessar aquele servidor.

Responder1

Você não pode. O SSH não analisa uma CRL ou algo semelhante para verificar se uma chave ainda é válida. Se você deseja remover facilmente o acesso aos servidores das pessoas que saem da sua loja, posso pensar em duas opções:

  1. Não gerencie as chaves diretamente, mas gerencie-as por meio de algo como fantoche (isso tem suporte direto para adicionar e remover chaves individuais de/para um authorized_keysarquivo). Dessa forma, você tem apenas um lugar onde precisa adicionar ou remover chaves ssh, e o puppet garante que as alterações sejam ativadas em todos os seus hosts
  2. Desative PubKeyAuthenticationtotalmente, mude para outra coisa para autenticação que tenha um sistema de autenticação central (por exemplo, Kerberos permite autenticação sem senha e possui um banco de dados de autenticação central, mas é um tanto complicado de configurar para os não iniciados).

Responder2

Desde a versão 5.4, o OpenSSH tem seus próprios certificados reais. Eles são mais simples na estrutura do que os certificados X509, mas têm funcionalidades muito semelhantes.

Você cria um par de chaves ssh regular e usa como CA. De preferência, uma CA de host e uma CA de usuário. Então você pode assinar chaves públicas com esta CA usando ssh-keygen. Por exemplo

ssh-keygen -s /path/to/ca_key -I key_id -z serial \
-n principal1,principal2 -V +53w /path/to/user_key.pub

Este comando criará um arquivo chamado user_key-cert.pub que agora é seu certificado. O certificado é válido por 53 semanas e pode ser usado para efetuar login como principal1 e principal2 em qualquer host que confie na CA que assinou a chave.

Para dizer ao sshd para confiar nesta CA, basta consultar ca_key.pub em sshd_config assim

TrustedUserCAKeys /etc/ssh/ca_key.pub

Existem também várias maneiras de revogar certificados ssh (sua pergunta real) e estas são mencionadas nos manuais do openssh. Mas a opção básica em sshd_config é RevokedKeys. Você pode usar arquivos de texto ou KRLs binários para isso.

Para obter mais informações, escrevi alguns guias sobre CAs SSH https://framkant.org/2016/10/setting-up-a-ssh-certificate-authority-ca/

Para um controle de acesso mais refinado e escalonável, dê uma olhada em: https://framkant.org/2017/07/scalable-access-control-using-openssh-certificates/

informação relacionada