Logging von Firewallregeln – Übersicht

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 von Firewallregeln ist auch nützlich, wenn Sie ermitteln müssen, wie viele Verbindungen von einer bestimmten Firewallregel betroffen sind.

Sie aktivieren das Logging von Firewallregeln für jede Firewallregel, deren Verbindungen Sie protokollieren möchten. Die Option des Loggings von Firewallregeln kann für jede Firewallregel unabhängig von der Aktion (allow oder deny) oder der Richtung (eingehend oder ausgehend) genutzt werden.

Wenn Sie das Logging von Firewallregeln aktivieren, erstellt Google Cloud jedes Mal, wenn die Regel Traffic zulässt oder ablehnt, einen als Verbindungsdatensatz bezeichneten Eintrag. Sie können diese Verbindungsdatensätze zur Analyse in Cloud Logging, Pub/Sub oder BigQuery exportieren.

Jeder Verbindungsdatensatz enthält die folgenden Angaben: IP-Adressen der Quelle und des Ziels, Protokoll, Ports, Datum und Uhrzeit sowie einen Verweis auf die für den Traffic gültige Firewallregel.

Informationen zum Anzeigen von Protokollen finden Sie unter Logging von Firewallregeln verwenden.

Spezifikationen

Für das Logging von Firewallregeln gelten die folgenden Spezifikationen:

Beschränkungen beim Logging von Verbindungen

Die maximale Anzahl von Verbindungen, die pro VM-Instanz protokolliert werden können, hängt vom Maschinentyp ab. Die Beschränkungen beim Logging von Verbindungen werden angegeben als die maximale Anzahl von Verbindungen, die in einem Intervall von fünf Sekunden erfasst werden können.

Maschinentyp der Instanz Maximale Anzahl der in einem 5-Sekunden-Intervall protokollierten Verbindungen
f1-micro 100 Verbindungen
g1-small 250 Verbindungen
Maschinentypen mit 1–8 vCPUs 500 Verbindungen pro vCPU
Maschinentypen mit mehr als 8 vCPUs 4.000 (500×8) Verbindungen

Logging-Beispiele

Logeinträge werden immer generiert, wenn auf den Traffic eine Firewallregel mit aktiviertem Logging zutrifft. Ein Paketfluss kann insgesamt mehrere Logeinträge generieren. Aus der Perspektive einer bestimmten VM kann jedoch höchstens ein Logeintrag erzeugt werden, wenn für die geltende Firewallregel Logging aktiviert ist.

Die folgenden Beispiele zeigen die Funktionsweise von Firewalllogs.

Beispiel "ausgehenden Traffic ablehnen"

Für dieses Beispiel gilt:

  • Berücksichtigt wird der Traffic zwischen VM-Instanzen im VPC-Netzwerk example-net im Projekt example-proj.
  • Betroffene VM-Instanzen:
    • VM1 in Zone us-west1-a mit IP-Adresse 10.10.0.99 in der west-subnet (Region us-west1).
    • VM2 in Zone us-east1-a mit IP-Adresse 10.20.0.99 in der east-subnet (Region us-east1).
  • Regel A: Eine Firewallregel "ausgehenden Traffic ablehnen" bezieht sich auf alle Instanzen im Netzwerk, das Ziel 10.20.0.99 (VM2) und den TCP-Port 80.
    • Logging ist für die Regel aktiviert.
  • Regel B: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, die Quelle 10.10.0.99 (VM1) und den TCP-Port᠎ 80.
    • Logging ist für diese Regel ebenfalls aktiviert.

Die folgenden gcloud Befehle können zum Erstellen der Firewallregeln verwendet werden:

  • Regel A: Firewallregel "ausgehenden Traffic ablehnen" für TCP 80, anwendbar auf alle Instanzen, Richtung 10.20.0.99:

        gcloud compute firewall-rules create rule-a \
            --network example-net \
            --action deny \
            --direction egress \
            --rules tcp:80 \
            --destination-ranges 10.20.0.99/32 \
            --priority 10 \
            --enable-logging
        
  • Regel B: Firewallregel "eingehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, Quelle 10.10.0.99:

        gcloud compute firewall-rules create rule-b \
            --network example-net \
            --action allow \
            --direction ingress \
            --rules tcp:80 \
            --source-ranges 10.10.0.99/32 \
            --priority 10 \
            --enable-logging
        
VM1-zu-VM2-Verbindung (zum Vergrößern klicken)
VM1-zu-VM2-Verbindung (zum Vergrößern klicken)

Szenario: VM1 versucht, am TCP-Port 80 eine Verbindung zu VM2 herzustellen. Die folgenden Firewallregeln werden in Logs erfasst:

  • Für Regel A wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 versucht, eine Verbindung zu 10.20.0.99 (VM2) herzustellen.
  • Da Regel A den Traffic blockiert, wird Regel B nie berücksichtigt. Daher gibt es aus Sicht von VM2 keinen Logeintrag für Regel B.

Im folgenden Beispiel wird der Firewall-Logdatensatz generiert.

Feld Werte
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition DENIED
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Beispiel "ausgehenden Traffic zulassen, eingehenden Traffic zulassen"

Für dieses Beispiel gilt:

  • Berücksichtigt wird der Traffic zwischen VM-Instanzen im VPC-Netzwerk example-net im Projekt example-proj.
  • Betroffene VM-Instanzen:
    • VM1 in Zone us-west1-a mit IP-Adresse 10.10.0.99 in der west-subnet (Region us-west1).
    • VM2 in Zone us-east1-a mit IP-Adresse 10.20.0.99 in der east-subnet (Region us-east1).
  • Regel A: Eine Firewallregel "ausgehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, das Ziel 10.20.0.99 (VM2) und den TCP-Port 80.
    • Logging ist für die Regel aktiviert.
  • Regel B: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, die Quelle 10.10.0.99 (VM1) und den TCP-Port᠎ 80.
    • Logging ist für diese Regel ebenfalls aktiviert.

Die folgenden gcloud-Befehle können zum Erstellen der beiden Firewallregeln verwendet werden:

  • Regel A: Firewallregel "ausgehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, Richtung 10.20.0.99 (VM2):

        gcloud compute firewall-rules create rule-a \
            --network example-net \
            --action allow \
            --direction egress \
            --rules tcp:80 \
            --destination-ranges 10.20.0.99/32 \
            --priority 10 \
            --enable-logging
        
  • Regel B: Firewallregel "eingehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, Quelle 10.10.0.99 (VM1):

        gcloud compute firewall-rules create rule-b \
            --network example-net \
            --action allow \
            --direction ingress \
            --rules tcp:80 \
            --source-ranges 10.10.0.99/32 \
            --priority 10 \
            --enable-logging
        
VM1-zu-VM2-Verbindung (zum Vergrößern klicken)
VM1-zu-VM2-Verbindung (zum Vergrößern klicken)

Szenario: VM1 versucht, am TCP-Port 80 eine Verbindung zu VM2 herzustellen. Die folgenden Firewallregeln werden in Logs erfasst:

  • Für Regel A wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 eine Verbindung zu 10.20.0.99 (VM2) herstellt.
  • Für Regel B wird ein Logeintrag aus der Perspektive von VM2 generiert, wenn VM2 eingehende Verbindungen von 10.10.0.99 (VM1) akzeptiert.

Im folgenden Beispiel wird der von VM1 gemeldete Firewall-Logdatensatz generiert.

Feld Werte
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Im folgenden Beispiel wird der von VM2 gemeldete Firewall-Logdatensatz generiert.

Feld Werte
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location Keine Informationen: Dieses Feld wird nur verwendet, wenn sich das Ziel außerhalb Ihres VPC-Netzwerks befindet.

Beispiel "eingehender Traffic aus dem Internet"

Für dieses Beispiel gilt:

  • Berücksichtigt wird der Traffic von einem System außerhalb des VPC-Netzwerks example-net zu einer VM-Instanz in diesem Netzwerk. Dieses Netzwerk befindet sich im Projekt example-proj.
  • Das System im Internet hat die IP-Adresse 203.0.113.114.
  • VM1 in Zone us-west1-a hat die IP-Adresse 10.10.0.99 in der west-subnet (Region us-west1).
  • Regel C: Eine Firewallregel "eingehenden Traffic zulassen" bezieht sich auf alle Instanzen im Netzwerk, eine Quelle mit einer beliebigen IP-Adresse 0.0.0.0/0 und den TCP-Port᠎ 80.
    • Logging ist für die Regel aktiviert.
  • Regel D: Die Firewallregel "ausgehenden Traffic ablehnen" bezieht sich auf alle Instanzen im Netzwerk, ein Ziel mit einer beliebigen IP-Adresse 0.0.0.0/0 und alle Protokolle.
    • Logging ist für diese Regel ebenfalls aktiviert.

Die folgenden gcloud-Befehle können zum Erstellen der Firewallregeln verwendet werden:

  • Regel C: Regel "eingehenden Traffic zulassen" für TCP 80, anwendbar auf alle Instanzen, beliebige Quelle:

        gcloud compute firewall-rules create rule-c \
            --network example-net \
            --action allow \
            --direction ingress \
            --rules tcp:80 \
            --source-ranges 0.0.0.0/0 \
            --priority 10 \
            --enable-logging
        
  • Regel D: Regel "ausgehenden Traffic ablehnen" für alle Protokolle, anwendbar auf alle Instanzen, beliebige Richtung:

        gcloud compute firewall-rules create rule-d \
            --network example-net \
            --action deny \
            --direction egress \
            --rules all \
            --destination-ranges 0.0.0.0/0 \
            --priority 10 \
            --enable-logging
        
Internet-zu-VM-Verbindung (zum Vergrößern klicken)
Internet-zu-VM-Verbindung (zum Vergrößern klicken)

Szenario: Das System mit der IP-Adresse 203.0.113.114 versucht, eine Verbindung zu VM1 am TCP-Port 80 herzustellen. Folgendes geschieht:

  • Für Regel C wird ein Logeintrag aus der Perspektive von VM1 generiert, wenn VM1 Traffic von 203.0.113.114 annimmt.
  • Trotz Regel D darf VM1 auf die eingehende Anfrage antworten, weil Google Cloud-Firewallregeln zustandsorientiert sind. Wenn die eingehende Anfrage zulässig ist, können zugehörige Antworten durch keine Regel für ausgehenden Traffic blockiert werden.
  • Da Regel D nicht zutrifft, wird sie nie berücksichtigt. Daher gibt es für Regel D keinen Logeintrag.

Im folgenden Beispiel wird der Firewall-Logdatensatz generiert.

Feld Werte
connection src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=tcp
disposition ALLOWED
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location Kontinent
Land
Region
Stadt

Firewall-Logformat

Je nach den Spezifikationen wird in Cloud Logging für jede Firewallregel mit aktiviertem Logging ein Logeintrag erstellt, wenn die Regel auf Traffic an oder von VM-Instanzen zutrifft.

Firewallregeln folgen dem in der folgenden Tabelle angegebenen Format.

Logging LogEntry-JSON-Nutzlast-Felder enthalten Nachrichten mit folgendem Format.

Feld Beschreibung
connection IpConnection
5-Tupel, das die Quell- und Ziel-IP-Adresse, den Quell- und Zielport und das IP-Protokoll dieser Verbindung beschreibt
disposition String
Gibt an, ob die Verbindung den Status ALLOWED oder DENIED hat
rule_details RuleDetails
Details zur Regel, die auf diese Verbindung angewendet wurde
instance InstanceDetails
Details zur VM-Instanz In einer freigegebenen VPC-Konfiguration entspricht project_id der ID des Dienstprojekts.
vpc VpcDetails
Details zum VPC-Netzwerk In einer freigegebenen VPC-Konfiguration entspricht project_id der ID des Hostprojekts.
remote_instance InstanceDetails
Wenn der Remote-Endpunkt der Verbindung eine VM in Compute Engine war, enthält dieses Feld VM-Instanzdetails.
remote_vpc VpcDetails
Wenn der Remote-Endpunkt der Verbindung eine VM im VPC-Netzwerk war, enthält dieses Feld VPC-Netzwerkdetails.
remote_location GeografieDetails
Wenn der Remote-Endpunkt der Verbindung außerhalb des VPC-Netzwerks lag, enthält dieses Feld verfügbare Standortmetadaten.

IpConnection

Feld Typ Beschreibung
src_ip string IP-Adresse der Quelle: src_ip ist die interne IP-Adresse der Schnittstelle, wenn die Quelle eine Compute Engine-VM ist. Die externe, öffentliche IP-Adresse wird nicht gezeigt. Logging zeigt die IP-Adresse der VM aus Sicht der VM im Paketheader. Dieselbe IP-Adresse wird angezeigt, wenn Sie einen TCP-Dump für die VM ausführen.
src_port Integer Quellport
dest_ip string IP-Adresse des Ziels: dest_ip ist die interne, private IP-Adresse der Schnittstelle, wenn das Ziel eine Google Cloud-VM ist. Die externe, öffentliche IP-Adresse wird nicht angegeben, auch wenn sie zur Herstellung der Verbindung verwendet wurde.
dest_port Integer Zielport
protocol Integer IP-Protokoll der Verbindung

RuleDetails

Feld Typ Beschreibung
reference string Verweis auf die Firewallregel; Format:
"network:{network name}/firewall:{firewall_name}"
priority Integer Die Priorität für die Firewallregel
action string ALLOW oder DENY
source_range[ ] string Liste der Quellbereiche, für die die Firewallregel gilt
destination_range[ ] string Liste der Zielbereiche, auf die die Firewallregel angewendet wird
ip_port_info[ ] IpPortDetails Liste der IP-Protokolle und anwendbare Portbereiche für Regeln
direction string Die Richtung, auf die die Firewallregel angewendet wird (Eingang oder Ausgang).
source_tag[ ] string Liste aller Quelltags, auf die die Firewallregel angewendet wird
target_tag[ ] string Liste aller Zieltags, auf die die Firewallregel angewendet wird
source_service_account[ ] string Liste aller Quelldienstkonten, auf die die Firewallregel angewendet wird
target_service_account[ ] string Liste aller Zieldienstkonten, auf die die Firewallregel angewendet wird

IpPortDetails

Feld Typ Beschreibung
ip_protocol string IP-Protokoll, für das die Firewallregel gilt. "ALL", wenn sie für alle Protokolle gilt.
port_range[ ] string Liste der anwendbaren Portbereiche für Regeln, zum Beispiel 8080-9090.

InstanceDetails

Feld Typ Beschreibung
project_id string ID des Projekts, das die VM enthält
vm_name string Instanzname der VM
region string Region der VM
zone string Zone der VM

VpcDetails

Feld Typ Beschreibung
project_id string ID des Projekts, das das Netzwerk enthält
vpc_name string Netzwerk, in dem die VM ausgeführt wird
subnetwork_name string Subnetz, in dem die VM ausgeführt wird

GeographicDetails

Feld Typ Beschreibung
continent string Kontinent für externe Endpunkte
country string Land für externe Endpunkte
region string Region für externe Endpunkte
city string Stadt für externe Endpunkte

Weitere Informationen