Verdächtige Aktivitäten im AWS Account aufspüren

© Shutterstock / bouybin
CloudTrail verfolgt alle Änderungen in Ihrem Amazon Webservice Account. Das funktioniert auch in Echtzeit und mit eigenen Regeln.
Durch die gemeinsame Nutzung von CloudTrail, S3, SNS und Lambda-Funktionen können Sie bei jeder Änderung an Ihrem AWS Account ein Programm ausführen, das die API-Aktivitäten prüft. CloudTrail stellt dazu ca. alle fünf Minuten einen Report zur Verfügung. Dieser Artikel liefert eine Lösung zum Überwachen der Tags Ihrer EC2-Instanzen, um auffällige Aktivitäten in Ihrem Account zu entdecken aus.
Schauen wir uns ein konkretes Beispiel an.
Was ist eine auffällige API-Aktivität?
CloudTrail zeichnet eine Menge API-Aktivitäten auf. Ihre Aufgabe ist es, die auffälligen Aktivitäten darin zu entdecken. Zum Beispiel:
- Eine Security Group wurde geändert und erlaubt nun eingehenden Datenverkehr aus dem Internet (0.0.0.0/0)
- Ein IAM User wurde außerhalb der üblichen Arbeitszeiten angelegt.
- Eine EC2-Instanz wurde gestartet, die nicht mit den üblichen Tags versehen wurde (zum Beispiel Kostenstelle oder verantwortliches Team).
Das folgende Beispiel implementiert die Beobachtung von EC2-Instanz-Tags.
EC2 Instanz Tags beobachten
Immer wenn CloudTrail einen neuen Bericht in S3 abgespeichert hat, wird eine Lambda-Funktion ausgeführt. Die Lambda-Funktion muss dann:
- Die SNS Nachricht verstehen.
- Die komprimierten CloudTrail-Berichte von S3 herunterladen.
- Die Berichte auspacken.
- Über API-Aktivitäten iterieren und nach Events Ausschau halten, die EC2-Instanz-Tags betreffen, wie:
RunInstances
,CreateTags
undDeleteTags
. - Eine Warnung senden, wenn die Tags nicht wie erwartet sind.
Glücklicherweise wurde die Lambda-Funktion schon geschrieben, sodass wir uns nicht mit Node.js Code herumschlagen müssen. Wir gehen dafür näher auf das Deplyoment der Lösung ein.
Die Lösung ausliefern
Eine Lambda-Funktion kann fast komplett mit CloudFormation ausgeliefert werden. Nur wenige Schritte sind nötig, um alles vorzubereiten:
- Wählen Sie die AWS-Region, in der Sie die API-Aktivitäten beobachten wollen (im Folgenden als
$region
bezeichnet). - Erstellen Sie ein SNS Topic in
$region
und abonnieren Sie das Topic per E-Mail. Warnungen werden dann via E-Mail verschickt. - Laden Sie den Code herunter, indem Sie
wget https://github.com/widdix/aws-tag-watch/archive/master.zip
in Ihrem Terminal ausführen. - Entpacken Sie den Code mit
unzip master.zip
. - Wechseln Sie in das entpackte Verzeichnis mit
cd aws-tag-watch-master/
. - Führes Sie
npm install
in aus, um die Node.js-Abhängigkeiten zu installieren. - Bearbeiten Sie die Datei
config.json
. Setzen Sie den Wert fürregion
auf$region
undalertTopicArn
auf den ARN des SNS Topics aus Schritt 1. - Führen Sie
./bundle.sh
aus. - Speichern Sie die Datei
aws-tag-watch.zip
in einem S3 Bucket. Das Bucket muss in der Region$region
angelegt werden. - Erzeugen Sie einen CloudFormation Stack basierend auf dem Template
template.json
. - Leider ist die Lambda-Unterstützung in CloudFormation noch nicht perfekt. Sie müssen dem SNS Topic erst erlauben die Lambda-Funktion aufzurufen.
# --function-name Bitte auf den Output LambdaFunctionName des CloudFormation Stacks setzen # --source-arn Bitte auf den Output TrailTopicArn des CloudFormation Stacks setzen aws lambda add-permission --function-name "..." --statement-id "s1" --action "lambda:invokeFunction" --principal "sns.amazonaws.com" --source-arn "..."
Ab sofort wird Ihr AWS Account in $region
beobachtet. Wenn Sie eine EC2-Instanz starten oder die Tags einer existierenden Instanz ändern, prüft die Lambda-Funktion, ob der in config.json
konfigurierte Tag existiert.
Raum für Verbesserungen
Eine Warnung via E-Mail zu verschicken ist nicht sehr hilfreich, wenn Sie in einem Team arbeiten. In diesem Fall ist OpsGenie eine bessere Lösung, da das Tool sehr gut mit SNS zusammenarbeitet.

Aufmacherbild: High angle view of storm von Shutterstock / Urheberrecht: bouybin
Hinterlasse einen Kommentar