Après avoir créé une AMI avec un packer basé sur l'AMI Amazon Linux, si je lance une instance de cette AMI et ssh, je vois la paire de clés de packer temporaire dans le fichier ~/.ssh/authorized_keys
, qui est une faille de sécurité. Je m'attendais à ce que ce fichier soit supprimé avant l'enregistrement de l'AMI.
J'ai pu contourner ce problème en supprimant explicitement ~/.ssh/authorized_keys
dans le modèle de packer (détails ci-dessous)
Version de l'emballeur
Packer v0.10.0
Plateforme hôte
CentOS Linux version 7.2.1511 (Core)
Sortie du journal de débogage de PACKER_LOG=1 packer build template.json
.
Voici la sortie du packer :
https://gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee
Désolé, je n'ai pas fait PACKER_LOG=1, mais je peux le relancer si nécessaire
Le _modèle d'exemple le plus simple et les scripts_ nécessaires pour reproduire le bogue
Scénario:
Utilisation du plugin Jenkins Packer et transmission de variables dans le packer via :
-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}'
solution de contournement
J'ai ajouté l'approvisionneur suivant au modèle de packer :
{
"type": "shell",
"inline": [
"rm /home/ec2-user/.ssh/authorized_keys"
]
}
et après le lancement de l'AMI, elle ne contenait que la clé choisie dans l'assistant AWS "lancer l'instance", et non la paire de clés temporaire du packer.
Merci d'avoir pris le temps de signaler cela.
C'est ainsi qu'AWS fonctionne ou plus précisément comment fonctionne cloud-init. Ce que vous décrivez comme une solution de contournement est en fait ce que vous devriez faire.
Désolé de raviver un fil mort, mais depuis que je l'ai trouvé et que j'ai ensuite trouvé plus d'informations sur amazon, j'ai pensé le contribuer ici pour les autres :
https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-manner/
En bref, ils recommandent d'exécuter ce qui suit en tant que root pour supprimer tous les fichiers authorised_keys :
find / -name "authorized_keys" -exec rm -f {} \;
Attention : La commande sur la page liée utilise un mélange de tirets normaux (-) et quelque chose d'autre qui renverra des erreurs. Taper la commande manuellement ou copier celle directement ci-dessus devrait fonctionner.
Je vais verrouiller ce problème car il est fermé depuis _30 jours_ ⏳. Cela aide nos mainteneurs à trouver et à se concentrer sur les problèmes actifs.
Si vous avez trouvé un problème qui ressemble à celui-ci, veuillez ouvrir un nouveau problème et remplir le modèle de problème afin que nous puissions capturer tous les détails nécessaires pour approfondir l'enquête.
Commentaire le plus utile
Merci d'avoir pris le temps de signaler cela.
C'est ainsi qu'AWS fonctionne ou plus précisément comment fonctionne cloud-init. Ce que vous décrivez comme une solution de contournement est en fait ce que vous devriez faire.