AWS WAF-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie die AWS Web Application Firewall-Logs (WAF) 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.

Hinweise

*Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz
  • Privilegierter Zugriff auf AWS

Amazon S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu dieser Anleitung: 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 Abschnitt 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 bestehenden Setups können Sie mit der nächsten Anleitung fortfahren.

  1. Suchen Sie in der AWS-Konsole nach AWS WAF & Shield und wählen Sie diese Option aus.
  2. Klicken Sie auf Web-ACL erstellen.
  3. Nehmen Sie die folgenden Einstellungen vor:
    • 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 der Erstellung die Web-ACL aus, für die Sie die Protokollierung aktivieren möchten.

AWS WAF-Protokollierung 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 zum Speichern der Logs aus.
  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 Permissions (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 zum Einrichten von Feeds in der Google SecOps-Plattform:

  • SIEM-Einstellungen > Feeds
  • Content Hub> Content-Pakete

Feeds über die SIEM-Einstellungen > „Feeds“ einrichten

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

So konfigurieren Sie einen einzelnen Feed:

  1. Rufen Sie die SIEM-Einstellungen> Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS WAF Logs (AWS WAF-Protokolle).
  5. Wählen Sie Amazon S3 als Quelltyp aus.
  6. Wählen Sie AWS WAF als Logtyp aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Region: Die Region, in der sich der Amazon S3-Bucket befindet.
    • S3-URI: Der Bucket-URI.
      • s3://your-log-bucket-name/waf-logs/
        • Dabei gilt:
          • your-log-bucket-name: Der tatsächliche Name des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
    • Access Key ID (Zugriffsschlüssel-ID): Der Zugriffsschlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.

    • Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.

    • Asset-Namespace: Der Asset-Namespace.

    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.

  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Feeds über den Content Hub einrichten

Geben Sie Werte für die folgenden Felder an:

  • Region: Die Region, in der sich der Amazon S3-Bucket befindet.
  • S3-URI: Der Bucket-URI.
    • s3://your-log-bucket-name/
      • Ersetzen Sie your-log-bucket-name durch den tatsächlichen Namen Ihres S3-Buckets.
  • URI ist ein: Wählen Sie je nach Bucket-Struktur entweder Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
  • Optionen zum Löschen der Quelle: Wählen Sie die Löschoption entsprechend Ihren Aufnahmeeinstellungen aus.
  • Access Key ID (Zugriffsschlüssel-ID): Der Zugriffsschlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.

  • Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Berechtigungen zum Lesen aus dem S3-Bucket.

Erweiterte Optionen

  • Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
  • Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
  • Asset-Namespace: Namespace, der dem Feed zugeordnet ist.
  • Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.

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 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 target.url zugeordnet.
httpSourceId target.resource.name Wird direkt „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 und die Regelaktion COUNT ist, legen Sie security_result.action_details auf „COUNT RULE“ fest 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, 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, wird jede Regel 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“ bzw. „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“ und „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 „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 übereinstimmende Datenelement wird mit dem Schlüssel „matchedData“ zu „security_result.detection_fields“ hinzugefügt.
terminatingRuleType security_result.rule_type Wird direkt security_result.rule_type zugeordnet.
timestamp metadata.event_timestamp In einen Zeitstempel konvertiert und metadata.event_timestamp zugeordnet.
webaclId intermediary.resource.name Wird direkt intermediary.resource.name zugeordnet.
metadata.vendor_name Legen Sie diesen Wert auf „AMAZON“ fest.
metadata.product_name Auf „AWS Web Application Firewall“ festgelegt.
metadata.log_type Auf „AWS_WAF“ festgelegt.
network.application_protocol Legen Sie diesen Wert auf „HTTP“ fest.
metadata.event_type Wird auf „NETWORK_HTTP“ festgelegt, wenn httpRequest.headers einen „host“- oder „Host“-Header enthält. Andernfalls auf „STATUS_UPDATE“ setzen.

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