Kueri properti instans seperti ID dan alamat IP dari dalam Instance ECS, serta terapkan mode penguatan keamanan untuk mencegah serangan SSRF.
Dapatkan metadata instans
Metadata instans mencakup atribut seperti ID instans, konfigurasi jaringan, dan kredensial akses.
Metode 1: Mode penguatan keamanan (direkomendasikan)
Dapatkan token akses sementara, lalu sertakan dalam permintaan metadata Anda.
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 TTL token dalam detik. Nilai valid: 1 hingga 21600.
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-idGanti
instance-iddengan item metadata lain sesuai kebutuhan, seperti mac atau hostname.Jika 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. Nilai valid: 1 hingga 21600.
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-idGanti
instance-iddengan item metadata lain sesuai kebutuhan, seperti mac atau hostname.Jika berhasil, terminal hanya menampilkan string ID instans, misalnya,
i-bp1******.
Metode 2: Mode Normal
Mode Normal 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
Hanya aktifkan mode penguatan keamanan
Aktifkan Security Hardening Mode sehingga metadata hanya dapat diakses dengan token. Permintaan dalam mode normal akan mengembalikan error 403 - Forbidden. Secara default, Instance ECS mengizinkan akses tanpa token (mode normal), yang berisiko tinggi terhadap serangan SSRF.
Serangan khas memanfaatkan fitur aplikasi seperti mengunduh gambar dari URL eksternal. Penyerang membuat permintaan yang menipu server agar mengakses layanan metadata dan mencuri kredensial sementara peran RAM. Jika peran tersebut memiliki izin tingkat tinggi, penyerang dapat mengambil alih sumber daya cloud Anda atau seluruh akun Alibaba Cloud Anda.
Aktifkan mode penguatan keamanan untuk instans baru
Konsol
Saat Anda membuat instans, atur ke Security Hardening Mode.
Jika Mode Penguatan Keamanan tidak tersedia saat membuat instans dari gambar kustom, tingkatkan gambarnya.
CLI
Panggil RunInstances atau CreateInstance dengan HttpEndpoint=enabled dan HttpTokens=required. Contoh:
Contoh ini membuat instans Linux 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
Panggil RunInstances atau CreateInstance dengan HttpEndpoint=enabled dan HttpTokens=required.
Tingkatkan instans yang sudah ada
Cakupan
Instans Windows: Security Hardening Mode tidak didukung. Memaksakan mode ini menyebabkan kegagalan inisialisasi dan mengganggu modifikasi hostname serta aktivasi KMS.
Instans Linux: Didukung. Lakukan pemeriksaan dependensi dan modifikasi pada bagian berikut sebelum meningkatkan.
Langkah 1: Periksa dan tingkatkan kode serta dependensi
Sebelum beralih ke Security Hardening Mode, pastikan instans dan semua aplikasi yang dideploy memenuhi persyaratan berikut:
Versi Cloud-init harus 23.2.2 atau lebih baru. Jalankan
cloud-init --versionuntuk memeriksa. Jika versi lebih lama dari 23.2.2, tingkatkan Cloud-init terlebih dahulu — jika tidak, instans gagal memulai setelah beralih.Semua kode aplikasi dan skrip harus mengakses metadata instans menggunakan Metode 1: Mode penguatan keamanan.
PentingJika kode Anda menggunakan pustaka Credentials untuk mendapatkan token STS guna konfigurasi SDK, tingkatkan ke versi yang mendukung mode penguatan keamanan.
Setelah peningkatan, verifikasi bahwa tidak ada lagi akses mode normal. Lihat Bagaimana cara mendeteksi apakah Instance ECS diakses dalam mode normal?. Kemudian aktifkan Security Hardening Mode untuk instans tersebut.
Langkah 2: Aktifkan mode penguatan keamanan
Konsol
Buka halaman Konsol ECS - Instans. Pilih wilayah dan kelompok sumber daya.
Pada kolom Tindakan, klik .
Nyalakan sakelar Enable Instance Metadata Access Channel, atur Instance Metadata Access Mode ke Security Hardening Mode, lalu klik OK.
Setelah Anda memilih Security Hardening Mode, kotak dialog akan muncul, menunjukkan bahwa mengaktifkan mode ini akan menolak permintaan mode normal demi meningkatkan keamanan. Sebelum beralih, kami sarankan Anda memeriksa halaman pemantauan ECS Metadata di konsol CloudMonitor untuk memastikan instans tidak memiliki panggilan mode normal.
CLI
Panggil ModifyInstanceMetadataOptions dengan HttpEndpoint=enabled dan HttpTokens=required untuk mengaktifkan Security Hardening Mode. Contoh:
aliyun ecs ModifyInstanceMetadataOptions \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceId 'i-bp1******ke' \
--HttpEndpoint enabled \
--HttpTokens requiredAPI
Panggil ModifyInstanceMetadataOptions dengan HttpEndpoint=enabled dan HttpTokens=required untuk mengaktifkan Security Hardening Mode.
Setelah beralih, pantau akses metadata dan status aplikasi. Jika terjadi masalah, kembalikan ke Normal And Security Hardening Modes untuk memulihkan layanan, lalu ulangi Langkah 1: Periksa dan tingkatkan kode serta dependensi.
Detail metadata instans
Metadata diatur dalam hierarki menyerupai direktori. Mengakses direktori mengembalikan entri atau subdirektorinya. Misalnya, meta-data/instance/ mengembalikan instance-name dan instance-type.
Kategori | Metadata | Deskripsi | Contoh |
Informasi dasar instans |
| ID instans. |
|
| Nama instans. |
| |
| Hostname. |
| |
| Tipe instans. |
| |
| Nomor seri. |
| |
| Wilayah instans. |
| |
| Zona instans. |
| |
| ID akun Alibaba Cloud pemilik instans. |
| |
| Nilai tag instans tertentu. Untuk mengaktifkan fitur ini, panggil ModifyInstanceMetadataOptions dan atur |
| |
| PPS maksimum untuk tipe instans. Hanya dapat dilihat untuk instans yang dibuat atau yang tipe instansnya diubah setelah 30 Juni 2026. |
| |
| Koneksi maksimum untuk tipe instans. Hanya dapat dilihat untuk instans yang dibuat atau yang tipe instansnya diubah setelah 30 Juni 2026. |
| |
Informasi gambar |
| ID gambar yang digunakan untuk membuat instans. |
|
| Kode produk gambar Marketplace Alibaba Cloud. |
| |
| Metode penagihan gambar Marketplace Alibaba Cloud. |
| |
| Sumber manajer paket (seperti yum atau apt) yang digunakan oleh instans Linux untuk pembaruan. |
| |
Konfigurasi jaringan dasar |
| Jenis jaringan. Hanya VPC yang didukung. |
|
| ID VPC instans. |
| |
| Blok CIDR VPC instans. |
| |
| ID vSwitch instans. |
| |
| Blok CIDR vSwitch instans. |
| |
| Bandwidth internal arah keluar maksimum tipe instans. Satuan: Kbit/s. |
| |
| Konfigurasi DNS. |
| |
| Alamat server NTP. |
| |
Alamat IP ENI primer |
| Alamat MAC instans. Untuk instans dengan beberapa NIC, hanya alamat MAC pada eth0 yang dikembalikan. |
|
| Alamat IPv4 privat ENI primer. |
| |
| Alamat IPv4 publik ENI primer instans. |
| |
| Alamat IPv4 publik statis atau Alamat IP Elastis yang dilampirkan ke ENI primer. |
| |
Detail antarmuka jaringan elastis |
| ID ENI. Ganti [mac] dengan alamat MAC instans dari item metadata mac. Hal yang sama berlaku untuk item berikutnya. |
|
| ID VPC ENI. |
| |
| ID vSwitch ENI. |
| |
| Alamat IP privat utama ENI. |
| |
| Alamat IPv4 privat yang ditetapkan ke ENI. |
| |
| Awalan IPv4 privat yang ditetapkan ke ENI. |
| |
| Subnet mask dari ENI. |
| |
| Gateway IPv4 ENI. |
| |
| Blok CIDR IPv4 vSwitch ENI. |
| |
| Blok CIDR IPv4 VPC ENI. |
| |
| Alamat IPv6 yang ditetapkan ke ENI. Hanya untuk instans tipe VPC dengan IPv6 dikonfigurasi. |
| |
| Awalan IPv6 yang ditetapkan ke ENI. |
| |
| Gateway IPv6 VPC ENI. |
| |
| Blok CIDR IPv6 vSwitch ENI. Hanya untuk instans tipe VPC dengan IPv6 dikonfigurasi. |
| |
| Blok CIDR IPv6 VPC ENI. Hanya untuk instans tipe VPC dengan IPv6 dikonfigurasi. |
| |
Informasi disk |
| Nomor seri disk. |
|
| ID disk. |
| |
| Nama disk. |
| |
Keamanan dan kredensial |
| Kunci publik, hanya tersedia jika disediakan saat peluncuran. |
|
| Kredensial keamanan sementara peran RAM yang terkait dengan instans. Ganti [role-name] dengan nama peran RAM. Kredensial kedaluwarsa pada waktu di bidang Expiration; panggil lagi untuk mendapatkan yang baru. | | |
Atribut instans lanjutan |
| Solusi virtualisasi ECS. Virt 1.0 dan Virt 2.0 didukung. |
|
| Nomor build internal. |
| |
| Waktu penghentian dan rilis terjadwal untuk spot instans, dalam format UTC+0 yyyy-MM-ddThh:mm:ssZ. |
| |
Konfigurasi khusus Windows |
| Server aktivasi KMS untuk instans Windows. |
|
| Server pembaruan untuk instans Windows. |
| |
| Server pemantauan status pembaruan untuk instans Windows. |
|
FAQ
Apa itu serangan SSRF, dan bagaimana mode penguatan keamanan melindungi darinya?
SSRF adalah kerentanan di mana penyerang menipu server agar melakukan permintaan jaringan tidak sah untuk mengakses sistem internal seperti layanan metadata atau database. Misalnya, penyerang dapat mengirimkan URL yang berisi
http://100.100.100.200/latest/meta-data/untuk menipu aplikasi agar mengambil dan mengembalikan metadata sensitif.Secara default, Instance ECS mengizinkan akses tanpa token (mode normal). Mode penguatan keamanan menerapkan validasi token: klien pertama kali mengirim permintaan PUT untuk token sementara, lalu menyertakannya dalam permintaan GET. Karena serangan SSRF tidak dapat memulai permintaan PUT, mereka tidak dapat memperoleh token, sehingga secara efektif memblokir akses tidak sah.
Saya tidak dapat mengakses metadata instans menggunakan perintah dalam mode penguatan keamanan. Bagaimana cara memperbaikinya?
Kesalahan perintah umum:
TTL kredensial akses metadata instans berada di luar rentang (400 - Missing or Invalid Parameters)
TTL harus antara 1 hingga 21.600 detik. Nilai di luar rentang ini mengembalikan 400 - Missing or Invalid Parameters.
curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700"Permintaan berisi header X-Forwarded-For (403 - Forbidden)
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 - Unauthorized)
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 lajunya?
Layanan metadata memiliki batas laju. Ambil item yang jarang berubah seperti instance-id sekali saat startup dan simpan dalam cache lokal dengan TTL 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 Tingkatkan instans yang sudah ada untuk memeriksa dan memperbaruinya.
Apakah saya dapat mengakses alamat metadata dari host lokal?
Tidak.
100.100.100.200adalah alamat link-lokal yang hanya dapat dijangkau dari dalam Instance ECS melalui antarmuka jaringan virtualnya. Permintaan dari luar instans tidak dapat diarahkan ke alamat ini.Apa yang harus saya lakukan jika saya tidak dapat memilih mode penguatan keamanan saat membuat instans dari gambar kustom?
Saat membuat Instance ECS dari gambar Linux kustom, Anda mungkin menemukan bahwa Security Hardening Mode tidak tersedia. Ini berarti gambarnya tidak memenuhi persyaratan. Tingkatkan gambarnya sebagai berikut:
Buat instans sementara: Gunakan gambar kustom untuk membuat Instance ECS sementara.
Modifikasi instans sementara: Pada instans sementara, lakukan modifikasi berikut. Lihat Tingkatkan instans yang sudah ada.
Tingkatkan Cloud-init: Tingkatkan Cloud-init ke versi 23.2.2 atau lebih baru.
Modifikasi aplikasi dan skrip: Perbarui semua aplikasi atau skrip yang menggunakan mode normal ke mode penguatan keamanan.
Buat gambar baru dan perbarui atributnya: Buat gambar kustom baru dari instans tersebut. Lalu panggil ModifyImageAttribute untuk mengatur
Features.ImdsSupportke `v2`.Rilis sumber daya: Rilis instans sementara setelah gambar baru dibuat.
Versi alat Credentials mana yang mendukung mode penguatan keamanan?
Versi Credentials sebelumnya tidak mendukung akses metadata dalam mode penguatan keamanan. Beralih ke mode penguatan keamanan tanpa peningkatan mencegah SDK mendapatkan token STS, menyebabkan gangguan layanan.
Tingkatkan dependensi Credentials ke versi yang didukung sebelum beralih mode:
Java: credentials-java versi >=
0.3.10.Node.js: credentials versi >=
2.3.1.PHP: credentials versi >=
1.2.0.Python: alibabacloud_credentials versi >=
0.3.6.Go: credentials-go versi >=
1.3.10.
Bagaimana cara mendeteksi apakah Instance ECS diakses dalam mode normal?
Gunakan metode berikut untuk mendeteksi dan menemukan proses yang mengakses metadata dalam mode normal.
Metode 1: Gunakan CloudMonitor untuk memeriksa akses mode normal
Periksa data pemantauan metadata ECS di konsol CloudMonitor untuk menentukan apakah instans diakses dalam mode normal.
Masuk ke konsol CloudMonitor.
Di panel navigasi kiri, pilih . Cari dan buka halaman pemantauan ECS Metadata.
Lihat metrik Successful Normal Mode Accesses untuk instans target.
Jika metrik ini tidak 0, berarti instans diakses dalam mode normal. Temukan dan tingkatkan aplikasi yang menggunakan mode normal.
Metode 2: Gunakan plugin Asisten Cloud untuk menemukan proses tertentu
Gunakan plugin Asisten Cloud untuk menemukan proses yang mengakses metadata dalam mode normal.
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, unduh paket RPM untuk menginstal 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 Asisten Cloud
Masuk ke Instance ECS dan instal layanan pemantauan. Layanan ini mengonsumsi sebagian sumber daya instans.
# Deploy layanan pemantauan. sudo acs-plugin-manager --exec --plugin ACS-ECS-ImdsPacketAnalyzer # Periksa status layanan pemantauan. sudo systemctl status imds_tracer_tool[root@cockpit ~]# systemctl status imds_tracer_tool ● imds_tracer_tool.service - ImdsPacketAnalyzer IMDS detection tooling from Aliyun Loaded: loaded (/etc/systemd/system/imds_tracer_tool.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2025-04-01 11:27:46 CST; 1 day 4h ago Main PID: 3549929 (python3) Tasks: 1 (limit: 3246596) Memory: 100.0M CGroup: /system.slice/imds_tracer_tool.service └─3549929 /bin/python3 /usr/local/share/aliyun-assist/plugin/ACS-ECS-ImdsPacketAnalyzer/1.0/src/imds_snoop.py Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577803:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577804:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577805:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577806:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577807:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577808:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577809:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv: Apr 02 15:58:34 cockpit python3[3549929]: [WARNING] imdsv1(!) (pid:3577810:curl argv:curl -s -o /dev/null --write-out 0.5 http://100.100.100.200) called by -> (pid:3565366:bash argv:Temukan proses bermasalah Periksa proses mana yang masih mengakses metadata dalam mode normal. Log menunjukkan ID proses (PID).
cat /var/log/imds/imds-trace.* | grep WARNING[root@cockpit ~]# cat /var/log/imds/imds-trace.* | grep WARNING [2025-04-01 11:25:59,483] [WARNING] imdsv1(!) (pid:3534140:acs-plugin-mana argv:acs-plugin-manager --exec --plugin acs-ecs-imdspacketanalyzer) called by -> (pid:3534138:sudo argv:sudo acs-plugin-manager --exec --plugin acs-ecs-imdspacketanalyzer) -> (pid:3533211:bash argv:-bash) -> (pid:3533208:sshd argv:sshd: root@pts/0) req details: get /latest/meta-data/instance-id http/1.1, host: 100.100.100.200, user-agent: linux_386/2.2.4.920, content-type: application/x-www-form-urlencoded, accept-encoding: gzip, [2025-04-01 11:25:59,483] [WARNING] imdsv1(!) (pid:3534140:acs-plugin-mana argv:acs-plugin-manager --exec --plugin acs-ecs-imdspacketanalyzer) called by -> (pid:3534138:sudo argv:sudo acs-plugin-manager --exec --plugin acs-ecs-imdspacketanalyzer) -> (pid:3533211:bash argv:-bash) -> (pid:3533208:sshd argv:sshd: root@pts/0) req details: get /latest/meta-data/instance-id http/1.1, host: 100.100.100.200, user-agent: linux_386/2.2.4.920, content-type: application/x-www-form-urlencoded, accept-encoding: gzip, [root@cockpit ~]#Analisis dan modifikasi Temukan aplikasi atau skrip yang sesuai dengan PID tersebut dan tingkatkan ke mode penguatan keamanan.