Logging zu Firewallregeln verwenden

Mit dem Logging von Firewallregeln können Sie die Auswirkungen Ihrer Firewallregeln beobachten, prüfen und analysieren. Sie können beispielsweise feststellen, ob eine Firewallregel, die Traffic abweisen soll, wie vorgesehen funktioniert. Logging ist auch nützlich, wenn Sie ermitteln müssen, wie viele Verbindungen von einer bestimmten Firewallregel betroffen sind.

Auf dieser Seite wird beschrieben, wie Sie das Logging für Firewallregeln von Virtual Private Cloud aktivieren und deaktivieren. Eine Anleitung zum Logging für Firewallrichtlinienregeln finden Sie unter Hierarchische Firewallrichtlinien und -regeln verwenden.

Auf dieser Seite lesen Sie auch, wie Sie erstellte Logs aufrufen. Weitere Informationen darüber, welche Angaben im Log erfasst werden, sowie Beispiele für Logging und Logformate finden Sie unter Logging von Firewallregeln.

Wenn Sie das Logging für eine Firewallregel aktivieren, können Sie über Firewall Insights Informationen und Empfehlungen dazu abrufen. Weitere Informationen finden Sie unter Firewall Insights in der Dokumentation zu Network Intelligence Center.

Berechtigungen

Zum Ändern von Firewallregeln oder Zugriffslogs benötigen IAM-Hauptkonten eine der folgenden Rollen:

Aufgabe Erforderliche Rolle
Firewallregeln erstellen, löschen oder aktualisieren Projektinhaber oder -bearbeiter oder Sicherheitsadministrator
Logs ansehen Projektinhaber, -bearbeiter oder -betrachter oder Logbetrachter
Weitere Informationen zu IAM-Rollen und Berechtigungen für Logging finden Sie in der Anleitung für die Zugriffssteuerung.

Logging von Firewallregeln aktivieren und deaktivieren

Wenn Sie eine Firewallregel erstellen, können Sie Firewallregel-Logging aktivieren. Weitere Informationen finden Sie unter Firewallregeln erstellen.

Führen Sie die folgenden Schritte aus, um das Logging von Firewallregeln für eine vorhandene Firewallregel zu aktivieren oder zu deaktivieren. Wenn Sie das Logging aktivieren, können Sie steuern, ob Metadatenfelder enthalten sein sollen. Wenn Sie sie weglassen, können Sie Speicherkosten sparen.

Logging von Firewallregeln aktivieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.

    Zu den Firewall-Richtlinien

  2. Prüfen Sie in der Spalte Logs, ob das Firewall-Logging für jede Firewallregel aktiviert oder deaktiviert ist.

  3. Klicken Sie das Kästchen neben jeder Regel an, die Sie aktualisieren möchten, um das Logging für eine oder mehrere Firewallregeln zu aktivieren.

  4. Klicken Sie in der Aktionsleiste VPC-Firewallregeln auf Logs konfigurieren.

  5. Wählen Sie im Dialogfeld Logs konfigurieren die Option Ein aus.

  6. Wenn Sie die Metadatenfelder weglassen möchten, maximieren Sie Logdetails ansehen und entfernen Sie dann das Häkchen aus dem Kästchen Metadaten einschließen.

  7. Klicken Sie auf Save configuration (Konfiguration speichern).

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --enable-logging \
    --logging-metadata=LOGGING_METADATA

Ersetzen Sie dabei Folgendes:

  • RULE_NAME: der Name der Firewallregel.
  • LOGGING_METADATA: ob das Logging von Firewallregeln Metadatenfelder in Firewallregellogs enthält. Sie können dieses Feld nur konfigurieren, wenn Logging aktiviert ist. Der Wert muss exclude-all oder include-all sein. Standardmäßig sind Metadatenfelder enthalten.

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Terraform

Sie können die Terraform-Ressource verwenden, um eine Firewallregel mit aktiviertem Logging zu erstellen.

resource "google_compute_firewall" "rules" {
  project     = var.project_id # Replace this with your project ID in quotes
  name        = "my-firewall-rule"
  network     = "default"
  description = "Creates firewall rule targeting tagged instances"

  log_config {
    metadata = "INCLUDE_ALL_METADATA"
  }

  allow {
    protocol = "tcp"
    ports    = ["80", "8080", "1000-2000"]
  }
  target_tags = ["web"]
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

API

Logging von Firewallregeln für eine vorhandene Firewallregel aktivieren

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME,
  "logConfig": {
    "enable": true,
    "metadata": LOGGING_METADATA
  }
}

Ersetzen Sie die Platzhalter durch gültige Werte:

  • PROJECT_ID: die ID des Projekts, in dem sich die Firewallregel befindet.
  • RULE_NAME: der Name der Firewallregel.
  • LOGGING_METADATA: ob das Logging von Firewallregeln Metadatenfelder in Firewallregellogs enthält. Sie können dieses Feld nur konfigurieren, wenn Logging aktiviert ist. Der Wert muss exclude-all oder include-all sein. Standardmäßig sind Metadatenfelder enthalten.

Weitere Informationen finden Sie in der Methode firewalls.patch.

Logging von Firewallregeln deaktivieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite der Firewall-Richtlinien auf.

    Zu den Firewall-Richtlinien

  2. Prüfen Sie in der Spalte Logs, ob das Firewall-Logging für jede Firewallregel aktiviert oder deaktiviert ist.

  3. Klicken Sie das Kästchen neben jeder Regel an, die Sie aktualisieren möchten, um das Logging für eine oder mehrere Firewallregeln zu deaktivieren.

  4. Klicken Sie in der Aktionsleiste VPC-Firewallregeln auf Logs konfigurieren.

  5. Wählen Sie im Dialogfeld Logs konfigurieren die Option Aus aus und klicken Sie auf Konfiguration speichern.

gcloud

gcloud compute firewall-rules update RULE_NAME \
    --no-enable-logging

Ersetzen Sie RULE_NAME durch den Namen der Firewallregel.

API

Logging von Firewallregeln für eine vorhandene Firewallregel deaktivieren

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/RULE_NAME
{
  "name": "RULE_NAME,
  "logConfig": {
    "enable": false
  }
}

Ersetzen Sie dabei Folgendes:

  • PROJECT_ID: die ID des Projekts, in dem sich die Firewallregel befindet.
  • RULE_NAME: der Name der Firewallregel.

Weitere Informationen finden Sie in der Methode firewalls.patch.

Logs ansehen

Die Firewallregel-Logs werden in dem Projekt erstellt, in dem das Netzwerk mit den VM-Instanzen und Firewallregeln gehostet wird. Bei Verwendung einer freigegebenen VPC werden VM-Instanzen in Dienstprojekten erstellt. Sie nutzen jedoch ein freigegebenes VPC-Netzwerk, das sich im Hostprojekt befindet. Firewallregel-Logs werden in diesem Hostprojekt gespeichert.

Informationen zu Firewallregel-Logs finden Sie im Abschnitt "Log-Explorer" der Google Cloud Console.

Die folgenden Anfragen zeigen, wie Sie nach bestimmten Firewallereignissen suchen können.

Alle Firewalllogs ansehen

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Ressource.

  3. Klicken Sie in der Liste Ressource auswählen auf Subnetzwerk und dann auf Übernehmen.

  4. Klicken Sie auf Logname und wählen Sie in der Liste die Option Firewall aus.

  5. Klicken Sie auf Übernehmen.

Alternativ:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Abfrage.

  3. Wenn das Feld "Abfrageeditor" im Bereich Abfrage nicht angezeigt wird, klicken Sie auf die Schaltfläche Abfrage anzeigen.

  4. Fügen Sie Folgendes in das Feld des Abfrageeditors im Bereich Abfrage ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    
  5. Klicken Sie auf Abfrage ausführen.

Logs für bestimmte Subnetze ansehen

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Ressource.

  3. Klicken Sie in der Liste Ressource auswählen auf Subnetzwerk.

  4. Wählen Sie das Subnetzwerk aus, für das Sie Logs aufrufen möchten, und klicken Sie dann auf Übernehmen.

  5. Klicken Sie auf Logname und wählen Sie in der Liste die Option Firewall aus.

  6. Klicken Sie auf Übernehmen.

Alternativ:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Abfrage.

  3. Wenn das Feld "Abfrageeditor" im Bereich Abfrage nicht angezeigt wird, klicken Sie auf Abfrage anzeigen.

  4. Fügen Sie Folgendes in das Feld des Abfrageeditors im Bereich Abfrage ein. Ersetzen Sie PROJECT_ID durch die Projekt-ID und SUBNET_NAME durch das Subnetzwerk.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    
  5. Klicken Sie auf Abfrage ausführen.

Logs in bestimmten VMs ansehen

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Ressource.

  3. Klicken Sie in der Liste Ressource auswählen auf VM-Instanz.

  4. Wählen Sie die Instanz aus, für die Sie Logs aufrufen möchten, und klicken Sie dann auf Übernehmen.

  5. Klicken Sie auf Logname und wählen Sie in der Liste die Option Firewall aus.

  6. Klicken Sie auf Übernehmen.

Alternativ:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Abfrage.

  3. Wenn das Feld "Abfrageeditor" im Bereich Abfrage nicht angezeigt wird, klicken Sie auf Abfrage anzeigen.

  4. Fügen Sie Folgendes in das Feld des Abfrageeditors im Bereich Abfrage ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID und INSTANCE_ID durch die ID der VM, für die Sie Logs aufrufen möchten.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    
  5. Klicken Sie auf Abfrage ausführen.

Logs für Verbindungen aus einem bestimmten Land ansehen

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Klicken Sie auf Abfrage.

  3. Wenn das Feld "Abfrageeditor" im Bereich Abfrage nicht angezeigt wird, klicken Sie auf Abfrage anzeigen.

  4. Fügen Sie Folgendes in das Feld des Abfrageeditors im Bereich Abfrage ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID und COUNTRY durch den Code ISO 3166-1-alpha-3.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.remote_location.country=COUNTRY
    

Logs exportieren

Informationen zum Exportieren von Firewallregellogs finden Sie unter Senken konfigurieren und verwalten.

Mit den Beispielabfragen können Sie die zu exportierenden Logs einschränken.

Tabelle der Interaktionen

  • Im Falle einer VM-zu-VM-Kommunikation können Log-Datensätze entsprechend den jeweiligen Firewallregeln von beiden VMs generiert werden.
  • Die im Log erfasste Verbindung enthält Pakete, die in beide Richtungen übertragen werden, wenn das erste Paket von der Firewall zugelassen wurde.
  • Für jede VM werden eingehende Verbindungen mit den auf der VM konfigurierten Firewallregeln abgeglichen. Ausgehende Verbindungen werden mit der auf der VM konfigurierten Firewallregel für ausgehenden Traffic verglichen.
  • Eine zulässige Verbindung, die eine Firewallregel mit "zulassen und im Log erfassen" erfüllt, wird nur einmal erfasst. Der Log-Eintrag wird nicht alle 5 Sekunden wiederholt, selbst wenn die Verbindung bestehen bleibt.
  • Eine abgelehnte Verbindung, die einer Firewallregel mit "ablehnen und im Log erfassen" entspricht, wiederholt den Log-Eintrag alle 5 Sekunden, solange Pakete in der abgelehnten Verbindung erkannt werden.

Die folgende Tabelle zeigt das Logging-Verhalten der Firewall aus der Perspektive einer einzelnen VM.

Im vorliegenden Szenario gilt für eine VM1 eine Regel R1 für eingehenden Traffic und eine Regel R2 für ausgehenden Traffic. Für beide Regeln gibt es jeweils Pakete, die übereinstimmen. Daraus ergibt sich das folgende Verhalten beim Firewall-Logging:

VM1 mit Regel R1 für eingehenden Traffic (übereinstimmende Pakete) VM1 mit Regel R2 für ausgehenden Traffic (übereinstimmende Pakete) Verbindungsrichtung Aktion Log
Zulassen + Log Zulassen Eingehender Traffic Zulassen Ein Logeintrag:
disposition=allow, rule=R1
Ablehnen
Zulassen + Log
Ablehnen + Log
Zulassen Zulassen Eingehender Traffic Zulassen Kein Logging
Ablehnen
Zulassen + Log
Ablehnen + Log
Ablehnen + Log Eingehender Traffic Ablehnen Ein Logeintrag alle 5 Sekunden:
disposition=deny, rule=R1
Ablehnen Eingehender Traffic Ablehnen Kein Logging
Zulassen Zulassen + Log Egress Zulassen Ein Logeintrag:
disposition=allow, rule=R2
Ablehnen
Zulassen + Log
Ablehnen + Log
Zulassen Zulassen Egress Zulassen Kein Logging
Ablehnen
Zulassen + Log
Ablehnen + Log
Ablehnen + Log Egress Ablehnen Ein Logeintrag alle 5 Sekunden:
disposition=deny, rule=R2
Ablehnen Egress Ablehnen Kein Logging

Beachten Sie, dass der eingehende und der ausgehende Traffic symmetrisch sind.

Dies ist die detaillierte Beschreibung der Semantik der Firewall-Logs:

  • Zulassen + Log (Logging wird nur für TCP und UDP unterstützt)

    • Wird eine Verbindung in die Richtung initiiert, für die die Regel gilt, wird ein einzelner Log-Datensatz erstellt.
    • Antworttraffic ist aufgrund der Verbindungsverfolgung zulässig. Antworttraffic verursacht unabhängig von den für diese Richtung geltenden Firewallregeln kein Logging.
    • Wenn die Verbindung von der Firewall beendet wird (nach 10 Minuten Inaktivität oder Empfang von TCP RST), kann ein anderes Paket in beide Richtungen Logging auslösen.
    • Das Logging basiert auf 5-Tupeln. TCP-Flags haben keinen Einfluss auf das Logging-Verhalten.
  • Ablehnen + Log (Logging wird nur für TCP und UDP unterstützt)

    • Pakete werden gelöscht (es wird keine Verbindung initiiert).
    • Jedes Paket, das einem eindeutigen 5-Tupel entspricht, wird als fehlgeschlagener Verbindungsversuch im Log erfasst.
    • Dasselbe 5-Tupel wird alle 5 Sekunden erneut im Log erfasst, wenn weiterhin Pakete empfangen werden.

Fehlerbehebung

Logs können nicht angezeigt werden

Wenn Sie im Abschnitt „Log-Explorer“ der Google Cloud Console keine Firewallregellogs anzeigen können, überprüfen Sie Folgendes:

Mögliche Ursache: Unzureichende Berechtigungen

Bitten Sie den Projektinhaber, Ihrem IAM-Hauptkonto mindestens die Rolle Logbetrachter für das Projekt zuzuteilen. Weitere Informationen finden Sie unter Berechtigungen.
Mögliche Ursache: Legacy-Netzwerke werden nicht unterstützt.
Das Logging von Firewallregeln kann in Legacy-Netzwerken nicht verwendet werden. Nur VPC-Netzwerke werden unterstützt.
Mögliche Ursache: Prüfen Sie, ob Sie im richtigen Projekt suchen.
Da Firewallregellogs mit dem Projekt gespeichert werden, das das Netzwerk enthält, sollten Sie unbedingt prüfen, ob Sie im richtigen Projekt nach Logs suchen. Bei Verwendung einer freigegebenen VPC werden VM-Instanzen in Dienstprojekten erstellt. Sie nutzen jedoch ein freigegebenes VPC-Netzwerk, das sich im Hostprojekt befindet. Für freigegebene VPC-Szenarien werden Firewallregel-Logs in diesem Hostprojekt gespeichert.

Wenn die freigegebene VPC beteiligt ist, benötigen Sie die entsprechenden Berechtigungen für das Hostprojekt, um die Firewallregel-Logs aufzurufen. Die VM-Instanzen selbst befinden sich zwar in Dienstprojekten, die Firewallregel-Logs jedoch im Hostprojekt.

Logeinträge fehlen

Mögliche Ursache: Verbindungen entsprechen nicht der erwarteten Firewallregel.

Prüfen Sie, ob sich die erwartete Firewallregel in der Liste der anwendbaren Firewallregeln für eine Instanz befindet. Verwenden Sie die Google Cloud Console, um die Details der betreffenden Instanz anzuzeigen, und klicken Sie dann auf die Schaltfläche Details ansehen im Abschnitt Netzwerkschnittstellen auf der Seite VM-Instanzdetails. Prüfen Sie die anwendbaren Firewallregeln im Abschnitt Firewall- und Routendetails auf der Seite Details zur Netzwerkschnittstelle der VM.

Prüfen Sie unter VPC-Firewallregeln, ob Sie Ihre Firewallregeln korrekt erstellen.

Mit tcpdump können Sie auf der VM feststellen, ob die gesendeten oder empfangenen Verbindungen Adressen, Ports und Protokolle enthalten, die die erwartete Firewallregel erfüllen.

Mögliche Ursache: Es gilt eine Regel mit höherer Priorität, bei der das Logging von Firewallregeln deaktiviert ist.

Firewallregeln werden nach ihren Prioritäten ausgewertet. Aus Sicht einer VM-Instanz ist nur eine Firewallregel für den Traffic gültig.

Es kann vorkommen, dass die Regel, die Sie für die gültige Regel mit der höchsten Priorität halten, tatsächlich nicht die gültige Regel mit der höchsten Priorität ist. Stattdessen gilt eine Regel mit höherer Priorität, für die kein Logging aktiviert ist.

Zur Problembehebung können Sie vorübergehend das Logging für alle möglichen Firewallregeln aktivieren, die für eine VM gelten. Verwenden Sie die Google Cloud Console, um die Details der betreffenden VM anzuzeigen, und klicken Sie dann auf die Schaltfläche Details ansehen im Abschnitt Netzwerkschnittstellen auf der Seite VM-Instanzdetails. Prüfen Sie die anwendbaren Firewallregeln im Abschnitt Firewall- und Routendetails auf der Seite Details zur Netzwerkschnittstelle der VM. Ermitteln Sie in dieser Liste Ihre benutzerdefinierten Regeln. Aktivieren Sie vorübergehend das Logging für all diese benutzerdefinierten Firewallregeln.

Wenn Logging aktiviert ist, können Sie die gültige Regel identifizieren. Deaktivieren Sie nach der Identifikation Logging für alle Regeln, für die es normalerweise nicht erforderlich ist.

Fehlende Metadaten für einige Log-Einträge

Mögliche Ursache: Verzögerung bei der Weiterleitung der Konfiguration

Nach der Aktualisierung einer Firewallregel mit aktiviertem Firewall-Logging kann es einige Minuten dauern, bis Google Cloud die neuen Informationen weiterleitet, die veranlassen, dass der Traffic, der den aktualisierten Komponenten der Regel entspricht, im Log erfasst wird.

Weitere Informationen