Bir ECS örneğinin içindeyken örnek kimlikleri ve IP adresleri gibi özellikleri sorgulayın ve SSRF saldırılarını önlemek için güvenlik sağlamlaştırma modunu zorunlu kılın.
Örnek meta verisini alın
Örnek meta verisi, örnek kimliği, ağ yapılandırması ve erişim kimlik bilgileri gibi nitelikleri içerir.
Yöntem 1: Güvenlik sağlamlaştırma modu (önerilen)
Geçici bir erişim belirteci alın ve ardından meta veri isteğinizde bu belirteci kullanın.
Linux
-
Geçici bir belirteç alın.
TOKEN=`curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds:21600"`X-aliyun-ecs-metadata-token-ttl-seconds parametresi, belirtecin süresini saniye cinsinden belirtir. Geçerli değerler: 1 ila 21600.
-
Meta veriyi almak için isteğinize belirteci ekleyin.
curl -H "X-aliyun-ecs-metadata-token: $TOKEN" http://100.100.100.200/latest/meta-data/instance-idGerekirse
instance-idyerine mac veya hostname gibi diğer meta veri öğelerini kullanın.İşlem başarılı olduğunda terminal yalnızca örnek kimliği dizesini çıktılar; örneğin
i-bp1******.
Windows
-
Geçici bir belirteç alın.
$token = Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://100.100.100.200/latest/api/tokenX-aliyun-ecs-metadata-token-ttl-seconds parametresi, belirtecin süresini saniye cinsinden belirtir. Geçerli değerler: 1 ila 21600.
-
Meta veriyi almak için isteğinize belirteci ekleyin.
Invoke-RestMethod -Headers @{"X-aliyun-ecs-metadata-token" = $token} -Method GET -Uri http://100.100.100.200/latest/meta-data/instance-idGerekirse
instance-idyerine mac veya hostname gibi diğer meta veri öğelerini kullanın.İşlem başarılı olduğunda terminal yalnızca örnek kimliği dizesini çıktılar; örneğin
i-bp1******.
Yöntem 2: Normal mod
Normal mod güvenli değildir ve önerilmez.
-
Linux:
# Send a GET request to get the instance ID. curl http://100.100.100.200/latest/meta-data/instance-id -
Windows:
# Send a GET request to get the instance ID. Invoke-RestMethod -Uri http://100.100.100.200/latest/meta-data/instance-id -Method Get
Yalnızca güvenlik sağlamlaştırma modunu etkinleştirin
Meta veriye yalnızca belirteçle erişilebilmesi için Security Hardening Mode seçeneğini etkinleştirin. Normal moddaki istekler 403 - Forbidden hatası döndürür. Varsayılan olarak ECS örnekleri belirteçsiz erişime izin verir (normal mod), bu da SSRF saldırılarına karşı yüksek risk oluşturur.
Tipik bir saldırı, dış bir URL’den görüntü indirme gibi bir uygulama özelliğinden yararlanır. Saldırgan, sunucuyu meta veri hizmetini sorgulamaya ve RAM rolünün geçici kimlik bilgilerini çalmaya zorlayan bir istek hazırlar. Rolün yetkileri yüksekse saldırgan, bulut kaynaklarınızı hatta tüm Alibaba Cloud hesabınızı ele geçirebilir.
Yeni bir örnek için güvenlik sağlamlaştırma modunu etkinleştirin
Konsol
Örnek oluştururken, seçeneğini Security Hardening Mode olarak ayarlayın.
Özel bir görüntüden örnek oluştururken Security Hardening Mode seçeneği kullanılamıyorsa, görüntüyü yükseltin.
CLI
RunInstances veya CreateInstance komutlarını çağırırken HttpEndpoint=enabled ve HttpTokens=required parametrelerini kullanın. Örnek:
Bu örnek, güvenlik sağlamlaştırma modunda bir Linux örneği oluşturur.
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 required
API
RunInstances veya CreateInstance komutlarını çağırırken HttpEndpoint=enabled ve HttpTokens=required parametrelerini kullanın.
Mevcut bir örneği yükseltin
Uygulanabilirlik
Windows örnekleri: Security Hardening Mode desteklenmez. Bu modun zorlanması, başlatma işleminin başarısız olmasına ve ana bilgisayar adı değişikliği ile KMS etkinleştirmesinin bozulmasına neden olur.
Linux örnekleri: Desteklenir. Yükseltmeden önce aşağıdaki bölümlerde belirtilen bağımlılık denetimlerini ve değişiklikleri tamamlayın.
Adım 1: Kodu ve bağımlılıkları denetleyin ve yükseltin
Security Hardening Mode'a geçmeden önce, örneğin ve dağıtılan tüm uygulamaların aşağıdaki gereksinimleri karşıladığını doğrulayın:
Cloud-init sürümü en az 23.2.2 olmalıdır. Denetlemek için
cloud-init --versionkomutunu çalıştırın. Sürüm 23.2.2’den eskiyse, geçiş yaptıktan sonra örneğin başlatılamamasını önlemek için öncelikle Cloud-init’i yükseltin.-
Tüm uygulama kodları ve betikler, örnek meta verilerine erişmek için Yöntem 1: Güvenlik sağlamlaştırma modu'nu kullanmalıdır.
ÖnemliKodunuz SDK yapılandırması için STS belirteci almak üzere Credentials kitaplığını kullanıyorsa, güvenlik sağlamlaştırma modunu destekleyen bir sürüme yükseltin.
Yükseltmeden sonra normal mod erişiminin kalmadığından emin olun. Detaylar için Bir ECS örneğine normal modda erişilip erişilmediğini nasıl anlarım? bölümüne bakın. Ardından örneği Security Hardening Mode'a alın.
Adım 2: Güvenlik sağlamlaştırma modunu etkinleştirin
Console
ECS console - Instances sayfasına gidin. Bir bölge ve kaynak grubu seçin.
Eylemler sütununda, öğesine tıklayın.
-
Enable Instance Metadata Access Channel anahtarını açın, Instance Metadata Access Mode'u Security Hardening Mode'a ayarlayın ve ardından OK'a tıklayın.
Security Hardening Mode'u seçtikten sonra, bu modun güvenliği artırmak amacıyla normal mod isteklerini reddedeceğini belirten bir iletişim kutusu görüntülenir. Geçişi gerçekleştirmeden önce, örneğin normal mod çağrıları içermediğinden emin olmak için CloudMonitor konsolundaki ECS Metadata izleme sayfasını incelemenizi öneririz.
CLI
Security Hardening Mode'u etkinleştirmek için ModifyInstanceMetadataOptions işlemini HttpEndpoint=enabled ve HttpTokens=required parametreleriyle çağırın. Örnek:
aliyun ecs ModifyInstanceMetadataOptions \
--region cn-hangzhou \
--RegionId 'cn-hangzhou' \
--InstanceId 'i-bp1******ke' \
--HttpEndpoint enabled \
--HttpTokens required
API
Security Hardening Mode'u etkinleştirmek için ModifyInstanceMetadataOptions işlemini HttpEndpoint=enabled ve HttpTokens=required parametreleriyle çağırın.
Geçiş yaptıktan sonra meta veri erişimini ve uygulama durumunu izleyin. Sorun oluşursa hizmeti geri yüklemek için Normal And Security Hardening Modes'a dönün ve ardından Adım 1: Kodu ve bağımlılıkları denetleyin ve yükseltin adımını tekrarlayın.
Örnek meta verisi ayrıntıları
Meta veriler, dizin benzeri bir hiyerarşi içinde düzenlenmiştir. Bir dizine erişildiğinde o dizinin girdileri veya alt dizinleri döndürülür. Örneğin, meta-data/instance/ yolu, instance-name ve instance-type değerlerini döndürür.
Kategori | Meta verisi | Açıklama | Örnek |
Temel örnek bilgileri |
| Örnek kimliği. |
|
| Örnek adı. |
| |
| Ana makine adı. |
| |
| Örnek türü. |
| |
| Seri numarası. |
| |
| Örneğin bulunduğu bölge. |
| |
| Örneğin bulunduğu alan. |
| |
| Örnek sahibinin Alibaba Cloud hesap kimliği. |
| |
| Belirtilen örnek etiketinin değeri. Bu özelliği etkinleştirmek için ModifyInstanceMetadataOptions çağrısını yapın ve |
| |
| Örnek türü için maksimum PPS değeri. 2026 yılının 30 Haziran'ından sonra oluşturulan veya örnek türü değiştirilen örneklerde görüntülenebilir. |
| |
| Örnek türü için maksimum bağlantı sayısı. 2026 yılının 30 Haziran'ından sonra oluşturulan veya örnek türü değiştirilen örneklerde görüntülenebilir. |
| |
Görüntü bilgileri |
| Örneği oluşturmak için kullanılan görüntü kimliği. |
|
| Alibaba Cloud Marketplace görüntüsünün ürün kodu. |
| |
| Alibaba Cloud Marketplace görüntüsünün faturalama yöntemi. |
| |
| Linux örneğinin güncellemeler için kullandığı paket yöneticisi kaynağı (örneğin yum veya apt). |
| |
Temel ağ yapılandırması |
| Ağ türü. Yalnızca VPC desteklenir. |
|
| Örneğin VPC kimliği. |
| |
| Örneğin VPC'sinin CIDR bloğu. |
| |
| Örneğin vSwitch kimliği. |
| |
| Örneğin vSwitch'inin CIDR bloğu. |
| |
| Örnek türünün maksimum çıkış iç bant genişliği. Birim: Kbit/s. |
| |
| DNS yapılandırması. |
| |
| NTP sunucu adresi. |
| |
Birincil ENI IP adresleri |
| Örneğin MAC adresi. Birden fazla NIC'si olan örneklerde yalnızca eth0 üzerindeki MAC adresi döndürülür. |
|
| Birincil ENI'nin özel IPv4 adresi. |
| |
| Örneğin birincil ENI'sinin genel IPv4 adresi. |
| |
| Birincil ENI'ye bağlı olan statik genel IPv4 adresi veya Elastic IP Adresi. |
| |
Elastik ağ arabirimi ayrıntıları |
| ENI kimliği. [mac] yerine mac meta verisi öğesinden alınan örneğin MAC adresini yazın. Aynı kural aşağıdaki öğeler için de geçerlidir. |
|
| ENI'nin VPC kimliği. |
| |
| ENI'nin vSwitch kimliği. |
| |
| ENI'nin birincil özel IP adresi. |
| |
| ENI'ye atanmış özel IPv4 adresleri. |
| |
| ENI'ye atanmış özel IPv4 önekleri. |
| |
| ENI'nin alt ağ maskesi. |
| |
| ENI'nin IPv4 ağ geçidi. |
| |
| ENI'nin vSwitch'inin IPv4 CIDR bloğu. |
| |
| ENI'nin VPC'sinin IPv4 CIDR bloğu. |
| |
| ENI'ye atanmış IPv6 adresleri. Yalnızca IPv6 yapılandırılmış VPC türü örnekler için geçerlidir. |
| |
| ENI'ye atanmış IPv6 önekleri. |
| |
| ENI'nin VPC'sinin IPv6 ağ geçidi. |
| |
| ENI'nin vSwitch'inin IPv6 CIDR bloğu. Yalnızca IPv6 yapılandırılmış VPC türü örnekler için geçerlidir. |
| |
| ENI'nin VPC'sinin IPv6 CIDR bloğu. Yalnızca IPv6 yapılandırılmış VPC türü örnekler için geçerlidir. |
| |
Disk bilgileri |
| Disk seri numarası. |
|
| Disk kimliği. |
| |
| Disk adı. |
| |
Güvenlik ve kimlik bilgileri |
| Genel anahtar. Yalnızca başlatma sırasında sağlanmışsa kullanılabilir. |
|
| Örnekle ilişkilendirilmiş RAM rolünün geçici güvenlik kimlik bilgileri. [role-name] yerine RAM rol adını yazın. Kimlik bilgileri, Expiration alanında belirtilen zamanda sona erer; yenilerini almak için tekrar çağırın. | | |
Gelişmiş örnek öznitelikleri |
| ECS sanallaştırma çözümü. Virt 1.0 ve Virt 2.0 desteklenir. |
|
| İç yapı numarası. |
| |
| Spot örneğin planlanan durdurulma ve serbest bırakılma zamanı. UTC+0 biçiminde yyyy-AA-ggTSa:dd:ssZ. |
| |
Windows'a özgü yapılandırma |
| Windows örnekleri için KMS etkinleştirme sunucusu. |
|
| Windows örnekleri için güncelleme sunucusu. |
| |
| Windows örnekleri için güncelleme durumu izleme sunucusu. |
|
SSS
-
SSRF saldırısı nedir ve güvenlik sağlamlaştırma modu bunu nasıl engeller?
SSRF, bir saldırganın sunucuyu yetkisiz ağ istekleri yapmaya zorlayarak meta veri hizmeti veya veritabanı gibi iç sistemlere erişmeye çalıştığı bir güvenlik açığıdır. Örneğin, saldırgan, uygulamayı hassas meta verileri getirmeye ve döndürmeye zorlamak için
http://100.100.100.200/latest/meta-data/içeren bir URL gönderebilir.Varsayılan olarak, ECS örnekleri belirteçsiz erişime izin verir (normal mod). Güvenlik sağlamlaştırma modu, belirteç doğrulamasını zorunlu kılar: İstemci öncelikle geçici bir belirteç almak için bir PUT isteği gönderir, ardından bu belirteci GET isteklerine ekler. SSRF saldırıları PUT isteği başlatamadığı için belirteç alamaz ve bu da yetkisiz erişimi etkili şekilde engeller.
-
Güvenlik sağlamlaştırma modundayken örnek meta verilerine komutlarla erişemiyorum. Bunu nasıl düzeltirim?
Yaygın komut hataları:
-
Örnek meta veri erişim kimlik bilgisinin TTL değeri geçersiz aralıkta (400 - Eksik veya Geçersiz Parametreler)
TTL değeri 1 ila 21.600 saniye arasında olmalıdır. Bu aralığın dışındaki değerler 400 - Eksik veya Geçersiz Parametreler hatasını döndürür.
curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-aliyun-ecs-metadata-token-ttl-seconds: 21700" -
İstekte X-Forwarded-For başlığı var (403 - Yasak)
curl -X PUT "http://100.100.100.200/latest/api/token" -H "X-Forwarded-For: www.ba****.com" -
Belirtilen örnek meta veri erişim kimlik bilgisi geçersiz (401 - Yetkisiz)
curl -H "X-aliyun-ecs-metadata-token: aaa" -v http://100.100.100.200/latest/meta-data/
-
-
Meta veri hizmetine yüksek frekanslı erişimim sınırlanırsa ne yapmalıyım?
Meta veri hizmetinin hız sınırları vardır. instance-id gibi nadiren değişen öğeleri başlatma sırasında bir kez alın ve makul bir TTL ile yerel olarak önbelleğe alın.
-
Örnek meta veri erişim modunu güvenlik sağlamlaştırma moduna değiştirdikten sonra uygulamam çalışmamaya başladı. Sorunu nasıl gideririm?
Örnek üzerindeki bir uygulama veya betik hâlâ normal modu kullanıyor olabilir. Bunları denetlemek ve yükseltmek için Mevcut bir örneği yükseltme bölümüne bakın.
-
Meta veri adresine yerel ana bilgisayardan erişebilir miyim?
Hayır.
100.100.100.200yalnızca bir ECS örneğinin sanal ağ arabirimi üzerinden erişilebilen bir bağlantı yerel adresidir. Örneğin dışından gelen istekler bu adrese yönlendirilemez. -
Özel bir görüntüden örnek oluştururken güvenlik sağlamlaştırma modunu seçemiyorsam ne yapmalıyım?
Linux tabanlı özel bir görüntüden ECS örneği oluştururken Security Hardening Mode seçeneğinin kullanılamadığını görebilirsiniz. Bu, görüntünün gereksinimleri karşılamadığı anlamına gelir. Görüntüyü aşağıdaki gibi yükseltin:
Geçici örnek oluşturun: Özel görüntüyü kullanarak geçici bir ECS örneği oluşturun.
-
Geçici örneği değiştirin: Geçici örnek üzerinde aşağıdaki değişiklikleri gerçekleştirin. Mevcut bir örneği yükseltme bölümüne bakın.
Cloud-init'i yükseltin: Cloud-init'i 23.2.2 veya sonraki bir sürüme yükseltin.
Uygulamaları ve betikleri değiştirin: Normal modu kullanan tüm uygulamaları veya betikleri güvenlik sağlamlaştırma moduna güncelleyin.
Yeni bir görüntü oluşturun ve özniteliklerini güncelleyin: Örneğinden yeni bir özel görüntü oluşturun. Ardından ModifyImageAttribute çağrısını yaparak
Features.ImdsSupportdeğeriniv2olarak ayarlayın.Kaynakları serbest bırakın: Yeni görüntü oluşturulduktan sonra geçici örneği serbest bırakın.
-
Kimlik Bilgileri aracı sürümlerinden hangileri güvenlik sağlamlaştırma modunu destekler?
Kimlik Bilgileri aracının eski sürümleri güvenlik sağlamlaştırma modunda meta veri erişimini desteklemez. Mod değiştirilmeden önce araç yükseltilmezse, SDK STS belirteçlerini alamaz ve bu da hizmet kesintilerine neden olur.
Mod değiştirilmeden önce Kimlik Bilgileri bağımlılığını desteklenen bir sürüme yükseltin:
Java: credentials-java sürümü >=
0.3.10.Node.js: credentials sürümü >=
2.3.1.PHP: credentials sürümü >=
1.2.0.Python: alibabacloud_credentials sürümü >=
0.3.6.Go: credentials-go sürümü >=
1.3.10.
-
Bir ECS örneğine normal modda erişilip erişilmediğini nasıl tespit ederim?
Normal modda meta veriye erişen işlemleri tespit etmek ve konumlandırmak için aşağıdaki yöntemleri kullanın.
Yöntem 1: Normal mod erişimini denetlemek için CloudMonitor'u kullanma
CloudMonitor konsolundaki ECS meta veri izleme verilerini inceleyerek örneğe normal modda erişilip erişilmediğini belirleyin.
CloudMonitor konsoluna giriş yapın.
Sol gezinme bölmesinde yolunu izleyin. ECS Metadata izleme sayfasını bulun ve gidin.
Hedef örnek için Successful Normal Mode Accesses ölçümünü görüntüleyin.
Bu ölçüm 0 değilse, örneğe normal modda erişilmektedir. Normal modu kullanan uygulamaları bulun ve yükseltin.
Yöntem 2: Belirli bir süreci bulmak için Cloud Assistant eklentisini kullanma
Normal modda meta verilere erişen işlemleri belirlemek için bir Cloud Assistant eklentisi kullanın.
Desteklenen işletim sistemleri
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
Red Hat için bir RPM paketini indirip Cloud Assistant Agent’ı yükleyin.
SUSE 15.1/15.2/15.3/15.4/15.5/15.6
OpenSuse 15.2/15.3/15.4/15.5/15.6
Yordam
-
Cloud Assistant eklentisini yükleyin ve etkinleştirin
ECS örneğine oturum açın ve izleme hizmetini yükleyin. Bu hizmet, örnek kaynaklarının bir kısmını tüketir.
# Deploy the monitoring service. sudo acs-plugin-manager --exec --plugin ACS-ECS-ImdsPacketAnalyzer # Check the status of the monitoring service. 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: -
Sorunlu süreci belirleyin Hâlâ normal modda meta verilere erişen işlemleri bulun. Günlükte işlem kimlikleri (PID’ler) gösterilir.
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 ~]# Analiz edin ve değiştirin PID’lere karşılık gelen uygulamaları veya betikleri bulun ve bunları güvenlik sağlamlaştırma moduna yükseltin.