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 VPC-Firewallregeln aktivieren und deaktivieren. Eine Anleitung zum Logging von Regeln zu Firewallrichtlinien finden Sie in dieser Dokumentation.

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 – Übersicht.

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-Mitglieder 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.

Firewallregel-Logging 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 Anweisungen aus, um Firewall-Logging 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.

Firewallregel-Logging aktivieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Firewall“ auf.
    Zur Seite "Firewall"
  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 einer Firewallregel an, um das Logging für eine oder mehrere Firewallregeln zu aktivieren.
  4. Klicken Sie in der Aktionsleiste 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 und entfernen Sie dann den Haken aus Metadaten einschließen.
  7. Klicken Sie auf Konfiguration speichern.

gcloud

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

Ersetzen Sie die Platzhalter durch gültige Werte:

  • NAME ist der Name der Firewallregel.
  • LOGGING_METADATA gibt an, 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.

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 ist die ID des Projekts, in dem sich die Firewallregel befindet.
  • RULE_NAME ist der Name der Firewallregel.
  • LOGGING_METADATA gibt an, 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 im Artikel zur Methode firewalls.patch.

Firewallregel-Logging deaktivieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Firewall“ auf.
    Zur Seite "Firewall"
  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 einer Firewallregel an, um das Logging für eine oder mehrere Firewallregeln zu deaktivieren.
  4. Klicken Sie in der Aktionsleiste 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 NAME \
    --no-enable-logging

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": false
  }
}

Ersetzen Sie die Platzhalter durch gültige Werte:

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

Weitere Informationen finden Sie im Artikel zur 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.

Verwenden Sie den Abschnitt Logs der Cloud Console, um sich Firewallregellogs anzusehen.

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

Alle Firewalllogs

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Wählen Sie im ersten Drop-down-Menü die Option Subnetzwerk aus.
  3. Wählen Sie im zweiten Drop-down-Menü die Option compute.googleapis.com/firewall aus.
  4. Klicken Sie auf OK.

Alternativ:

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Klicken Sie auf den Drop-down-Pfeil rechts neben dem Feld Nach Label oder Textsuche filtern und wählen Sie In erweiterten Filter umwandeln aus.
  3. Fügen Sie Folgendes in das Feld ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    

Bestimmte Subnetze

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Bewegen Sie den Cursor im ersten Drop-down-Menü auf Subnetzwerk und bewegen Sie ihn dann nach rechts, um das Auswahlmenü für die einzelnen Subnetze zu öffnen.
  3. Wählen Sie im zweiten Drop-down-Menü compute.googleapis.com/firewall aus.
  4. Klicken Sie auf OK.

Alternativ:

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Klicken Sie auf den Drop-down-Pfeil rechts neben dem Feld Nach Label oder Textsuche filtern und wählen Sie In erweiterten Filter umwandeln aus.
  3. Fügen Sie Folgendes in das Feld ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID und SUBNET_NAME durch Ihr Subnetzwerk.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    

Bestimmte VMs

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Klicken Sie auf den Drop-down-Pfeil rechts neben dem Feld Nach Label oder Textsuche filtern und wählen Sie In erweiterten Filter umwandeln aus.
  3. Fügen Sie Folgendes in das Feld ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID und INSTANCE_NAME durch Ihre VM.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_NAME"
    

Verbindungen aus einem bestimmten Land

  1. Rufen Sie in der Google Cloud Console die Seite „Logs“ auf.
    Zur Seite "Logs"
  2. Klicken Sie auf den Drop-down-Pfeil rechts neben dem Feld Nach Label oder Textsuche filtern und wählen Sie In erweiterten Filter umwandeln aus.
  3. Fügen Sie Folgendes in das Feld 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
    

Export von Logs

Informationen zum Export der Firewallregellogs finden Sie in den Logging-Anleitungen unter Export über die Loganzeige.

Mit den erweiterten Beispielfiltern 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 Ausgehender Traffic Zulassen Ein Logeintrag:
disposition=allow, rule=R2
Ablehnen
Zulassen + Log
Ablehnen + Log
Zulassen Zulassen Ausgehender Traffic Zulassen Kein Logging
Ablehnen
Zulassen + Log
Ablehnen + Log
Ablehnen + Log Ausgehender Traffic Ablehnen Ein Logeintrag alle 5 Sekunden:
disposition=deny, rule=R2
Ablehnen Ausgehender Traffic 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 "Logs" der Cloud Console keine Firewallregellogs anzeigen können, prüfen Sie Folgendes:

Mögliche Ursache: Unzureichende Berechtigungen

Bitten Sie den Projektinhaber, Ihrem IAM-Mitglied mindestens die Rolle Logbetrachter für das Projekt zuzuteilen. Weitere Informationen finden Sie unter Berechtigungen.
Mögliche Ursache: Subnetzwerklogs werden möglicherweise aus dem Logging ausgeschlossen.
Rufen Sie in der Cloud Console Logging > Logaufnahme auf und prüfen Sie, ob entweder das GCE-Subnetzwerk nicht ausgeschlossen ist oder, falls es teilweise ausgeschlossen ist, ob der Ausschlussfilter nicht für Firewalllogs gilt.
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.

Log-Einträ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. Sehen Sie sich in der Cloud Console die Details zur entsprechenden Instanz an. Klicken Sie dann im Abschnitt Netzwerkschnittstellen auf der Seite VM-Instanzdetails auf die Schaltfläche Details ansehen. Prüfen Sie die anwendbaren Firewallregeln im Abschnitt Firewallregeln und Routendetails auf der Seite Details zur Netzwerkschnittstelle.

Prüfen Sie in der Übersicht der Firewallregeln, ob Sie Ihre Firewallregeln korrekt erstellt haben.

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 Firewallregel-Logging 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. Sehen Sie sich in der Cloud Console die Details zur entsprechenden VM an. Klicken Sie dann im Abschnitt Netzwerkschnittstellen auf der Seite VM-Instanzdetails auf die Schaltfläche Details ansehen. Prüfen Sie die anwendbaren Firewallregeln im Abschnitt Firewallregeln und Routendetails auf der Seite Details zur Netzwerkschnittstelle. 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