Depois de criar um AMI com empacotador baseado no Amazon Linux AMI, se eu iniciar uma instância desse AMI e ssh, estou vendo o par de chaves do empacotador temporário no arquivo ~/.ssh/authorized_keys
, que é uma falha de segurança. Eu esperava que esse arquivo fosse excluído antes que o AMI fosse salvo.
Consegui solucionar isso excluindo explicitamente ~/.ssh/authorized_keys
no modelo do empacotador (detalhes abaixo)
Versão do empacotador
Packer v0.10.0
Plataforma de hospedagem
CentOS Linux versão 7.2.1511 (Core)
Saída do log de depuração de PACKER_LOG=1 packer build template.json
.
Aqui está a saída do empacotador:
https://gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee
Desculpe, não fiz PACKER_LOG = 1, mas posso executar novamente se necessário
O _modelo de exemplo mais simples e scripts_ necessários para reproduzir o bug
Roteiro:
Usando o plug-in Jenkins Packer e passando variáveis para o empacotador por meio de:
-var 'source_ami=${source_ami}' -var 'ssh_username=${ssh_username}' -var 'couchbase_server_package_name=${couchbase_server_package_name}' -var 'couchbase_server_package_url=${couchbase_server_package_url}' -var 'couchbase_sync_gateway_package_base_url=${couchbase_sync_gateway_package_base_url}' -var 'couchbase_sync_gateway_package=${couchbase_sync_gateway_package}' -var 'couchbase_server_version=${couchbase_server_version}' -var 'couchbase_sync_gateway_version=${couchbase_sync_gateway_version}' -var 'couchbase_server_edition=${couchbase_server_edition}' -var 'sync_gateway_edition=${sync_gateway_edition}'
Gambiarra
Eu adicionei o seguinte provisionador ao modelo de empacotador:
{
"type": "shell",
"inline": [
"rm /home/ec2-user/.ssh/authorized_keys"
]
}
e depois de iniciar o AMI, ele continha apenas a chave escolhida no assistente de "instância de inicialização" da AWS, e não o par de chaves temporário do empacotador.
Obrigado por dedicar seu tempo relatando isso.
É assim que a AWS funciona ou, mais especificamente, como funciona o cloud-init. O que você descreve como uma solução alternativa é, na verdade, o que você deve fazer.
Desculpe por reviver um tópico morto, no entanto, como eu o encontrei e depois encontrei mais informações da amazon, pensei em contribuir com isso aqui para outros:
https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-manner/
Resumindo, eles recomendam executar o seguinte como root para remover todos os arquivos authorized_keys:
find / -name "authorized_keys" -exec rm -f {} \;
Cuidado: O comando na página vinculada está usando uma mistura de traços normais (-) e algo mais que retornará erros. Digitar o comando manualmente ou copiar o comando diretamente acima deve funcionar.
Vou bloquear este problema porque ele está fechado há _30 dias_ ⏳. Isso ajuda nossos mantenedores a encontrar e focar nas questões ativas.
Se você encontrou um problema semelhante a este, abra um novo problema e preencha o modelo de problema para que possamos capturar todos os detalhes necessários para uma investigação mais aprofundada.
Comentários muito úteis
Obrigado por dedicar seu tempo relatando isso.
É assim que a AWS funciona ou, mais especificamente, como funciona o cloud-init. O que você descreve como uma solução alternativa é, na verdade, o que você deve fazer.