Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Rekomendasi untuk membuat Linux bersama AMIs
Gunakan panduan berikut untuk mengurangi permukaan serangan dan meningkatkan keandalan yang AMIs Anda buat.
penting
Tidak ada daftar pedoman keamanan yang lengkap. Bangun AMIs bersama Anda dengan cermat dan luangkan waktu untuk mempertimbangkan di mana Anda data sensitif Anda terekspos.
Daftar Isi
Jika Anda membangun AMIs AWS Marketplace, lihat Praktik terbaik untuk membangun AMIs di Panduan AWS Marketplace Penjual untuk pedoman, kebijakan, dan praktik terbaik.
Untuk informasi tambahan tentang berbagi AMIs dengan aman, lihat artikel berikut:
Nonaktifkan login jarak jauh berbasis kata sandi untuk pengguna root
Menggunakan kata sandi root tetap untuk AMI publik adalah risiko keamanan yang segera diketahui. Bahkan mengandalkan pengguna untuk mengubah kata sandi setelah masuk pertama membuka jendela kesempatan kecil potensi penyalahgunaan.
Untuk mengatasi masalah ini, nonaktifkan masuk jarak jauh berbasis kata sandi untuk pengguna root.
Untuk menonaktifkan login jarak jauh berbasis kata sandi untuk pengguna root
-
Buka file
/etc/ssh/sshd_config
dengan teks editor dan temukan baris berikut:#PermitRootLogin yes
-
Ubah baris menjadi:
PermitRootLogin without-password
Lokasi file konfigurasi ini mungkin berbeda untuk distribusi Anda, atau jika Anda tidak menjalankan OpenSSH. Jika demikian, berkonsultasilah dengan dokumentasi yang relevan.
Nonaktifkan akses root lokal
Saat Anda bekerja dengan shared AMIs, praktik terbaik adalah menonaktifkan login root langsung. Caranya, masuk ke instans yang sedang berjalan dan keluarkan perintah berikut:
[ec2-user ~]$
sudo passwd -l root
catatan
Perintah ini tidak memengaruhi penggunaan sudo
.
Hapus pasangan kunci host SSH
Jika Anda berencana untuk berbagi AMI yang berasal dari AMI publik, hapus pasangan kunci host SSH yang ada terletak di /etc/ssh
. Ini memaksa SSH untuk menghasilkan pasangan kunci SSH unik baru ketika seseorang meluncurkan instance menggunakan AMI Anda, meningkatkan keamanan dan mengurangi kemungkinan "" man-in-the-middle serangan.
Hapus semua file kunci berikut yang ada di sistem Anda.
-
ssh_host_dsa_key
-
ssh_host_dsa_key.pub
-
ssh_host_key
-
ssh_host_key.pub
-
ssh_host_rsa_key
-
ssh_host_rsa_key.pub
-
ssh_host_ecdsa_key
-
ssh_host_ecdsa_key.pub
-
ssh_host_ed25519_key
-
ssh_host_ed25519_key.pub
Anda dapat menghapus semua file ini dengan aman dengan perintah berikut.
[ec2-user ~]$
sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
Awas
Utilitas penghapusan aman, seperti shred
, tidak boleh menghapus semua salinan file dari media penyimpanan Anda. Salinan file tersembunyi dapat dibuat dengan penjurnalan sistem file (termasuk Amazon Linux default ext4), snapshot, pencadangan, RAID, dan cache sementara. Untuk informasi selengkapnya, lihat dokumentasi shred
penting
Jika Anda lupa menghapus pasangan kunci host SSH yang ada dari AMI publik, proses audit rutin kami memberi tahu Anda dan semua pelanggan yang menjalankan instans AMI Anda tentang potensi risiko keamanan. Setelah masa tenggang singkat, kami menandai AMI sebagai privat.
Instal kredensial kunci publik
Setelah mengonfigurasi AMI untuk mencegah masuk menggunakan kata sandi, Anda harus memastikan pengguna dapat masuk menggunakan mekanisme lain.
Amazon EC2 memungkinkan pengguna untuk menentukan nama key pair public-private saat meluncurkan instance. Ketika nama key pair yang valid diberikan ke panggilan RunInstances
API (atau melalui alat API baris perintah), kunci publik (bagian dari key pair yang EC2 disimpan Amazon di server setelah panggilan ke CreateKeyPair
orImportKeyPair
) dibuat tersedia untuk instance melalui kueri HTTP terhadap metadata instance.
Untuk masuk melalui SSH, AMI Anda harus mengambil nilai kunci saat boot dan menambahkannya ke /root/.ssh/authorized_keys
(atau setara untuk akun pengguna lain di AMI). Pengguna dapat meluncurkan instans AMI Anda dengan pasangan kunci dan masuk tanpa yang memerlukan kata sandi root.
Banyak distribusi, termasuk Amazon Linux dan Ubuntu, menggunakan paket cloud-init
untuk menginjeksikan kredensial kunci publik untuk pengguna yang telah dikonfigurasi. Jika distribusi Anda tidak mendukung cloud-init
, Anda dapat menambahkan kode berikut ke skrip penyalaan sistem (seperti /etc/rc.local
) untuk menarik kunci publik yang Anda tentukan pada saat peluncuran untuk pengguna root.
catatan
Dalam contoh berikut, alamat IP http://169.254.169.254/ adalah alamat tautan lokal dan hanya valid dari instans.
Hal ini dapat diterapkan ke pengguna; Anda tidak perlu membatasinya ke pengguna root
.
catatan
Pemaketan ulang instans berdasarkan AMI ini mencakup kunci yang digunakan untuk meluncurkan. Untuk mencegah inklusi kunci, Anda harus membersihkan (atau menghapus) file authorized_keys
atau mengecualikan file ini dari pemaketan ulang.
Nonaktifkan pemeriksaan DNS sshd (opsional)
Menonaktifkan pemeriksaan DNS sshd akan sedikit melemahkan keamanan sshd. Namun, jika resolusi DNS gagal, login SSH masih berfungsi. Jika Anda tidak menonaktifkan pemeriksaan sshd, kegagalan resolusi DNS akan mencegah semua login.
Untuk menonaktifkan pemeriksaan DNS sshd
-
Buka file
/etc/ssh/sshd_config
dengan editor teks dan cari baris berikut:#UseDNS yes
-
Ubah baris menjadi:
UseDNS no
catatan
Lokasi file konfigurasi ini mungkin berbeda untuk distribusi Anda, atau jika Anda tidak menjalankan OpenSSH. Jika demikian, berkonsultasilah dengan dokumentasi yang relevan.
Hapus data sensitif
Kami tidak sarankan Anda menyimpan data atau perangkat lunak sensitif di AMI apa pun yang Anda bagikan. Pengguna yang meluncurkan AMI bersama mungkin dapat memaketkannya kembali dan mendaftarkannya sebagai milik mereka sendiri. Ikuti panduan ini untuk membantu Anda menghindari beberapa risiko keamanan yang mudah diabaikan:
-
Kami menyarankan penggunaan opsi
--exclude
padadirectory
ec2-bundle-vol
untuk melewati direktori dan subdirektori yang berisi informasi rahasia yang tidak ingin Anda sertakan dalam paketan Anda. Khususnya, kecualikan semua pasangan kunci publik/privat SSH milik pengguna dan file SSHauthorized_keys
saat memaketkan gambar. Publik Amazon AMIs menyimpan ini/root/.ssh
untuk pengguna root, dan/home/
untuk pengguna biasa. Untuk informasi selengkapnya, lihat ec2-bundle-vol.user_name
/.ssh/ -
Selalu hapus riwayat shell sebelum pembuatan paketan. Jika Anda mencoba lebih dari satu unggahan paketan di AMI yang sama, riwayat shell berisi kunci akses Anda. Contoh berikut harus menjadi perintah terakhir yang Anda jalankan sebelum memaketkan dari dalam instans.
[ec2-user ~]$
shred -u ~/.*history
Awas
Batasan
shred
yang dijelaskan dalam peringatan di atas berlaku juga di sini.Perhatikan bahwa bash mencatat riwayat sesi saat ini ke disk saat keluar. Jika Anda keluar dari instans setelah menghapus
~/.bash_history
, lalu masuk kembali, Anda akan menemukan~/.bash_history
telah dibuat ulang dan berisi semua perintah yang dijalankan selama sesi Anda sebelumnya.Program lain selain bash juga menulis riwayat ke disk, berhati-hatilah dan hapus atau kecualikan dot-file dan dot-directories yang tidak perlu.
-
Menggabungkan instance yang sedang berjalan memerlukan kunci pribadi Anda dan X.509 sertifikat. Simpan kredensial ini dan kredensial lainnya di lokasi yang tidak dipaketkan (misalnya penyimpanan instans).