Wie deaktiviere ich AWS EC2-Metadaten?

Was sind EC2-Metadaten und warum sind sie wichtig?

In diesem Artikel beleuchten wir die Bedeutung von EC2-Metadaten und zeigen Ihnen, wie Sie diese zum Schutz vor Angriffen wie SSRF deaktivieren können.

Amazon Web Services (AWS) bietet mit dem Amazon Elastic Compute Cloud (Amazon EC2) einen Service für skalierbare Rechenkapazitäten. Durch die Nutzung von Amazon EC2 können Sie Anwendungen schneller entwickeln und bereitstellen, ohne vorab in teure Hardware investieren zu müssen.

Sie können je nach Bedarf virtuelle Server starten und dabei Ihre Netzwerk- und Sicherheitseinstellungen individuell anpassen sowie Ihre Speichernutzung flexibel steuern.

Metadaten einer Instanz umfassen Informationen zu Ihrer laufenden Instanz, die Sie konfigurieren oder verwalten können. Dazu gehören beispielsweise der Hostname, Ereignisse und Sicherheitsgruppen. Darüber hinaus ermöglichen Ihnen Instanzmetadaten den Zugriff auf die Benutzerdaten, die Sie beim Start Ihrer Instanz angegeben haben.

Beim Konfigurieren Ihrer Instanz haben Sie die Möglichkeit, kurze Skripte einzufügen oder Parameter zu definieren. Benutzerdaten ermöglichen Ihnen die Erstellung generischer AMIs und die Anpassung der Konfigurationsdateien zur Startzeit.

Die Optionen für Instanzmetadaten ermöglichen die Einrichtung neuer oder die Anpassung bestehender Instanzen für folgende Aufgaben:

  • Anfragen für Instanzmetadaten müssen über IMDSv2 gesendet werden.
  • Eingabe des Hop-Limits für die PUT-Antwort.
  • Einschränkung des Zugriffs auf Metadaten von Instanzen.

Es gibt zwei Methoden für den Zugriff auf Metadaten von einer aktiven EC2-Instanz: IMDSv1 und IMDSv2.

Der Instanzmetadatendienst wird als IMDS bezeichnet. Die beiden Versionen unterscheiden sich in ihren Methoden: IMDSv1 arbeitet mit einem Anfrage-Antwort-Verfahren, während IMDSv2 sitzungsbasiert ist.

AWS empfiehlt dringend die Verwendung von IMDSv2 als bevorzugte Methode. Standardmäßig nutzt das AWS SDK IMDSv2-Aufrufe. Zudem können Sie mit IAM-Bedingungsschlüsseln in einer IAM-Richtlinie festlegen, dass neue EC2-Instanzen mit aktiviertem IMDSv2 konfiguriert werden müssen.

Mit den folgenden IPv4- oder IPv6-URIs können Sie alle Metadaten einer laufenden Instanz anzeigen:

IPv4

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

IPv6

curl https://[fd00:ec2::254]/latest/meta-data/

Die genannten IP-Adressen sind Link-Local-Adressen und somit nur innerhalb der jeweiligen Instanz gültig.

Zum Abrufen von Instanzmetadaten ist ausschließlich die Link-Local-Adresse 169.254.169.254 zu verwenden. Die Anfragen an die Metadaten über den URI sind kostenlos, es fallen also keine zusätzlichen AWS-Gebühren an.

Warum Metadaten deaktiviert werden sollten

SSRF-Angriffe sind in AWS-Umgebungen weit verbreitet und bekannt. Es wurde festgestellt, dass Angreifer automatisierte Schwachstellenscans nutzen, um IAM-Anmeldeinformationen von öffentlich zugänglichen Online-Anwendungen zu sammeln. Solche Risiken lassen sich durch die Implementierung von IMDSv2 für alle EC2-Instanzen reduzieren, da dies einen zusätzlichen Sicherheitsvorteil bietet.

Die Wahrscheinlichkeit, dass ein Angreifer IAM-Anmeldeinformationen über SSRF stiehlt, wird durch IMDSv2 deutlich verringert.

Die Nutzung von Server Side Request Forgery (SSRF) für den Zugriff auf den EC2-Metadatendienst ist eine gängige Methode für die Ausnutzung von AWS-Sicherheitslücken.

Der Metadatendienst ist für die meisten EC2-Instanzen unter der Adresse 169.254.169.254 erreichbar und enthält wichtige Informationen wie die IP-Adresse oder den Namen der Sicherheitsgruppe.

Ist eine IAM-Rolle an eine EC2-Instanz gebunden, enthält der Metadatendienst auch die entsprechenden IAM-Anmeldeinformationen für die Authentifizierung. Diese Anmeldeinformationen können je nach verwendeter IMDS-Version und den Möglichkeiten der SSRF-Ausnutzung gestohlen werden.

Es ist auch wichtig zu beachten, dass ein Angreifer, der Shell-Zugriff auf die EC2-Instanz erhält, ebenfalls diese Anmeldeinformationen auslesen könnte.

Ein einfaches Beispiel: Ein Webserver läuft auf Port 80 einer EC2-Instanz. Dieser Webserver weist eine einfache SSRF-Schwachstelle auf, die es ermöglicht, GET-Anfragen an beliebige Adressen zu senden. Dadurch kann beispielsweise eine Anfrage an https://169.254.169.254 gesendet werden.

Deaktivierung von Metadaten

Durch das Blockieren des HTTP-Endpunkts des Instanzmetadatendienstes können Sie den Zugriff auf Ihre Instanzmetadaten unterbinden, unabhängig davon, welche Version des Metadatendienstes Sie verwenden.

Diese Änderung kann jederzeit rückgängig gemacht werden, indem Sie den HTTP-Endpunkt wieder aktivieren. Um Metadaten für Ihre Instanz zu deaktivieren, verwenden Sie den CLI-Befehl modify-instance-metadata-options und setzen den Parameter http-endpoint auf disabled.

Um Metadaten zu deaktivieren, führen Sie folgenden Befehl aus:

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

Wie Sie sehen können, wird nach der Deaktivierung der Metadaten beim Zugriffsversuch eine FORBIDDEN-Meldung angezeigt.

Um Ihre Metadaten wieder zu aktivieren, führen Sie diesen Befehl aus:

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

Fazit

Metadaten können sehr nützlich sein, um Informationen aus großen Datenmengen zu gewinnen. Jedoch können sie auch missbraucht werden, um den Standort oder die Identität einer Person ohne deren Kenntnis oder Zustimmung herauszufinden. Da jede von Ihnen vorgenommene Änderung, einschließlich Löschungen und Kommentare, aufgezeichnet wird, sollten Sie sich bewusst sein, dass diese Informationen enthalten können, die Sie möglicherweise nicht mit anderen teilen möchten. Daher ist das Entfernen von Metadaten entscheidend für die Wahrung Ihrer Online-Privatsphäre und -Anonymität.

Entdecken Sie auch weitere wichtige AWS-Terminologien, die Ihr AWS-Lernen voranbringen.