Posso compartilhar arquivos de chave privada entre vários computadores / serviços?

110

Todos sabemos como usar chaves públicas / privadas usando SSH, etc. Mas qual é a melhor maneira de usá-las / reutilizá-las? Devo mantê-los em um lugar seguro para sempre? Quero dizer, eu precisava de um par de chaves para acessar o GitHub. Criei um par a partir do zero e usei isso por algum tempo para acessar o GitHub. Então eu formatei meu disco rígido e perdi esse par. Grande coisa, criei um novo par e configurei o GitHub para usar meu novo par. Ou é algo que eu não quero perder?

Eu também precisava de um par de chaves públicas / chaves privadas para acessar os sistemas da empresa. Nosso administrador me pediu minha chave pública e eu criei um novo par e entreguei a ele. Geralmente é melhor criar um novo par para acessar sistemas diferentes ou é melhor ter um par e reutilizá-lo para acessar sistemas diferentes? Da mesma forma, é melhor criar dois pares diferentes e usar um para acessar os sistemas de nossa empresa em casa e o outro para acessar os sistemas do trabalho, ou é melhor ter apenas um par e usá-lo nos dois lugares?

Behrang
fonte
Esta não é uma resposta direta à sua pergunta, mas é aconselhável também ter frases secretas para cada chave. Idealmente, separe as senhas para cada chave (use um gerenciador de senhas). O motivo é o seguinte: Se uma chave privada for comprometida (o laptop foi roubado, o computador foi invadido), você tem um tempo para que a chave seja forçada com força bruta e você pode substituir a chave pública em todas as máquinas que a possuem , antes que o atacante possa. Fonte: help.ubuntu.com/community/SSH/OpenSSH/…
Xandor Schiefer

Respostas:

86

Você definitivamente deve ter chaves privadas separadas por origem . Basicamente, isso significa que geralmente deve haver uma única cópia de cada chave privada (sem contar os backups). Não há problema em usar a mesma chave privada de uma máquina intimamente relacionada, em situações em que a invasão de uma basicamente lhe dá acesso à outra (por exemplo, se elas estiverem uma na outra shosts.equiv). Não use a mesma chave privada em máquinas em regiões diferentes (por exemplo, casa e trabalho), nunca compartilhe uma chave privada entre dois usuários e nunca compartilhe uma chave privada entre um laptop e qualquer outra máquina.

Na maioria das vezes, não vejo sentido em ter chaves privadas diferentes para destinos diferentes. Se uma chave privada for comprometida, todas as outras chaves privadas armazenadas no mesmo diretório certamente também serão comprometidas; portanto, haveria complicações adicionais sem nenhum benefício de segurança.

Se você seguir esses princípios, cada par de chaves identificará um par (máquina, usuário), o que facilita o gerenciamento de autorizações.

Posso pensar em duas exceções à regra geral de uma única chave privada por origem:

  • Se você possui uma chave sem senha que dá acesso apenas a um comando específico em uma máquina específica (por exemplo, um mecanismo de notificação ou backup automatizado), essa chave deve ser diferente da chave de acesso geral ao shell.
  • Se algumas máquinas estiverem intermitentemente conectadas, você poderá ter uma chave privada antiga ao lado de uma nova chave privada, até poder concluir a implantação da nova chave.
Gilles
fonte
5
É assim que eu sempre usei meu par de chaves. Não entendi por que o GitHub defendia a geração de um novo par de chaves nas instruções de configuração. Eu ignorei isso e usei meu par de chaves padrão. Presumo que eles estejam sendo conservadores.
toolbear74
Ok, então você diz "Não use a mesma chave privada em máquinas em diferentes regiões", mas e se o DNS resolver um determinado nome de host para qualquer máquina, dependendo da sua localização? Sem compartilhar a chave privada, recebo avisos ou falhas ao tentar ssh ou rsync para esse nome de host porque o ssh fica confuso por ter duas chaves separadas para o mesmo nome de host.
Michael
@ Michael Eu não entendo o problema que você pode ter com as chaves de usuário no cenário que você descreve, e é sobre isso que trata este tópico. O SSH ficaria confuso sobre as chaves do host , mas, como usuário, o que você vê é a chave pública do host, não a chave privada do host, e o compartilhamento da chave privada do host é perigoso - eu recomendaria apenas se os hosts fossem completamente equivalentes (redundância no caso de um deles falhar) e provavelmente nem mesmo nesse momento.
Gilles
Ah ok. Parece que não há muita distinção clara entre os dois, e presume-se que você saiba de qual deles está sendo falado.
Michael
1
@JSBach Ter chaves separadas por região permite definir permissões mais refinadas (a chave armazenada na região de baixa segurança A é permitida para uso entre máquinas de A, mas o login em B requer um fator de autenticação mais forte) e permite revogá-las separadamente (o domínio A foi comprometido, mas ainda posso fazer login em C de B). O SSO é o caso em que você faz login no sistema de segurança mais alta e, em seguida, pode fazer login em outro lugar. Não sei quais os riscos que eles têm ao ter várias chaves por usuário. Este seria um tópico para segurança da informação .
Gilles
4

Não sei qual é o melhor caminho, mas posso dizer qual é o meu caminho.

Como administrador de sistemas, uso uma chave diferente para acessar cada servidor / serviço como raiz. Dessa forma, se uma chave for perdida ou comprometida, limito o risco a um único servidor e não preciso atualizar todos os meus serviços com chaves novas.

Falando em usuários, eu uso uma chave diferente para cada um deles. Com essa chave, o usuário pode acessar o serviço de que precisa como usuário não privilegiado. Dessa forma, posso conceder ou revogar facilmente o acesso a serviços únicos para cada usuário. Caso o usuário perca sua chave, posso excluí-la de todos os serviços e limitar o risco de acesso não autorizado.

MariusPontmercy
fonte
+1 Vou conversar com meu chefe sobre uma nova política de uso de chaves ;-) por servidor / serviço parece ainda mais seguro do que apenas por rede
Diskilla
1

Acredito que você possa usar a chave privada em qualquer lugar, desde que você coloque uma senha, ou seja, se você deseja compartilhar sua chave privada com poucas máquinas, como laptop 1, 2, área de trabalho 1 e 2, tudo bem.

Pela minha experiência, minha máquina principal é minha área de trabalho, que faço a maior parte do meu trabalho com seu poderoso processador, mas às vezes preciso usar meu laptop no celular, solucionar problemas no data center e outras coisas, para que eu ainda possa acessar qualquer host na qual minha chave pública reside.

Grant Skywalker
fonte
1
Leia a melhor resposta aqui. Você está fazendo isso errado. Não é que você não possa fazer dessa maneira, mas não deveria.
PhilT
2
Não vejo por que todos os votos negativos. As redes da universidade (por exemplo) costumam ter um diretório pessoal em rede; portanto, a mesma chave privada é usada em todos os lugares por um usuário, mesmo nos laptops que você recebe. Contanto que você não o copie sem criptografia pela Internet, acho que tudo bem se você entender o risco. Muito mais conveniente também, não sendo necessário adicionar sua chave pública a 2.000 lugares diferentes apenas porque você se conectou a uma máquina diferente.
Asfand Qazi
Promovido porque você não deveria estar perdendo representante para esta resposta. É sua preferência pessoal, obviamente, o uso de uma chave separada por serviço e máquina, em última análise, fornece mais controle, mas às vezes é apenas uma perda de tempo, dependendo do seu caso de uso.
Daniel Dewhurst
0

Na minha empresa, usamos essas chaves específicas do usuário. Isso significa o caso dois. O usuário tem sua própria chave e essa é usada em todas as máquinas que ele usa para se conectar ao sistema da empresa. minha opinião é usar uma chave para um sistema. Isso significa que você usa essa chave em todas as máquinas necessárias para conectar-se a redes específicas. Para o seu caso, isso seria uma chave para o GitHub e uma chave para o sistema da empresa. Portanto, se seu administrador perguntar novamente, eu daria a ele a mesma chave da última vez. não é novo. Mas não sei se existe uma política de uso comum para essas chaves e estou fazendo isso errado desde então. Essa certeza é possível ;-)

Diskilla
fonte
0

A chave pública que você gerou é para todos. Isso lhes permitirá: a) verificar a autenticação b) criptografar para você

A chave privada é, bem, privada. É apenas para você. E é a chave que você deve fazer backup em algum lugar, em um local seguro. Você também pode criptografá-lo com uma senha segura, se salvá-lo em um pendrive, por exemplo.

A chave pública é sua identidade para os outros. Portanto, não há problema / é melhor usar um par de chaves para tudo, pelo menos quando você não deseja usar uma nova identidade explícita, para que outros não saibam que é você.

Kissaki
fonte
3
Obrigado, mas sua resposta é, principalmente, não relacionada à minha pergunta. Veja a resposta do @ Diskilla.
Behrang 16/09/10