Setelah saya membuat AMI dengan pengepak berdasarkan AMI Amazon Linux, jika saya meluncurkan turunan AMI itu dan ssh in, saya melihat pasangan kunci pengepak sementara di file ~/.ssh/authorized_keys
, yang merupakan lubang keamanan. Saya mengharapkan file itu dihapus sebelum AMI disimpan.
Saya dapat mengatasi ini dengan secara eksplisit menghapus ~/.ssh/authorized_keys
di template packer (detail di bawah)
Versi Pembungkus
Pengemas v0.10.0
Platform tuan rumah
CentOS Linux rilis 7.2.1511 (Inti)
Debug log keluaran dari PACKER_LOG=1 packer build template.json
.
Berikut adalah hasil pengepakan:
https://Gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee
Maaf, saya tidak melakukan PACKER_LOG=1, tetapi dapat menjalankan kembali jika perlu
_Contoh template dan skrip_ yang paling sederhana_ diperlukan untuk mereproduksi bug
Naskah:
Menggunakan plugin Jenkins Packer dan meneruskan variabel ke packer melalui:
-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}'
Solusi
Saya menambahkan penyedia berikut ke template packer:
{
"type": "shell",
"inline": [
"rm /home/ec2-user/.ssh/authorized_keys"
]
}
dan setelah meluncurkan AMI, itu hanya berisi kunci yang dipilih dalam wizard "peluncuran instans" AWS, dan bukan pasangan kunci sementara pengepakan.
Terima kasih telah meluangkan waktu untuk melaporkan ini.
Beginilah cara kerja AWS atau lebih spesifik lagi cara kerja cloud-init. Apa yang Anda gambarkan sebagai solusi sebenarnya adalah apa yang harus Anda lakukan.
Maaf untuk menghidupkan kembali utas yang mati, namun karena saya menemukannya dan kemudian menemukan lebih banyak informasi dari amazon, saya pikir saya akan berkontribusi di sini untuk orang lain:
https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-manner/
Singkatnya, mereka merekomendasikan menjalankan yang berikut ini sebagai root untuk menghapus semua file otor_keys:
find / -name "authorized_keys" -exec rm -f {} \;
Perhatian: Perintah pada halaman tertaut menggunakan campuran tanda hubung normal (-) dan sesuatu yang lain yang akan mengembalikan kesalahan. Mengetik perintah secara manual atau menyalin yang langsung di atas akan berfungsi.
Saya akan mengunci masalah ini karena telah ditutup selama _30 hari_ . Ini membantu pengelola kami menemukan dan fokus pada masalah aktif.
Jika Anda menemukan masalah yang mirip dengan ini, buka masalah baru dan lengkapi template masalah sehingga kami dapat menangkap semua detail yang diperlukan untuk menyelidiki lebih lanjut.
Komentar yang paling membantu
Terima kasih telah meluangkan waktu untuk melaporkan ini.
Beginilah cara kerja AWS atau lebih spesifik lagi cara kerja cloud-init. Apa yang Anda gambarkan sebagai solusi sebenarnya adalah apa yang harus Anda lakukan.