AWS WAF-Logs erfassen

Parserversion: 11.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie die AWS WAF-Logs (Web Application Firewall) erfassen, indem Sie einen Google Security Operations-Feed einrichten. Der Parser wandelt Logs im JSON-Rohformat in ein strukturiertes Format um, das dem Google SecOps UDM entspricht. Es werden Felder wie IP-Adressen, URLs, User-Agents und Details zu Sicherheitsregeln extrahiert und den entsprechenden UDM-Feldern zugeordnet, um eine einheitliche Darstellung und Analyse zu ermöglichen.

Hinweis

*Folgende Voraussetzungen müssen erfüllt sein:

  • Google SecOps-Instanz
  • Privilegierter Zugriff auf AWS

Amazon S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung in diesem Nutzerhandbuch: Bucket erstellen.
  2. Speichern Sie den Namen und die Region des Buckets für die spätere Verwendung.
  3. Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
  4. Wählen Sie den erstellten Nutzer aus.
  5. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  6. Klicken Sie im Bereich Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  7. Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
  8. Klicken Sie auf Weiter.
  9. Optional: Fügen Sie ein Beschreibungstag hinzu.
  10. Klicken Sie auf Zugriffsschlüssel erstellen.
  11. Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die spätere Verwendung zu speichern.
  12. Klicken Sie auf Fertig.
  13. Wählen Sie den Tab Berechtigungen aus.
  14. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  15. Wählen Sie Berechtigungen hinzufügen aus.
  16. Wählen Sie Richtlinien direkt anhängen aus.
  17. Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
  18. Klicken Sie auf Weiter.
  19. Klicken Sie auf Berechtigungen hinzufügen.

WAF-Web-ACL (Access Control List) erstellen

Wenn Sie AWS WAF noch nicht eingerichtet haben, müssen Sie eine WAF-Web-ACL (Access Control List) erstellen. Bei vorhandenen Setups können Sie mit der nächsten Vorgehensweise fortfahren.

  1. Suchen Sie in der AWS-Konsole nach AWS WAF & Shield und wählen Sie es aus.
  2. Klicken Sie auf Web-ACL erstellen.
  3. Geben Sie die folgenden Einstellungen an:
    • Name: Geben Sie der ACL einen Namen, z. B. my-waf-web-acl.
    • Region: Wählen Sie die Region aus, in der Sie die WAF anwenden möchten.
    • CloudWatch-Messwerte: Aktivieren Sie die Messwerterfassung, um die Aktivität und die ausgelösten Regeln zu verfolgen.
  4. Wählen Sie nach dem Erstellen die Web-ACL aus, für die Sie die Protokollierung aktivieren möchten.

AWS WAF-Logging konfigurieren

  1. Rufen Sie in der AWS WAF-Konsole den Tab Logging (Protokollierung) Ihrer Web-ACL auf.
  2. Klicken Sie auf Logging aktivieren.
  3. Wählen Sie Amazon S3 als Ziel für Ihre Logs aus.
  4. Wählen Sie den zuvor erstellten S3-Bucket aus, um die Logs zu speichern.
  5. Optional: Konfigurieren Sie ein Logpräfix, um die Logs zu organisieren (z. B. waf-logs/).
  6. Klicken Sie auf Speichern.

Berechtigungen für den S3-Bucket prüfen

Achten Sie darauf, dass der S3-Bucket die richtigen Berechtigungen hat, damit AWS WAF Logs schreiben kann.

  1. Rufen Sie die S3 Console auf.
  2. Wählen Sie den Bucket aus, in dem die Logs gespeichert werden.
  3. Fügen Sie auf dem Tab Berechtigungen die folgende Bucket-Richtlinie hinzu, damit AWS WAF Protokolle schreiben kann:

    {
      "Version": "2012-10-17",
      "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
                "Service": "wafv2.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::your-log-bucket-name/*"
          }
      ]
    }
    
  1. Klicken Sie auf Speichern.

Feeds einrichten

Es gibt zwei verschiedene Einstiegspunkte, um Feeds auf der Google SecOps-Plattform einzurichten:

  • SIEM-Einstellungen > Feeds > Neuen Feed hinzufügen
  • Content Hub > Content-Pakete > Jetzt starten

AWS WAF-Feed einrichten

  1. Klicken Sie auf das Paket Amazon Cloud Platform.
  2. Suchen Sie den Logtyp AWS WAF.
  3. Geben Sie die Werte in den folgenden Feldern an.

    • Quelltyp: Amazon SQS V2
    • Warteschlangenname: Der Name der SQS-Warteschlange, aus der gelesen werden soll
    • S3-URI: Der Bucket-URI.
      • s3://your-log-bucket-name/
        • Ersetzen Sie your-log-bucket-name durch den tatsächlichen Namen Ihres S3-Buckets.
    • Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.

    • Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.

    • Zugriffsschlüssel-ID für SQS-Warteschlange: Ein Kontozugriffsschlüssel, der ein alphanumerischer String mit 20 Zeichen ist.

    • Geheimer Zugriffsschlüssel für SQS-Warteschlange: Ein Konto-Zugriffsschlüssel, der ein alphanumerischer String mit 40 Zeichen ist.

    Erweiterte Optionen

    • Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
    • Asset-Namespace: Der mit dem Feed verknüpfte Namespace.
    • Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
  4. Klicken Sie auf Feed erstellen.

Weitere Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen in dieser Produktfamilie finden Sie unter Feeds nach Produkt konfigurieren.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
Aktion security_result.action Wenn die Aktion ALLOW ist, setzen Sie security_result.action auf ALLOW und security_result.severity auf INFORMATIONAL. Wenn die Aktion BLOCK ist, setzen Sie security_result.action auf BLOCK. Wenn die Aktion CAPTCHA ist und captchaResponse.responseCode 405 ist, setzen Sie security_result.action auf BLOCK und security_result.action_details auf „CAPTCHA {captchaResponse.failureReason}“.
captchaResponse.failureReason security_result.action_details Wird in Verbindung mit „action“ und „captchaResponse.responseCode“ verwendet, um „security_result.action_details“ zu bestimmen.
captchaResponse.responseCode security_result.action_details Wird in Verbindung mit „action“ und „captchaResponse.failureReason“ verwendet, um „security_result.action_details“ zu bestimmen.
httpRequest.clientIp principal.ip, principal.asset.ip Direkt den Attributen „principal.ip“ und „principal.asset.ip“ zugeordnet.
httpRequest.headers target.hostname, target.asset.hostname, network.http.user_agent, network.http.parsed_user_agent, network.http.referral_url, target.location.country_or_region, target.resource.attribute.labels, target.user.userid Durchläuft jeden Header in httpRequest.headers. Wenn der Headername „host“ oder „Host“ lautet, wird der Wert target.hostname und target.asset.hostname zugeordnet. Wenn der Headername „User-Agent“ oder „user-agent“ lautet, wird der Wert „network.http.user_agent“ zugeordnet und in „network.http.parsed_user_agent“ geparst. Wenn der Headername „Referer“ oder „referer“ lautet, wird der Wert network.http.referral_url zugeordnet. Wenn der Headername „(?i)time-zone“ lautet, wird der Wert „target.location.country_or_region“ zugeordnet. Wenn der Headername „authorization“ lautet, wird der Wert decodiert, der Nutzername extrahiert und target.user.userid zugeordnet. Alle anderen Header werden als Schlüssel/Wert-Paare zu „target.resource.attribute.labels“ hinzugefügt.
httpRequest.httpMethod network.http.method Wird direkt „network.http.method“ zugeordnet.
httpRequest.requestId network.session_id Direkt network.session_id zugeordnet.
httpRequest.uri target.url Direkt zu target.url zugeordnet.
httpSourceId target.resource.name Direkt zu target.resource.name zugeordnet.
httpSourceName metadata.product_event_type Direkt zugeordnet zu metadata.product_event_type.
Labels security_result.rule_labels Durchläuft jedes Label in „labels“. Wenn der Labelname nicht leer ist, wird er als Schlüssel/Wert-Paar zu „security_result.rule_labels“ hinzugefügt.
nonTerminatingMatchingRules security_result.action_details, security_result.rule_labels Durchläuft jede Regel in „nonTerminatingMatchingRules“. Wenn die Aktion ALLOW und die Regelaktion CAPTCHA ist, setzen Sie security_result.action_details auf „CAPTCHA SUCCESSFUL“ und fügen Sie die Regel-ID mit dem Schlüssel „nonTerminatingCaptchaRuleName“ zu security_result.rule_labels hinzu. Wenn die Aktion BLOCK oder ALLOW ist und die Regelaktion COUNT, setzen Sie security_result.action_details auf „COUNT RULE“ und fügen Sie die Regel-ID mit dem Schlüssel „nonTerminatingCountRuleName“ zu security_result.rule_labels hinzu. Wenn die Aktion BLOCK oder ALLOW ist und die Regelaktion CHALLENGE lautet, setzen Sie security_result.action_details auf „COUNT RULE“ und fügen Sie die Regel-ID mit dem Schlüssel „nonTerminatingChallengeRuleName“ zu security_result.rule_labels hinzu.
rateBasedRuleList security_result.rule_id, security_result.rule_name, security_result.description Wenn terminatingRuleType „RATE_BASED“ ist, werden alle Regeln in rateBasedRuleList durchlaufen. Wenn „terminatingRuleId“ mit dem Regelnamen übereinstimmt, werden die Regel-ID, der Regelname und die Beschreibung den Feldern „security_result.rule_id“, „security_result.rule_name“ und „security_result.description“ zugeordnet.
responseCodeSent network.http.response_code Direkt network.http.response_code zugeordnet und in eine Ganzzahl konvertiert.
ruleGroupList intermediary.labels, security_result.rule_id, security_result.rule_name, security_result.description, security_result.detection_fields Durchläuft jede Regelgruppe in ruleGroupList. Die Regelgruppen-ID wird als Schlüssel/Wert-Paar zu „intermediary.labels“ hinzugefügt. Wenn „terminatingRuleType“ „MANAGED_RULE_GROUP“ ist und „terminatingRuleId“ mit der Regelgruppen-ID übereinstimmt, werden die Regel-ID, der Regelname und die Beschreibung den Feldern „security_result.rule_id“, „security_result.rule_name“ bzw. „security_result.description“ zugeordnet. Wenn „terminatingRuleType“ „GROUP“ ist, wird die ID der beendenden Regel extrahiert und „security_result.rule_name“ und „security_result.description“ zugeordnet. Die ID der beendenden Regelgruppe wird security_result.rule_labels mit dem Schlüssel „terminatingRuleGroupName“ hinzugefügt. Wenn „terminatingRuleType“ „REGULAR“ ist, wird die Aktion der beendenden Regel extrahiert und den security_result.detection-Feldern mit dem Schlüssel „terminatingRuleAction{index}“ hinzugefügt.
terminatingRuleId security_result.rule_id, security_result.rule_name, security_result.description Wenn „terminatingRuleType“ „RATE_BASED“, „MANAGED_RULE_GROUP“ oder „REGULAR“ ist, wird „terminatingRuleId“ „security_result.rule_id“ und „security_result.rule_name“ zugeordnet und zum Erstellen von „security_result.description“ verwendet.
terminatingRuleMatchDetails security_result.description, security_result.category_details, security_result.detection_fields Wird für jede Übereinstimmung in „terminatingRuleMatchDetails“ durchlaufen. Legt security_result.description auf „Terminating Rule“ fest. Wenn der Bedingungstyp nicht leer ist, wird er zu „security_result.category_details“ hinzugefügt. Wenn der Standort nicht leer ist, wird er mit dem Schlüssel „location“ zu „security_result.detection_fields“ hinzugefügt. Jedes abgeglichene Datenelement wird security_result.detection_fields mit dem Schlüssel „matchedData“ hinzugefügt.
terminatingRuleType security_result.rule_type Direkt security_result.rule_type zugeordnet.
timestamp metadata.event_timestamp In einen Zeitstempel konvertiert und metadata.event_timestamp zugeordnet.
webaclId intermediary.resource.name Direkt zugeordnet zu intermediary.resource.name.
metadata.vendor_name Legen Sie diesen Wert auf „AMAZON“ fest.
metadata.product_name Auf „AWS Web Application Firewall“ festgelegt.
metadata.log_type Legen Sie diesen Wert auf „AWS_WAF“ fest.
network.application_protocol Legen Sie diesen Wert auf „HTTP“ fest.
metadata.event_type Auf „NETWORK_HTTP“ festgelegt, wenn httpRequest.headers einen „host“- oder „Host“-Header enthält. Andernfalls auf „STATUS_UPDATE“ setzen.

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten