AWS-VPC-Flusslogs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie AWS VPC-Flusslogs mit drei verschiedenen Methoden in Google Security Operations aufgenommen werden: Amazon S3 (Textformat), Amazon CloudWatch Logs mit Kinesis Data Firehose und CSV-Format in Amazon S3. AWS VPC Flow Logs ist eine Funktion, mit der Sie Informationen über den IP-Traffic erfassen können, der in Ihrer VPC an Netzwerkschnittstellen ein- oder ausgeht. Mit dieser Integration können Sie diese Logs zur Analyse und zum Monitoring an Google SecOps senden.

Unterstützte AWS-VPC-Flusslogformate

Google SecOps unterstützt die Aufnahme von AWS VPC Flow Logs in zwei primären Textformaten:

  • JSON-Format: Beim Logtyp AWS_VPC_FLOW werden Logs im JSON-Format geparst. In diesem Format enthält jeder Logeintrag sowohl einen Schlüssel als auch den entsprechenden Wert, sodass die Daten selbsterklärend sind.
  • CSV-Format: Google SecOps bietet auch einen Parser für AWS VPC-Flusslogs im CSV-Format. In diesem Format werden Feldschlüssel nur einmal in der Kopfzeile aufgeführt. Die nachfolgenden Zeilen enthalten nur durch Kommas getrennte Werte.

Da das CSV-Format keine Feldschlüssel in den einzelnen Logeinträgen enthält, ist für den AWS_VPC_FLOW_CSV-Parser eine strenge, vordefinierte Reihenfolge der Werte erforderlich. Ihre CSV-Dateien müssen die folgende Feldreihenfolge für das korrekte Parsen einhalten:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

Hier ein Beispiel für eine CSV-Logzeile:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

Für Felder, für die kein Wert verfügbar ist, sollte ein leerer Wert (z. B. ,,) übergeben werden, um die richtige Position in der CSV-Zeile beizubehalten.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz.
  • Privilegierter Zugriff auf AWS.

Option 1: AWS VPC-Flusslogexport mit AWS S3 konfigurieren (Textformat)

Im folgenden Abschnitt wird beschrieben, wie Sie Amazon S3- und IAM-Berechtigungen (Identity and Access Management) konfigurieren, um den Export von VPC-Flusslogs für die Analyse durch Google SecOps zu ermöglichen.

AWS S3-Bucket und IAM für Google SecOps 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 zur späteren Verwendung (z. B. aws-vpc-flowlogs).
  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 Drittanbieterdienst als Anwendungsfall 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 zukünftige 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.
  18. Wählen Sie die Richtlinie aus.
  19. Klicken Sie auf Weiter.
  20. Klicken Sie auf Berechtigungen hinzufügen.

VPC-Flusslogs erstellen (Ziel: Amazon S3, Textformat)

  1. Öffnen Sie die AWS Console > VPC > Ihre VPCs/Subnetze/Netzwerkschnittstellen und wählen Sie den Bereich aus, den Sie protokollieren möchten.
  2. Klicken Sie auf Aktionen > Flow-Log erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Filter: Wählen Sie gemäß Ihrer Richtlinie Alle (oder Annehmen / Ablehnen) aus.
    • Maximales Aggregationsintervall: Wählen Sie 1 Minute (empfohlen) oder 10 Minuten aus.
    • Ziel: An einen Amazon S3-Bucket senden.
    • S3-Bucket-ARN: Geben Sie den im vorherigen Abschnitt erstellten Bucket-Namen im folgenden Format ein: arn:aws:s3:::<your-bucket>.
    • Format für Logeinträge: Wählen Sie AWS-Standardformat aus.
    • Log file format (Logdateiformat): Wählen Sie Text (Plain) (Text (einfach)) aus.
    • Optional: Deaktivieren Sie Hive-kompatible Präfixe und Stündliche Partitionen, sofern Sie sie nicht benötigen.
  4. Klicken Sie auf Flow-Log erstellen.

Feed in Google SecOps konfigurieren, um AWS VPC-Flusslogs (S3-Text) aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf + Neuen Feed hinzufügen.
  3. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS VPC Flow Logs - S3 (Text).
  4. Wählen Sie Amazon S3 V2 als Quelltyp aus.
  5. Wählen Sie AWS VPC Flow als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:
    • S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B. s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
    • Maximales Dateialter: Standardmäßig 180 Tage.
    • Zugriffsschlüssel-ID: Zugriffsschlüssel des Nutzers mit Zugriff auf den S3-Bucket.
    • Secret Access Key (Geheimer Zugriffsschlüssel): Geheimer Nutzersicherheitsschlüssel mit Zugriff auf den S3-Bucket.
    • Asset-Namespace: Der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Option 2: AWS VPC Flow Logs-Export mit Amazon CloudWatch Logs und Kinesis Data Firehose konfigurieren

Nachdem Sie die Flow-Logs für CloudWatch eingerichtet haben, bietet diese Option eine zusätzliche Ebene für den Datenexport, indem diese Logdaten mit Kinesis Data Firehose an ein Ziel Ihrer Wahl gestreamt werden.

VPC-Flusslogs erstellen (Ziel: Amazon CloudWatch Logs)

  1. Öffnen Sie die AWS Console> VPC > Ihre VPCs/Subnetze/Netzwerkschnittstellen.
  2. Klicken Sie auf Aktionen > Flow-Log erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Filter: Wählen Sie gemäß Ihrer Richtlinie Alle (oder Akzeptieren/Ablehnen) aus.
    • Maximales Aggregationsintervall: Wählen Sie 1 Minute (empfohlen) oder 10 Minuten aus.
    • Ziel: Wählen Sie An CloudWatch Logs senden aus.
    • Ziel-Loggruppe: Wählen Sie eine Loggruppe aus oder erstellen Sie eine (z. B. /aws/vpc/flowlogs).
    • IAM-Rolle: Wählen Sie eine Rolle aus, die in CloudWatch Logs schreiben kann.
    • Logeintragformat: Wählen Sie AWS-Standard (Version 2) oder Benutzerdefiniert (mit zusätzlichen Feldern) aus.
  4. Klicken Sie auf Flow-Log erstellen.

Feed in Google SecOps erstellen, um Endpunkt-URL und Secret Key zu erhalten

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf + Neuen Feed hinzufügen.
  3. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS VPC Flow Logs - CloudWatch via Firehose.
  4. Wählen Sie Amazon Data Firehose als Quelltyp aus.
  5. Wählen Sie AWS VPC Flow als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:
    • Trennzeichen für Aufteilung: Optional n.
    • Asset-Namespace: Der Asset-Namespace, z. B. aws.vpc.flowlogs.cwl.
    • Labels für Datenaufnahme: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll (z. B. source=vpc_flow_firehose).
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die Feedkonfiguration und klicken Sie auf Senden.
  10. Klicken Sie auf Geheimen Schlüssel generieren, um einen geheimen Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. Kopieren Sie den geheimen Schlüssel und speichern Sie ihn, da Sie ihn nicht noch einmal aufrufen können.
  12. Wechseln Sie zum Tab Details.
  13. Kopieren Sie die Feed-Endpunkt-URL aus dem Feld Endpoint Information (Endpunktinformationen).
  14. Klicken Sie auf Fertig.

API-Schlüssel für den Amazon Data Firehose-Feed erstellen

  1. Rufen Sie in der Google Cloud Console die Seite Anmeldedaten auf.
  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie dann API-Schlüssel aus.
  3. Kopieren Sie den Schlüssel und speichern Sie ihn an einem sicheren Ort.
  4. Schränken Sie den Zugriff des API-Schlüssels auf die Google SecOps API ein.

IAM-Berechtigungen für CloudWatch Logs zu Firehose konfigurieren

  1. Rufen Sie in der AWS Console IAM > Richtlinien > Richtlinie erstellen > JSON auf.
  2. Fügen Sie die folgende Richtlinien-JSON ein und ersetzen Sie <region> und <account-id> durch Ihre AWS-Region und Konto-ID:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
       }
    ]
    }
    
  3. Geben Sie der Richtlinie den Namen CWLtoFirehoseWrite und klicken Sie auf Richtlinie erstellen.

  4. Klicken Sie auf IAM > Rollen > Rolle erstellen.

  5. Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus und fügen Sie Folgendes ein:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Principal": {
          "Service": "logs.<region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
       }
    ]
    }
    
  6. Hängen Sie die Richtlinie CWLtoFirehoseWrite an die Rolle an.

  7. Geben Sie der Rolle den Namen CWLtoFirehoseRole und klicken Sie auf Rolle erstellen.

Amazon Kinesis Data Firehose für Google SecOps konfigurieren

  1. Rufen Sie in der AWS Console Kinesis > Data Firehose > Create delivery stream auf.
  2. Geben Sie die folgenden Konfigurationsdetails an:
    • Quelle: Wählen Sie Direkter PUT oder andere Quellen aus.
    • Ziel: Wählen Sie HTTP-Endpunkt aus.
    • Name: cwlogs-to-secops
    • HTTP-Endpunkt-URL: Geben Sie die Feed-HTTPS-Endpunkt-URL aus Google SecOps mit angehängtem API-Schlüssel ein: <ENDPOINT_URL>?key=<API_KEY>.
    • HTTP-Methode: Wählen Sie POST aus.
  3. Unter Zugriffsschlüssel:
    • Geben Sie den Secret key ein, der im Google SecOps-Feed generiert wurde (dies wird zum X-Amz-Firehose-Access-Key-Header).
    • Pufferungshinweise: Legen Sie Puffergröße auf 1 MiB und Pufferintervall auf 60 Sekunden fest.
    • Komprimierung: Wählen Sie Deaktiviert aus.
    • S3-Sicherung: Wählen Sie Deaktiviert aus.
    • Behalten Sie für die Einstellungen retry und logging die Standardwerte bei.
  4. Klicken Sie auf Lieferstream erstellen.

CloudWatch Logs-Gruppe für den Firehose-Stream abonnieren

  1. Rufen Sie CloudWatch > Logs > Log groups auf.
  2. Wählen Sie die Zielloggruppe aus, z. B. /aws/vpc/flowlogs.
  3. Öffnen Sie den Tab Abo-Filter und klicken Sie auf Erstellen.
  4. Wählen Sie Amazon Kinesis Data Firehose-Abo-Filter erstellen aus.
  5. Geben Sie die folgenden Konfigurationsdetails an:
    • Ziel: Wählen Sie den Auslieferungsstream cwlogs-to-secops aus.
    • Berechtigung erteilen: Wählen Sie die Rolle CWLtoFirehoseRole aus.
    • Filtername: Geben Sie all-events ein.
    • Filtermuster: Lassen Sie das Feld leer, um alle Ereignisse zu senden.
  6. Klicken Sie auf Streaming starten.

Option 3: AWS VPC-Flusslogs im CSV-Format mit Amazon S3 konfigurieren

Protokolle in das CSV-Format umwandeln (optional)

  1. Achten Sie darauf, dass die CSV-Zeilen einer strengen, einheitlichen Spaltenreihenfolge entsprechen, die mit den Feldern übereinstimmt, die Sie im benutzerdefinierten Format für VPC-Flow-Logs ausgewählt haben (z. B. der kanonische v2-Feldsatz oder Ihr v5-/v7-Satz). Fügen Sie in Produktionsdateien keine Kopfzeile ein, es sei denn, dies ist für Ihre Parseroption erforderlich.
  2. Schreiben Sie CSV-Dateien in ein stabiles Präfix, z. B. s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/.

Feed in Google SecOps konfigurieren, um AWS VPC-Flusslogs (CSV) aufzunehmen

  1. Rufen Sie die SIEM-Einstellungen > Feeds auf.
  2. Klicken Sie auf + Neuen Feed hinzufügen.
  3. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS VPC Flow Logs - S3 (CSV).
  4. Wählen Sie Amazon S3 V2 als Quelltyp aus.
  5. Wählen Sie AWS VPC Flow (CSV) als Log type (Logtyp) aus.
  6. Klicken Sie auf Weiter.
  7. Geben Sie Werte für die folgenden Eingabeparameter an:
    • S3-URI: Geben Sie die Adresse des S3-Buckets ein, z. B. s3://<your-bucket>/vpcflowlogs-csv/<region>/.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
    • Maximales Dateialter: Standardmäßig 180 Tage.
    • Zugriffsschlüssel-ID: Zugriffsschlüssel des Nutzers mit Zugriff auf den S3-Bucket.
    • Secret Access Key (Geheimer Zugriffsschlüssel): Geheimer Nutzersicherheitsschlüssel mit Zugriff auf den S3-Bucket.
    • Asset-Namespace: Der Asset-Namespace.
    • Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
  8. Klicken Sie auf Weiter.
  9. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
accountId read_only_udm.metadata.product_log_id Wert, der aus dem Rohlogfeld accountId extrahiert wurde.
Aktion read_only_udm.security_result.action_details Wert, der aus dem Rohlogfeld action extrahiert wurde.
Aktion read_only_udm.security_result.action Wird ALLOW zugeordnet, wenn action ACCEPT ist, und BLOCK, wenn action REJECT ist.
az_id read_only_udm.principal.cloud.availability_zone Wert, der aus dem Rohlogfeld az_id extrahiert wurde.
Byte read_only_udm.network.received_bytes Wert, der aus dem Rohlogfeld bytes extrahiert wurde.
dstaddr read_only_udm.target.ip Wert, der aus dem Rohlogfeld dstaddr extrahiert wurde.
dstport read_only_udm.target.port Wert, der aus dem Rohlogfeld dstport extrahiert wurde.
end_time read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld end_time extrahiert wurde.
end_time read_only_udm.metadata.ingested_timestamp Wert, der aus dem Rohlogfeld end_time extrahiert wurde.
flow_direction read_only_udm.network.direction Wird INBOUND zugeordnet, wenn flow_direction gleich ingress ist, und OUTBOUND, wenn flow_direction gleich egress ist.
InstanceID read_only_udm.principal.cloud.project.id Wert, der aus dem Rohlogfeld InstanceID extrahiert wurde.
interfaceId read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld interfaceId extrahiert wurde.
logStatus read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld logStatus extrahiert wurde.
Pakete read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld packets extrahiert wurde.
pkt_dst_aws_service read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld pkt_dst_aws_service extrahiert wurde.
pkt_dstaddr read_only_udm.intermediary.ip Wert, der aus dem Rohlogfeld pkt_dstaddr extrahiert wurde.
pkt_srcaddr read_only_udm.intermediary.ip Wert, der aus dem Rohlogfeld pkt_srcaddr extrahiert wurde.
pkt_src_aws_service read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld pkt_src_aws_service extrahiert wurde.
Protokoll read_only_udm.network.ip_protocol Wird TCP zugeordnet, wenn protocol = 6, UDP, wenn protocol = 17, andernfalls UNKNOWN_IP_PROTOCOL.
Region read_only_udm.principal.location.country_or_region Wert, der aus dem Rohlogfeld Region extrahiert wurde.
srcaddr read_only_udm.principal.ip Wert, der aus dem Rohlogfeld srcaddr extrahiert wurde.
srcport read_only_udm.principal.port Wert, der aus dem Rohlogfeld srcport extrahiert wurde.
start_time read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld start_time extrahiert wurde.
start_time read_only_udm.metadata.event_timestamp Wert, der aus dem Rohlogfeld start_time extrahiert wurde.
SubnetID read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld SubnetID extrahiert wurde.
tcp_flags read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld tcp_flags extrahiert wurde.
traffic_path read_only_udm.about.resource.attribute.labels.value Wert, der aus dem Rohlogfeld traffic_path extrahiert wurde.
Version read_only_udm.metadata.product_version Wert, der aus dem Rohlogfeld version extrahiert wurde.
vpcID read_only_udm.principal.cloud.vpc.id Wert, der aus dem Rohlogfeld vpcID extrahiert wurde.
read_only_udm.metadata.vendor_name Hartcodiert auf AMAZON.
read_only_udm.metadata.product_name Hartcodiert auf AWS VPC Flow.
read_only_udm.metadata.log_type Hartcodiert auf AWS_VPC_FLOW.
read_only_udm.metadata.event_type Wird NETWORK_CONNECTION zugeordnet, wenn dstaddr nicht leer ist, andernfalls GENERIC_EVENT.

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