Aplikasi yang berjalan pada instans Elastic Compute Service (ECS) dapat secara dinamis menanyakan metadata instans melalui layanan metadata, seperti ID instans dan alamat IP. Ini menghindari pengkodean keras informasi tersebut. Untuk mencegah paparan metadata dari serangan Pemalsuan Permintaan Sisi Server (SSRF), kami merekomendasikan untuk mengakses metadata menggunakan mode penguatan keamanan, yang memerlukan mendapatkan token akses terlebih dahulu. Konfigurasikan instans Anda agar hanya mengizinkan akses dalam mode ini untuk secara efektif mengurangi risiko keamanan yang terkait dengan mode normal.
Dapatkan metadata instans
Metadata instans adalah kumpulan atribut instans, termasuk properti utama seperti ID instans, lingkungan jaringan, dan kredensial akses.
Metode 1: Mode penguatan keamanan (direkomendasikan)
Untuk mengakses metadata dalam mode penguatan keamanan, Anda harus terlebih dahulu mendapatkan token akses sementara. Kemudian, Anda dapat menyertakan token dalam permintaan Anda untuk mengambil metadata.
Linux
Masuk ke instans.
Dapatkan token sementara.
TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:21600"`Parameter X-aliyun-ecs-metadata-token-ttl-seconds menentukan waktu hidup (TTL) token dalam detik. Nilainya berkisar antara 1 hingga 21.600.
Sertakan token dalam permintaan Anda untuk mengambil metadata.
curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/instance-idinstance-iddi akhir perintah mengambil ID instans. Anda dapat menggantinya dengan item metadata lainnya yang perlu Anda ambil, seperti mac (untuk mengambil alamat MAC) atau hostname (untuk mengambil nama host).Jika perintah berhasil, terminal hanya menampilkan string ID instans, misalnya,
i-bp1******.
Windows
Masuk ke instans.
Dapatkan token sementara.
$token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://100.100.100.200/latest/api/tokenParameter X-aliyun-ecs-metadata-token-ttl-seconds menentukan TTL token dalam detik. Nilainya berkisar antara 1 hingga 21.600.
Sertakan token dalam permintaan Anda untuk mengambil metadata.
Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/instance-idinstance-iddi akhir perintah mengambil ID instans. Anda dapat menggantinya dengan item metadata lainnya yang perlu Anda ambil, seperti mac (untuk mengambil alamat MAC) atau hostname (untuk mengambil nama host).Jika perintah berhasil, terminal hanya menampilkan string ID instans, misalnya,
i-bp1******.
Metode 2: Mode Normal
Mode normal adalah metode akses yang tidak aman dan tidak direkomendasikan.
Linux:
# Kirim permintaan GET untuk mendapatkan ID instans. curl http://100.100.100.200/latest/meta-data/instance-idWindows:
# Kirim permintaan GET untuk mendapatkan ID instans. Invoke-RestMethod -Uri http://100.100.100.200/latest/meta-data/instance-id -Method Get
Aktifkan akses hanya dalam mode penguatan keamanan
Untuk mencegah risiko keamanan serius, aktifkan Security Hardening Mode untuk instans ECS Anda. Setelah mode ini diaktifkan, Anda hanya dapat mengakses metadata dalam mode penguatan keamanan. Setiap upaya untuk mengakses metadata dalam mode normal akan mengembalikan kesalahan 403 - Dilarang. Secara default, instans ECS mengizinkan akses tanpa token ke metadata (mode normal), yang memiliki risiko tinggi serangan SSRF.
Skenario serangan tipikal melibatkan eksploitasi fitur aplikasi, seperti mengunduh gambar dari URL eksternal. Penyerang dapat membuat permintaan jahat yang menipu server untuk mengakses layanan metadata internal atas nama mereka. Ini dapat digunakan untuk mencuri kredensial akses sementara dari peran RAM yang dilampirkan ke instans. Jika peran tersebut memiliki izin tingkat tinggi, penyerang dapat mengambil alih sumber daya cloud Anda atau bahkan mengambil alih seluruh Akun Alibaba Cloud Anda.
Aktifkan mode penguatan keamanan saat Anda membuat instans baru
Konsol
Saat Anda membuat instans, atur ke Security Hardening Mode.
Jika opsi Mode Penguatan Keamanan tidak tersedia saat Anda membuat instans dari gambar kustom, Anda harus memperbarui gambar tersebut.
CLI
Saat Anda membuat instans dengan memanggil operasi RunInstances atau CreateInstance, Anda dapat mengatur mode akses metadata instans ke mode penguatan keamanan dengan mengatur HttpEndpoint=enabled dan HttpTokens=required. Perintah berikut adalah contohnya:
Perintah ini membuat instans Linux yang hanya berjalan dalam mode penguatan keamanan.
aliyun ecs RunInstances \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--ImageId 'aliyun_3_x64_20G_alibase_20250629.vhd' \
--InstanceType 'ecs.g7.large' \
--VSwitchId 'vsw-bp1******trg' \
--SecurityGroupId 'sg-bp1******dgl' \
--SystemDisk.Size 40 \
--SystemDisk.Category cloud_essd \
--HttpEndpoint enabled \
--HttpTokens requiredAPI
Saat Anda membuat instans dengan memanggil operasi RunInstances atau CreateInstance, atur kebijakan akses metadata instans ke mode penguatan keamanan dengan mengatur HttpEndpoint=enabled dan HttpTokens=required.
Tingkatkan instans yang ada ke mode penguatan keamanan
Kesesuaian
Instans Windows: Tidak mendukung Security Hardening Mode. Jika Anda memaksakan mode ini, inisialisasi instans gagal dan fungsi utama seperti modifikasi nama host dan aktivasi KMS terpengaruh.
Instans Linux: Instans ini mendukung peningkatan. Namun, Anda harus menyelesaikan pemeriksaan dependensi dan modifikasi yang dijelaskan dalam bagian berikut sebelum melakukan peningkatan.
Langkah 1: Periksa dan tingkatkan kode serta dependensi
Sebelum beralih ke Security Hardening Mode, instans dan semua aplikasi yang diterapkan di atasnya harus memenuhi persyaratan berikut:
Pastikan bahwa versi Cloud-init adalah 23.2.2 atau lebih baru. Anda dapat masuk ke instans dan menjalankan perintah
cloud-init --versionuntuk memeriksa versi saat ini. Jika versinya lebih lama dari 23.2.2, instans gagal memulai setelah Anda beralih ke mode penguatan keamanan. Anda harus terlebih dahulu memperbarui Cloud-init ke versi 23.2.2 atau lebih baru.Semua kode aplikasi dan skrip harus mengakses metadata instans menggunakan Metode 1: Mode penguatan keamanan.
PentingJika kode aplikasi Anda bergantung pada pustaka Credentials untuk mendapatkan token Layanan Token Keamanan (STS) untuk konfigurasi SDK, tingkatkan dependensi Credentials ke versi yang mendukung mode penguatan keamanan.
Setelah Anda menyelesaikan pembaruan, periksa apakah instans ECS sedang diakses dalam mode normal. Untuk informasi lebih lanjut, lihat Bagaimana cara mendeteksi jika instans ECS sedang diakses dalam mode normal?. Setelah Anda memastikan bahwa tidak ada akses mode normal, aktifkan Security Hardening Mode untuk instans tersebut.
Langkah 2: Beralih ke mode penguatan keamanan
Konsol
Buka halaman Konsol ECS - Instans dan pilih wilayah dan kelompok sumber daya.
Di kolom Tindakan, klik .
Aktifkan saklar Enable Instance Metadata Access Channel, atur Instance Metadata Access Mode ke Security Hardening Mode, lalu klik OK.

CLI
Panggil operasi ModifyInstanceMetadataOptions dan atur HttpEndpoint=enabled dan HttpTokens=required untuk beralih mode akses metadata instans ke Security Hardening Mode. Perintah berikut adalah contohnya:
aliyun ecs ModifyInstanceMetadataOptions \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceId 'i-bp1******ke' \
--HttpEndpoint enabled \
--HttpTokens requiredAPI
Panggil operasi ModifyInstanceMetadataOptions dan atur HttpEndpoint=enabled dan HttpTokens=required untuk beralih mode akses metadata instans ke Security Hardening Mode.
Setelah Anda beralih mode, pantau terus akses metadata dan status aplikasi instans untuk memastikan kelangsungan bisnis. Ini membantu mencegah gangguan layanan yang disebabkan oleh aplikasi yang belum dimodifikasi. Jika terjadi masalah, beralih kembali ke Normal And Security Hardening Modes untuk memprioritaskan pemulihan layanan. Kemudian, lakukan Langkah 1: Periksa dan tingkatkan kode dan dependensi lagi.
Detail metadata instans
Metadata instans diorganisasikan dalam struktur hierarki mirip direktori yang dapat Anda akses level demi level. Saat Anda mengakses direktori metadata, ia mengembalikan entri metadata atau subdirektori di level berikutnya. Misalnya, mengakses meta-data/instance/ mengembalikan informasi seperti instance-name dan instance-type.
Kategori | Metadata | Deskripsi | Contoh |
Informasi dasar instans |
| ID instans. |
|
| Nama instans. |
| |
| Hostname dari instans. |
| |
| Tipe instans. |
| |
| Nomor seri instans. |
| |
| ID wilayah tempat instans berada. |
| |
| Zona tempat instans berada. |
| |
| ID akun Alibaba Cloud pemilik instans. |
| |
| Mengambil nilai tag tertentu untuk instans. Untuk menggunakan fitur ini, panggil operasi ModifyInstanceMetadataOptions dan atur parameter |
| |
Informasi gambar |
| ID gambar yang digunakan untuk membuat instans. |
|
| Kode produk gambar Marketplace Alibaba Cloud. |
| |
| Metode penagihan gambar Marketplace Alibaba Cloud. |
| |
| Alamat repositori gambar, seperti yum atau apt source, yang digunakan manajer paket instans Linux untuk mendapatkan pembaruan. |
| |
Konfigurasi jaringan dasar |
| Tipe jaringan. Hanya instans tipe VPC yang didukung. |
|
| ID VPC tempat instans berada. |
| |
| Blok CIDR dari VPC tempat instans berada. |
| |
| ID virtual switch tempat instans berada. |
| |
| Blok CIDR dari virtual switch tempat instans berada. |
| |
| Bandwidth keluar maksimum dari tipe instans. Satuan: Kbit/s. |
| |
| Konfigurasi DNS instans. |
| |
| Alamat server NTP. |
| |
Alamat IP ENI utama |
| Alamat MAC instans. Jika instans memiliki beberapa kartu antarmuka jaringan, hanya alamat MAC pada eth0 yang ditampilkan. |
|
| Alamat IPv4 privat dari Elastic Network Interface (ENI) utama instans. |
| |
| Alamat IPv4 publik dari ENI utama instans. |
| |
| Alamat IPv4 publik statis instans atau Alamat IP Elastis yang dilampirkan ke ENI utama. |
| |
Detail Elastic Network Interface |
| ID ENI. Ganti parameter [mac] dengan alamat MAC instans. Anda dapat memperoleh alamat MAC dari item metadata mac. Hal yang sama berlaku untuk item-item berikutnya. |
|
| ID VPC tempat ENI berada. |
| |
| ID virtual switch tempat ENI berada. |
| |
| Alamat IP privat utama ENI. |
| |
| Daftar alamat IPv4 privat yang ditetapkan ke ENI. |
| |
| Daftar awalan IPv4 privat yang ditetapkan ke ENI. |
| |
| Subnet mask ENI. |
| |
| Alamat gateway IPv4 ENI. |
| |
| Blok CIDR IPv4 dari virtual switch tempat ENI berada. |
| |
| Blok CIDR IPv4 dari VPC tempat ENI berada. |
| |
| Daftar alamat IPv6 yang ditetapkan ke ENI. Parameter ini didukung hanya untuk instans tipe VPC yang dikonfigurasi dengan IPv6. |
| |
| Daftar awalan IPv6 yang ditetapkan ke ENI. |
| |
| Alamat gateway IPv6 dari VPC tempat ENI berada. |
| |
| Blok CIDR IPv6 dari virtual switch tempat ENI berada. Parameter ini didukung hanya untuk instans tipe VPC yang dikonfigurasi dengan IPv6. |
| |
| Blok CIDR IPv6 dari VPC tempat ENI berada. Parameter ini didukung hanya untuk instans tipe VPC yang dikonfigurasi dengan IPv6. |
| |
Informasi disk |
| Nomor seri disk. |
|
| ID disk. |
| |
| Nama disk. |
| |
Keamanan dan kredensial |
| Kunci publik. Parameter ini tersedia hanya jika kunci publik diberikan saat instans diluncurkan. |
|
| Kredensial keamanan sementara dari peran RAM yang terkait dengan instans. Ganti [role-name] dengan nama peran RAM. Kredensial tersebut kedaluwarsa pada waktu yang ditentukan dalam bidang Expiration. Anda harus memanggil operasi lagi untuk mendapatkan kredensial baru. | | |
Atribut lanjutan instans |
| Solusi virtualisasi ECS. Didukung Virt 1.0 dan Virt 2.0. |
|
| Nomor build internal. |
| |
| Waktu penghentian dan pelepasan yang diatur oleh sistem operasi untuk instans spot. Waktunya dalam UTC+0 dan formatnya adalah yyyy-MM-ddThh:mm:ssZ. |
| |
Konfigurasi spesifik Windows |
| Server aktivasi KMS untuk instans Windows. |
|
| Server pembaruan untuk instans Windows. |
| |
| Server pemantauan status pembaruan untuk instans Windows. |
|
Pertanyaan Umum
Apa itu serangan SSRF, dan bagaimana mode penguatan keamanan melindungi dari serangan tersebut?
SSRF adalah kerentanan keamanan di mana penyerang menipu server untuk membuat permintaan jaringan yang tidak sah. Ini dapat digunakan untuk mengakses sistem internal yang dilindungi seperti layanan metadata atau database. Sebagai contoh, penyerang dapat mengirimkan URL yang berisi
http://100.100.100.200/latest/meta-data/untuk menipu aplikasi agar mengambil dan mengembalikan informasi sensitif dari metadata. Ini menyebabkan pelanggaran data.Secara default, instans ECS mengizinkan akses tanpa token ke metadata (mode normal). Mengaktifkan mode penguatan keamanan menerapkan mekanisme validasi token. Klien harus terlebih dahulu mengirim permintaan PUT untuk mendapatkan token sementara dan kemudian menyertakan token tersebut dalam permintaan GET berikutnya. Karena serangan SSRF tidak dapat dengan mudah memulai permintaan PUT, mereka tidak dapat memperoleh token. Ini secara efektif memblokir akses dan meningkatkan keamanan metadata.
Saya tidak dapat mengakses metadata instans menggunakan perintah dalam mode penguatan keamanan. Bagaimana cara memperbaikinya?
Kesalahan perintah berikut sering terjadi:
TTL kredensial akses metadata instans di luar jangkauan (400 - Parameter Hilang atau Tidak Valid)
TTL untuk kredensial akses metadata instans adalah 1 hingga 21.600 detik. Jika nilainya melebihi batas ini, kesalahan 400 - Parameter Hilang atau Tidak Valid akan dikembalikan.
curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"Permintaan berisi X-Forwarded-For header (403 - Dilarang)
curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com"Kredensial akses metadata instans yang ditentukan tidak valid (401 - Tidak Sah)
curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/
Apa yang harus saya lakukan jika akses frekuensi tinggi saya ke layanan metadata dibatasi?
Layanan metadata memiliki batasan frekuensi akses. Praktik terbaik adalah mengambil item metadata yang jarang berubah, seperti instance-id, sekali saat startup aplikasi. Kemudian, simpan mereka di cache memori lokal atau file dengan waktu hidup yang wajar.
Aplikasi saya berhenti bekerja setelah saya mengubah mode akses metadata instans ke mode penguatan keamanan. Bagaimana cara memecahkan masalah ini?
Aplikasi atau skrip pada instans mungkin masih menggunakan mode normal. Ikuti langkah-langkah dalam Tingkatkan instans yang ada ke mode penguatan keamanan untuk memeriksa dan meningkatkan aplikasi apa pun yang menggunakan mode normal.
Apakah saya dapat mengakses alamat metadata dari host lokal?
Tidak, Anda tidak bisa. Alamat
100.100.100.200adalah alamat link-lokal yang hanya dapat dijangkau dari dalam instans ECS melalui antarmuka jaringan virtualnya. Permintaan apapun yang dikirim ke alamat ini dari luar instans tidak dapat dirutekan. Ini adalah prinsip desain mendasar untuk memastikan keamanan metadata.Apa yang harus saya lakukan jika saya tidak dapat memilih mode penguatan keamanan saat membuat instans dari gambar kustom?
Saat Anda membuat instans ECS dari gambar Linux kustom, Anda mungkin menemukan bahwa Anda tidak dapat memilih atau mengaktifkan Security Hardening Mode. Ini biasanya berarti gambar tersebut tidak memenuhi persyaratan untuk fitur keamanan ini. Untuk menyelesaikan masalah ini, perbarui gambar sebagai berikut:
Buat instans sementara: Gunakan gambar kustom yang ingin Anda tingkatkan untuk membuat instans ECS sementara untuk diagnostik dan modifikasi.
Modifikasi instans sementara: Pada instans sementara yang Anda buat di Langkah 1, lakukan modifikasi berikut. Untuk informasi lebih lanjut, lihat Tingkatkan instans yang ada ke mode penguatan keamanan.
Tingkatkan Cloud-init: Tingkatkan Cloud-init ke versi 23.2.2 atau lebih baru.
Ubah aplikasi dan skrip: Ubah semua aplikasi atau skrip yang menggunakan mode normal untuk menyesuaikannya dengan mode penguatan keamanan.
Buat gambar baru dan ubah atributnya: Setelah Anda menyelesaikan modifikasi, buat gambar baru kustom dari instans tersebut. Kemudian, panggil operasi ModifyImageAttribute untuk mengatur atribut
Features.ImdsSupportgambar ke `v2`.Lepaskan sumber daya: Setelah gambar baru dibuat, segera lepaskan instans sementara untuk menghemat biaya.
Versi mana dari alat Credentials yang mendukung mode penguatan keamanan?
Versi sebelumnya dari Credentials tidak mendukung akses ke metadata dalam mode penguatan keamanan. Jika Anda beralih ke mode penguatan keamanan, versi ini tidak dapat memperoleh token STS dari metadata dalam mode normal untuk menginisialisasi SDK. Ini menyebabkan gangguan layanan.
Sebelum Anda beralih mode, tingkatkan dependensi Credentials ke versi yang mendukung mode penguatan keamanan. Persyaratan versi adalah sebagai berikut:
Java: versi credentials-java >=
0.3.10.Node.js: versi credentials >=
2.3.1.PHP: versi credentials >=
1.2.0.Python: versi alibabacloud_credentials >=
0.3.6.Go: versi credentials-go >=
1.3.10.
Bagaimana cara mendeteksi apakah instans ECS diakses dalam mode normal?
Saat Anda memeriksa kode aplikasi pada instans yang menggunakan mode normal, Anda dapat menggunakan metode berikut untuk mendeteksi dan menemukan proses spesifik. Ini membantu Anda melakukan peningkatan yang diperlukan.
Metode 1: Gunakan CloudMonitor untuk memeriksa akses mode normal
Anda dapat memeriksa data pemantauan metadata ECS di konsol CloudMonitor untuk dengan cepat memastikan apakah instans baru saja diakses dalam mode normal.
Masuk ke Konsol CloudMonitor.
Di panel navigasi di sebelah kiri, pilih . Lalu, cari dan buka halaman pemantauan ECS Metadata.
Lihat metrik Successful Normal Mode Accesses untuk instans target.
Jika nilai metrik ini bukan 0, instans sedang diakses dalam mode normal. Anda harus menemukan aplikasi yang menggunakan mode ini dan tingkatkan mereka untuk menggunakan mode penguatan keamanan.
Metode 2: Gunakan plugin Cloud Assistant untuk menemukan proses spesifik
Anda dapat menggunakan plugin Cloud Assistant untuk membantu Anda secara akurat menemukan proses dalam instans yang menggunakan mode normal untuk mengakses metadata.
Sistem operasi yang didukung
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3 Pro
Anolis OS 8
CentOS Stream 8/9
CentOS 8
Ubuntu: 20/24
Debian:10,11,12
Fedora 35+
AlmaLinux 8/9
Rocky Linux 8/9
Red Hat Enterprise Linux 8/9
Untuk Red Hat, Anda harus mengunduh paket RPM untuk memasang Agen Asisten Cloud.
SUSE 15.1/15.2/15.3/15.4/15.5/15.6
OpenSuse 15.2/15.3/15.4/15.5/15.6
Prosedur
Instal dan aktifkan plugin Cloud Assistant
Masuk ke instans ECS dan jalankan perintah berikut untuk memasang dan memulai layanan pemantauan. Setelah layanan ini diaktifkan, ia akan menggunakan beberapa sumber daya instans.
# Pasang layanan pemantauan. sudo acs-plugin-manager --exec --plugin ACS-ECS-ImdsPacketAnalyzer # Periksa status layanan pemantauan. sudo systemctl status imds_tracer_tool
Temukan proses bermasalah Jalankan perintah untuk memeriksa proses mana yang masih mengakses metadata dalam mode normal. Log menampilkan ID proses (PID) dari proses terkait.
cat /var/log/imds/imds-trace.* | grep WARNING
Analisis dan modifikasi Berdasarkan PID dalam log, temukan aplikasi atau skrip yang sesuai dan tingkatkan mereka untuk mengakses metadata dalam mode penguatan keamanan.