Il logging delle regole del firewall consente di controllare, verificare e analizzare gli effetti delle regole del firewall. Ad esempio, puoi determinare se una regola firewall progettata per negare il traffico funziona come previsto. Il logging delle regole firewall รจ utile anche se devi determinare quante connessioni sono interessate da una determinata regola firewall.
Attiva il logging delle regole firewall singolarmente per ogni regola firewall
le cui connessioni devi registrare. Il logging delle regole firewall รจ un'opzione
per qualsiasi regola firewall, indipendentemente dall'azione (allow
o deny
) o dalla direzione
(in entrata o in uscita) della regola.
Il logging delle regole firewall registra il traffico da e verso le istanze di macchine virtuali (VM) Compute Engine. Sono inclusi i prodotti basati su VM di Compute Engine, come i cluster Google Kubernetes Engine (GKE) e le istanze dell'ambiente flessibile di App Engine. Google Cloud
Quando abiliti la registrazione per una regola firewall, Google Cloud crea una voce chiamata record di connessione ogni volta che la regola consente o nega il traffico. Puoi visualizzare questi record in Cloud Logging ed esportare i log in qualsiasi destinazione supportata dalle funzionalitร di esportazione di Cloud Logging.
Ogni record di connessione contiene gli indirizzi IP di origine e di destinazione, il protocollo e le porte, la data e l'ora e un riferimento alla regola firewall che รจ stata applicata al traffico.
La registrazione delle regole firewall รจ disponibile sia per le regole firewall VPC sia per i criteri firewall gerarchici.
Per informazioni sulla visualizzazione dei log, vedi Utilizzare il logging delle regole firewall.
Specifiche
Il logging delle regole firewall presenta le seguenti specifiche:
Il logging delle regole firewall puรฒ essere attivato per:
Regole firewall nei criteri firewall gerarchici, nei criteri firewall di rete globali e nei criteri firewall di rete regionali associati a una rete VPC standard.
Regole firewall VPC in una rete VPC normale.
Regole firewall nei criteri firewall di rete regionali associati a una rete VPC RoCE.
Il logging delle regole firewall non supporta quanto segue:
Regole firewall VPC nelle reti legacy.
Regole di traffico in entrata implicito e di traffico in uscita implicito di una rete VPC standard.
Regole implicite di consenso del traffico in entrata e in uscita di una rete VPC RoCE.
Il logging delle regole firewall registra solo le connessioni TCP e UDP. Anche se puoi creare una regola firewall che si applichi ad altri protocolli, non puoi registrare le loro connessioni. Se vuoi registrare anche altri protocolli, valuta la possibilitร di utilizzare il mirroring pacchetto.
Le voci di log vengono scritte dal punto di vista delle VM. Le voci di log vengono create solo se una regola firewall ha la registrazione abilitata e se la regola si applica al traffico inviato alla VM o proveniente dalla VM. Le voci vengono create in base ai limiti di logging delle connessioni secondo il criterio del best effort.
Il numero di connessioni che il logging delle regole firewall puรฒ registrare per unitร di tempo:
ร basato sul tipo di macchina per le reti VPC standard.
Dipende dall'azione di monitoraggio o logging della regola firewall per le reti VPC RoCE.
Le modifiche alle regole firewall possono essere visualizzate nei log di controllo VPC.
Esempi di logging
Viene generata una voce di log ogni volta che una regola firewall con il logging abilitato viene applicata al traffico. Un determinato flusso di pacchetti puรฒ generare piรน di una voce di log in totale. Tuttavia, dal punto di vista di una determinata VM, puรฒ essere generata al massimo una sola voce di log se la regola firewall che la riguarda ha la registrazione abilitata.
I seguenti esempi mostrano come funzionano i log firewall.
Esempio di rifiuto in uscita
In questo esempio:
- Viene preso in considerazione il traffico tra le istanze VM nella rete VPC
example-net
nel progettoexample-proj
. - Le due istanze VM sono:
- VM1 nella zona
us-west1-a
con indirizzo IP10.10.0.99
inwest-subnet
(regioneus-west1
). - VM2 nella zona
us-east1-b
con indirizzo IP10.20.0.99
ineast-subnet
(regioneus-east1
).
- VM1 nella zona
- Regola A: una regola firewall di negazione del traffico in uscita ha come target tutte le istanze della rete, come destinazione
10.20.0.99
(VM2) e si applica alla porta TCP80
.- Il logging รจ abilitato per questa regola.
- Regola B: una regola firewall di autorizzazione in entrata ha come target tutte le istanze della rete, come origine
10.10.0.99
(VM1) e si applica alla porta TCP80
.- Il logging รจ abilitato anche per questa regola.
Per creare le regole firewall, puoi utilizzare i seguenti comandi gcloud
:
Regola A: regola di negazione in uscita per la porta TCP
80
, applicabile a tutte le istanze, destinazione10.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
Regola B: regola di autorizzazione in entrata per la porta TCP
80
, applicabile a tutte le istanze, origine10.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
Supponiamo che VM1 tenti di connettersi a VM2 sulla porta TCP 80
. Vengono registrate le seguenti regole firewall:
- Una voce di log per la regola A dal punto di vista di VM1 viene generata mentre VM1
tenta di connettersi a
10.20.0.99
(VM2). - Poichรฉ la regola A blocca effettivamente il traffico, la regola B non viene presa in considerazione, quindi non esiste alcuna voce di log per la regola B dal punto di vista di VM2.
Viene riportato il seguente record di log del firewall.
Campo | Valori |
---|---|
connessione | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposizione | RIFIUTATO |
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 |
istanza | 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-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | Nessuna informazione. Questo campo viene utilizzato solo se la destinazione si trova al di fuori della tua rete VPC. |
Esempio di autorizzazione in uscita e in entrata
In questo esempio:
- Viene preso in considerazione il traffico tra le istanze VM nella rete VPC
example-net
nel progettoexample-proj
. - Le due istanze VM sono:
- VM1 nella zona
us-west1-a
con indirizzo IP10.10.0.99
inwest-subnet
(regioneus-west1
). - VM2 nella zona
us-east1-b
con indirizzo IP10.20.0.99
ineast-subnet
(regioneus-east1
).
- VM1 nella zona
- Regola A: una regola firewall in uscita di tipo Consenti ha come target tutte le istanze della rete, come destinazione
10.20.0.99
(VM2) e si applica alla porta TCP80
.- Il logging รจ abilitato per questa regola.
- Regola B: una regola firewall di autorizzazione in entrata ha come target tutte le istanze della rete, come origine
10.10.0.99
(VM1) e si applica alla porta TCP80
.- Il logging รจ abilitato anche per questa regola.
ร possibile utilizzare i seguenti comandi gcloud
per creare le due regole firewall:
Regola A: regola di uscita consentita per la porta TCP
80
, applicabile a tutte le istanze, destinazione10.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
Regola B: regola di autorizzazione in entrata per la porta TCP
80
, applicabile a tutte le istanze, origine10.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
Supponiamo che VM1 tenti di connettersi a VM2 sulla porta TCP 80
. Vengono registrate le seguenti regole firewall:
- Viene generata una voce di log per la regola A dal punto di vista della VM1 mentre la VM1
si connette a
10.20.0.99
(VM2). - Una voce di log per la regola B dal punto di vista della VM2 viene generata mentre la VM2 consente
le connessioni in entrata da
10.10.0.99
(VM1).
Il seguente record di log firewall viene segnalato da VM1.
Campo | Valori |
---|---|
connessione | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposizione | CONSENTITA |
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 |
istanza | 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-b |
remote_vpc | project_id="example-proj" vpc_name=example-net subnetwork_name=east-subnet |
remote_location | Nessuna informazione. Questo campo viene utilizzato solo se la destinazione si trova al di fuori della tua rete VPC. |
Il seguente record di log firewall viene segnalato da VM2.
Campo | Valori |
---|---|
connessione | src_ip=10.10.0.99 src_port=[EPHEMERAL_PORT] dest_ip=10.20.0.99 dest_port=80 protocol=6 |
disposizione | CONSENTITA |
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 |
istanza | project_id="example-proj" instance_name=VM2 region=us-east1 zone=us-east1-b |
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 | Nessuna informazione. Questo campo viene utilizzato solo se la destinazione si trova al di fuori della tua rete VPC. |
Esempio di traffico in entrata da internet
In questo esempio:
- Viene considerato il traffico da un sistema esterno alla rete VPC
example-net
a un'istanza VM in quella rete. La rete si trova nel progettoexample-proj
. - Il sistema su internet ha l'indirizzo IP
203.0.113.114
. - La VM1 nella zona
us-west1-a
ha l'indirizzo IP10.10.0.99
inwest-subnet
(regioneus-west1
). - Regola C: una regola firewall di autorizzazione in entrata ha come target tutte le istanze della rete, una sorgente di qualsiasi indirizzo IP (
0.0.0.0/0
) e si applica alla porta TCP80
.- Il logging รจ abilitato per questa regola.
- Regola D: una regola firewall di negazione in uscita ha come target tutte le istanze della rete, una destinazione di qualsiasi indirizzo IP (
0.0.0.0/0
) e si applica a tutti i protocolli.- Il logging รจ abilitato anche per questa regola.
Per creare le regole firewall, puoi utilizzare i seguenti comandi gcloud
:
Regola C: regola di autorizzazione in entrata per la porta TCP
80
, applicabile a tutte le istanze, qualsiasi origine: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
Regola D: regola di negazione in uscita per tutti i protocolli, applicabile a tutte le istanze, qualsiasi destinazione:
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
Supponiamo che il sistema con indirizzo IP 203.0.113.114
tenti di connettersi a VM1
sulla porta TCP 80
. Si verifica quanto segue:
- Una voce di log per la regola C dal punto di vista della VM1 viene generata mentre la VM1 accetta
il traffico da
203.0.113.114
. - Nonostante la regola D, a VM1 รจ consentito rispondere alla richiesta in entrata perchรฉ le regole firewallGoogle Cloud sono stateful. Se la richiesta in entrata รจ consentita, le risposte stabilite non possono essere bloccate da alcun tipo di regola di uscita.
- Poichรฉ la regola D non si applica, non viene presa in considerazione, quindi non esiste una voce di log per la regola D.
Viene riportato il seguente record di log del firewall.
Campo | Valori |
---|---|
connessione | src_ip=203.0.113.114 src_port=[EPHEMERAL_PORT] dest_ip=10.10.0.99 dest_port=80 protocol=6 |
disposizione | CONSENTITA |
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 |
istanza | 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 | continente paese regione cittร |
Formato dei log del firewall
In base alle specifiche, in Cloud Logging viene creata una voce di log per ogni regola firewall per cui รจ abilitata la registrazione se la regola si applica al traffico da o verso un'istanza VM. I record di log sono inclusi nel campo del payload JSON di una voce di log LogEntry.
I record di log contengono campi di base, che sono i campi principali di ogni record di log, e campi di metadati che aggiungono informazioni aggiuntive. Puoi controllare se includere i campi dei metadati. Se li ometti, puoi risparmiare sui costi di archiviazione.
Alcuni campi di log supportano valori che sono anche campi. Questi campi possono contenere piรน
di un dato in un determinato campo. Ad esempio, il campo connection
รจ
nel formato IpConnection
, che contiene l'indirizzo IP e la porta di origine e di destinazione, oltre al protocollo, in un unico campo. Questi campi sono descritti nelle tabelle seguenti.
Campo | Descrizione | Tipo di campo: metadati di base o facoltativi |
---|---|---|
connessione | IpConnection 5 tuple che descrivono l'indirizzo IP di origine e di destinazione, la porta di origine e di destinazione e il protocollo IP di questa connessione. |
Livelli |
disposizione | stringa Indica se la connessione รจ stata ALLOWED o
DENIED . |
Livelli |
rule_details | RuleDetails Dettagli della regola applicata a questa connessione. |
|
Campo rule_details.reference |
Livelli | |
Altri campi dei dettagli della regola | Metadati | |
istanza | InstanceDetails Dettagli dell'istanza VM. In una configurazione del VPC condiviso, project_id corrisponde a quello del progetto di servizio. |
Metadati |
vpc | VpcDetails Dettagli rete VPC. In una configurazione del VPC condiviso, project_id corrisponde a quello del progetto host. |
Metadati |
remote_instance | InstanceDetails Se l'endpoint remoto della connessione era una VM situata in Compute Engine, questo campo viene compilato con i dettagli dell'istanza VM. |
Metadati |
remote_vpc | VpcDetails Se l'endpoint remoto della connessione era una VM che si trova in una rete VPC, questo campo viene compilato con i dettagli della rete. |
Metadati |
remote_location | GeographicDetails Se l'endpoint remoto della connessione era esterno alla rete VPC, questo campo viene compilato con i metadati di localitร disponibili. |
Metadati |
IpConnection
Campo | Tipo | Descrizione |
---|---|---|
src_ip | string | Indirizzo IP di origine. Se l'origine รจ una VM Compute Engine,
src_ip รจ l'indirizzo IP interno primario o un indirizzo
in un intervallo IP alias dell'interfaccia di rete della VM. L'indirizzo IP
esterno non viene mostrato. La registrazione mostra l'indirizzo IP della VM
come viene visualizzato nell'intestazione del pacchetto, come se avessi eseguito TCP dump sulla VM. |
src_port | integer | Porta di origine |
dest_ip | string | Indirizzo IP di destinazione. Se la destinazione รจ una VM,
dest_ip รจ l'indirizzo IP interno principale o un indirizzo
in un intervallo IP alias dell'interfaccia di rete della VM. Google Cloud L'indirizzo IP esterno non viene mostrato anche se รจ stato utilizzato per stabilire la connessione. |
dest_port | integer | Porta di destinazione |
protocollo | integer | Protocollo IP della connessione |
RuleDetails
Campo | Tipo | Descrizione |
---|---|---|
riferimento | string | Riferimento alla regola firewall; formato:"network:{network name}/firewall:{firewall_name}" |
prioritร | integer | La prioritร della regola firewall. |
azione | string | ALLOW o DENY |
source_range[ ] | string | Elenco degli intervalli di origine a cui si applica la regola firewall. |
destination_range[ ] | string | Elenco degli intervalli di destinazione a cui si applica la regola firewall. |
ip_port_info[ ] | IpPortDetails | Elenco dei protocolli IP e degli intervalli di porte applicabili per le regole. |
direction | string | La direzione a cui si applica la regola firewall (in entrata o in uscita). |
source_tag[ ] | string | Elenco di tutti i tag di origine a cui si applica la regola firewall. |
target_tag[ ] | string | Elenco di tutti i tag di destinazione a cui si applica la regola firewall. |
source_service_account[ ] | string | Elenco di tutti i service account di origine a cui si applica la regola firewall. |
target_service_account[ ] | string | Elenco di tutti gli account di servizio di destinazione a cui si applica la regola firewall. |
source_region_code[ ] | string | Elenco di tutti i codici paese di origine a cui si applica la regola firewall. |
destination_region_code[ ] | string | Elenco di tutti i codici paese di destinazione a cui si applica la regola firewall. |
source_fqdn[ ] | string | Elenco di tutti i nomi di dominio di origine a cui si applica la regola firewall. |
destination_fqdn[ ] | string | Elenco di tutti i nomi di dominio di destinazione a cui si applica la regola firewall. |
source_threat_intelligence[ ] | string | Elenco di tutti i nomi degli elenchi di Google Threat Intelligence di origine a cui si applica la regola firewall. |
destination_threat_intelligence[ ] | string | Elenco di tutti i nomi degli elenchi di Google Threat Intelligence di destinazione a cui si applica la regola firewall. |
source_address_groups[ ] | string | Elenco di tutti i gruppi di indirizzi di origine a cui si applica la regola firewall. |
destination_address_groups[ ] | string | Elenco di tutti i gruppi di indirizzi di destinazione a cui si applica la regola firewall. |
IpPortDetails
Campo | Tipo | Descrizione |
---|---|---|
ip_protocol | string | Il protocollo IP a cui si applica la regola firewall. "ALL" se si applica a tutti i protocolli. |
port_range[ ] | string | Elenco degli intervalli di porte applicabili per le regole; ad esempio, 8080-9090 . |
InstanceDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID del progetto contenente la VM |
vm_name | string | Nome istanza della VM |
regione | string | Regione della VM |
zona | string | Zona della VM |
VpcDetails
Campo | Tipo | Descrizione |
---|---|---|
project_id | string | ID del progetto contenente la rete |
vpc_name | string | La rete su cui opera la VM |
subnetwork_name | string | La subnet su cui opera la VM |
GeographicDetails
Campo | Tipo | Descrizione |
---|---|---|
continent | string | Continente per gli endpoint esterni |
country | string | Paese per gli endpoint esterni |
regione | string | Regione per gli endpoint esterni |
city | string | Cittร per gli endpoint esterni |
Passaggi successivi
- Per configurare la registrazione e visualizzare i log, vedi Utilizzare il logging delle regole firewall.
- Per ottenere informazioni sull'utilizzo delle regole firewall, consulta Firewall Insights.
- Per archiviare, cercare, analizzare, monitorare e creare avvisi su dati ed eventi di log, consulta Cloud Logging.
- Per eseguire il routing delle voci di log, vedi Configurare e gestire i sink.