Hur inaktiverar man AWS EC2-metadata?

Den här artikeln kommer att lära dig om EC2-metadata och varför det är viktigt. Du kommer också att lära dig hur du inaktiverar metadata för att skydda dig mot attacker som SSRF.

Amazon Web Services (AWS) har en Amazon Elastic Compute Cloud-tjänst (Amazon EC2), som ger skalbar bearbetningskapacitet. Genom att använda Amazon EC2 kan du utveckla och distribuera appar snabbare utan att göra en förhandsinvestering i hårdvara.

Beroende på dina behov, starta så många eller så få virtuella servrar. Ställ in nätverks- och säkerhetsinställningar och kontrollera lagring med Amazon EC2.

Information om din instans som kan anpassas eller hanteras i en körande instans kallas instansmetadata. Instansmetadatakategorier inkluderar värdnamn, händelser och säkerhetsgrupper. Dessutom kan du komma åt användardata som du angav när du startade din instans med hjälp av instansmetadata.

Du kan inkludera ett kort skript eller ange parametrar när du konfigurerar din instans. Med hjälp av användardata kan du skapa generiska AMI:er och ändra konfigurationsfilerna för starttid.

Du kan ställa in nya eller befintliga instanser för att utföra följande uppgifter med instansmetadataalternativ:

  • Kräv att metadataförfrågningar från instanser skickas via IMDSv2
  • Sätt in PUT-svarshoppgränsen.
  • Lockdown-instansens metadataåtkomst

Det är möjligt att komma åt metadata från en aktiv EC2-instans med någon av följande tekniker: IMDSv1sIMDSv2

Instansmetadatatjänsten är känd som IMDS. Som du kanske antar är metoderna något annorlunda; IMDSv1 använder en begäran/svarsmetod, medan IMDSv2 är sessionsorienterad.

AWS uppmanar dig att använda IMDSv2, vilket är den föredragna metoden. Som standard använder AWS SDK IMDSv2-anrop, och du kan kräva att användare konfigurerar en ny EC2 med IMDSv2 aktiverat genom att använda IAM-villkorsnycklar i en IAM-policy.

Använd följande IPv4- eller IPv6-URI:er för att visa alla typer av instansmetadata från en körande instans.

IPv4

curl http://169.254.169.254/latest/meta-data/

IPv6

curl http://[fd00:ec2::254]/senaste/metadata/

IP-adresserna är länklokala adresser och är endast giltiga från instansen.

För att se instansens metadata kan du bara använda den lokala länkadressen 169.254.169.254 . Förfrågningar till metadata via URI är gratis, så det tillkommer inga extra avgifter från AWS.

Behov av att inaktivera metadata

I AWS-inställningar är SSRF-attacken frekvent och välkänd för alla. Angripare som automatiserar sårbarhetsskanning och samlar in IAM-uppgifter från allmänt tillgängliga onlineapplikationer har hittats av Mandiant (ett cybersäkerhetsföretag).

Att implementera IMDSv2 för alla EC2-instanser, vilket har ytterligare säkerhetsfördelar, skulle minska dessa risker för ditt företag. Möjligheten att en fiende skulle stjäla IAM-uppgifter via SSRF skulle minska avsevärt med IMDSv2.

Att använda Server Side Request Forgery (SSRF) för att få tillgång till EC2-metadatatjänsten är en av de tekniker för AWS-exploatering som oftast lärs ut.

Metadatatjänsten är tillgänglig för de flesta EC2-instanser på 169.254.169.254. Detta innehåller nyttig information om instansen, såsom dess IP-adress, säkerhetsgruppsnamn, etc.

Om en IAM-roll är kopplad till en EC2-instans kommer metadatatjänsten också att innehålla IAM-referenser för att autentisera som denna roll. Vi kan stjäla dessa referenser beroende på vilken version av IMDS som används och SSRF:s kapacitet.

Det är också värt att tänka på att en motståndare med skalåtkomst till EC2-instansen kan få dessa referenser.

I det här exemplet körs en webbserver på EC2-instansens port 80. Denna webbserver har en enkel SSRF-sårbarhet, som gör att vi kan skicka GET-förfrågningar till vilken adress som helst. Detta kan användas för att skicka en förfrågan till http://169.254.169.254.

För att inaktivera metadata

Genom att blockera HTTP-slutpunkten för instansmetadatatjänsten kan du förhindra åtkomst till din instansmetadata, oavsett vilken version av instansmetadatatjänsten du använder.

Du kan ångra denna ändring när som helst genom att aktivera HTTP-slutpunkten. Använd kommandot modify-instance-metadata-options CLI och ställ in http-endpoint-parametern till disabled för att inaktivera metadata för din instans.

För att inaktivera metadata kör detta kommando:

aws ec2 modify-instance-metadata-options –instance-id i-0558ea153450674 –http-endpoint disabled

inaktivera metadata

Du kan se att efter att jag inaktiverat min metadata får jag ett FÖRBJUDET meddelande om jag försöker komma åt den.

Om du vill aktivera din metadata igen kör det här kommandot:

aws ec2 modify-instance-metadata-options –instance-id i-0558ea153450674 –http-endpoint aktiverad

aktivera metadata igen

Slutsats

Metadata kan vara användbart för att extrahera information från stora datalager. Men det kan också missbrukas att veta om en persons plats eller identitet utan dennes vetskap eller samtycke. Eftersom den registrerar alla ändringar du gör, inklusive raderingar och kommentarer, måste du vara medveten om att den kan innehålla information som du inte vill att andra ska kunna se. Som ett resultat är det avgörande att ta bort metadata för att upprätthålla din integritet och anonymitet online.

Du kan också utforska några AWS-nyckelterminologier som främjar ditt AWS-lärande.