Beobachte deinen AWS Account in echtzeit um verdächtige Aktivitäten aufzuspüren

Du kannst alle Änderungen an deinem AWS Account mit CloudTrail verfolgen. Wusstest du, dass du deinen AWS Account auch in Echtzeit mit eigenen Regeln beobachten kannst?

Durch die gemeinsame Nutzung von CloudTrail, S3, SNS und Lambda kannst du bei jeder Änderung an deinem AWS Account ein Programm ausführen das die API Aktivitäten in deinem Account prüft. CloudTrail stellt dazu ca. alle 5 Minuten ein Repot zur Verfügung. In diesem Artikel lieferst du eine Lösung zum überwachen der Tags deiner EC2 Instanzen um auffällige Aktivitäten in deinem Account zu entdecken aus.

Die folgende Abbildung zeigt wie die AWS Services miteinander verwendet werden.

Beobachte CloudTrail mit Lambda
Schauen wir uns ein konkretes Beispiel an.

Was ist auffällige API Aktivität?

CloudTrail zeichnet eine Menge API Aktivität auf. Dein Aufgabe ist die auffällige Aktivität 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, 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. The Lambda-Funktion muss dann:

  1. Die SNS Nachricht verstehen.
  2. Die komprimierten CloudTrail Berichte von S3 herunterladen.
  3. Die Berichte auspacken.
  4. Über API Aktivitäten iterieren und nach Events Ausschau halten, die EC2 Instanz Tags betreffen, wie: RunInstances, CreateTags und DeleteTags.
  5. Eine Warnung senden wenn die Tags nicht wie erwartet sind.

Glücklicherweise wurde die Lambda-Funktion schon geschrieben, so dass 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. Ein paar Schritte sind nötig um alles vorzubereiten:

  1. Wähle eine AWS Region in der du die API Aktivität beobachten willst (im folgenden als $region bezeichnet).
  2. Erstelle ein SNS Topic in $region und subskribiere dich auf das Topic via E-Mail. Warnungen werden dann via E-Mail geschickt.
  3. Lade den Code herunter in dem du wget https://github.com/widdix/aws-tag-watch/archive/master.zip in deinem Terminal ausführst.
  4. Entpacke den Code mit unzip master.zip in deinem Terminal.
  5. Wechsle in das entpackte Verzeichnis mit cd aws-tag-watch-master/ in deinem Terminal.
  6. Führe npm install in deinem Terminal aus um die Node.js Abhängigkeiten zu installieren.
  7. Bearbeite die Datei config.json. Setze den Wert für region auf $region und alertTopicArn auf den ARN des SNS Topics aus Schritt 1.
  8. Führe ./bundle.sh im Terminal aus.
  9. Speichere die Datei aws-tag-watch.zip in einem S3 Bucket (das Bucket muss in der Region $region angelegt werden).
  10. Erzeuge einen CloudFormation Stack basierenden auf dem Template template.json.
  11. Leider ist die Lambda-Unterstützung in CloudFormation noch nicht perfekt. Du musst einen manuellen Schritt ausführen um dem SNS Topic zu 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 dein AWS Account in $region beobachtet. Wenn du eine EC2 Instanz startest oder die Tags einer existierenden Instanz änderst prüft die Lambda Funktion ob der on config.json konfigurierte Tag existiert.

Raum für Verbesserungen

Eine Warnung via E-Mail zu verschicken ist nicht sehr hilfreich wenn du in einem Team arbeitest. In diesem Fall ist OpsGenie eine bessere Lösung, welche bestens mit SNS zusammenarbeiten kann.

Lese mehr über Amazon Web Services

Amazon Web Services in Action

Willst du mehr über Amazon Web Services lernen? Andreas und ich schreiben ein Buch mit dem Titel Amazon Web Services in Action. Das Buch erscheint in englischer Sprache und wird von Manning verlegt. Das Buch wurde für Entwickler und Administratoren mit Interesse an DevOps geschrieben. Du lernst wie du verteilte Anwendungen auf der Plattform die AWS bietet betreibst. Es werden keine AWS Kenntnisse vorausgesetzt.

Read on


Teilen

           

RSS

  RSS

Newsletter


Michael Wittig

Michael Wittig

Ich bin Autor von Author of Amazon Web Services in Action. Ich arbeite als Software Engineer und unabhängiger Berater mit dem Fokus auf AWS und DevOps. Engagiere mich!

Fehlt etwas in meinem Artikel? Ich freue mich auf dein Feedback! @hellomichibye oder michael@widdix.de.


Veröffentlicht am