Como gerenciar com segurança chaves privadas para pares de chaves gerenciados pelo EC2?

8

Para iniciar uma instância do EC2, você precisa de um par de chaves. Como você lida com a situação em que um engenheiro com acesso à chave privada desse par de chaves sai da empresa? Funcionaria para adicionar acesso ssh individual e desautorizar o par de chaves inicial, imediatamente após o lançamento da instância?

Jeff
fonte
1
reimplantar novas instâncias das instâncias do EC2 e remover as antigas com o par de chaves antigo?
sdolgy

Respostas:

10

Quando um funcionário ou contratado sai da empresa, é necessário desativar qualquer acesso privilegiado que eles tinham aos recursos da empresa. Isso inclui (mas não está limitado a) suas principais preocupações ssh:

  1. Remova a chave pública ssh de todos os arquivos allowed_keys em todas as instâncias em execução. Substitua-os por uma chave ssh pública recém-gerada, conhecida apenas pelas pessoas que devem ter acesso.

  2. Remova todas as entradas de pares de chaves no EC2 conhecidas pelos que partiram para que novas instâncias não possam ser iniciadas com esses pares de chaves. Substitua-os por novas entradas de pares de chaves, talvez com os mesmos nomes, se o seu

O método alternativo que você propõe também é bom e é o que eu uso: Desabilite a chave ssh inicial e adicione chaves públicas individuais do ssh para cada desenvolvedor para que eles possam efetuar login com sua chave ssh privada normal. Isso pode ser feito para fazer login em uma conta compartilhada ou com cada desenvolvedor obtendo sua própria conta de usuário individual (minha preferida).

Após a saída de um funcionário, você não apenas terá que limpar os servidores em execução, mas também o processo que adiciona as chaves ssh aos novos servidores. E, quando um funcionário ingressar, você precisará fazer o inverso: adicione chaves ssh aos servidores em execução e atualize o novo processo do servidor.

Pode ser um pouco mais trabalhoso manter muitas chaves ssh em vários servidores, mas é aí que entra a automação.

Eric Hammond
fonte
3

Você nunca deve fornecer essa chave privada aos usuários finais. Os usuários finais devem ser provisionados com seus próprios meios de logon, como autenticação de chave pública (usando sua chave privada protegida por senha da OWN), seguida de autorização LDAP.

Distribuir a chave privada fornecida pelo ec2 torna impossível o provisionamento de usuários. É exatamente por isso que o uso de credenciais compartilhadas é completamente proibido por todos os regulamentos de segurança e conformidade.

Quando você permite o uso de credenciais compartilhadas:

  • É impossível usar logs para saber quem realmente está / esteve em um host
  • É impossível aprovisionar um usuário sem aprovisionar todos os usuários (incluindo acesso de emergência, que é realmente a chave privada EC2)
kgilpin
fonte
2

Consulte a documentação da Amazon sobre rotação de credenciais de acesso .

Use algo como fantoche ou script ssh sólido para percorrer e substituir todas as instâncias da chave antiga, se você não quiser relançar tudo ... ou apenas relançar tudo.

Jeff Ferland
fonte
Eu acho que ele não fala sobre as chaves de conta que você pode girar, mas mais sobre a chave privada .pem para fazer logon no ssh.
2
O login ssh é controlado pelas entradas ~ / .authorized_keys. Essas são inicialmente propagadas pelo processo de lançamento do EC2, daí a necessidade de usar fantoches ou scripts para substituí-los ou reiniciar.
Jeff Ferland 11/10
bem. Eu não sabia disso :).
Sim está certo. Para contas normais, o sshd poderia usar o LDAP e, assim, poder desativar um usuário uma vez do LDAP. Mas as chaves de inicialização são gerenciadas pela AWS. Então, acho que a solução fantoche / chef de remover uma chave de inicialização do arquivo allowed_keys de cada servidor é o caminho a seguir. Acho que eu também gostaria que cada administrador tivesse sua própria chave de inicialização da AWS, então estou removendo apenas o acesso de um único usuário por vez.
Jeff
@ Jeff Se o SSH estiver configurado para fazer referência ao LDAP e ignorar o número_computador autorizado, a chave de inicialização será importante apenas para controlar o início e o encerramento da instância. Isso depende de como você constrói sua imagem.
quer