Utilizzo del logging delle regole firewall

Il logging delle regole firewall consente di controllare, verificare e analizzare gli effetti delle regole firewall. Ad esempio, puoi determinare se una regola firewall progettata per rifiutare il traffico funziona come previsto. Il logging è utile anche se devi determinare quante connessioni sono interessate da una determinata regola firewall.

Questa pagina mostra come abilitare e disabilitare il logging per le regole del firewall VPC. Consulta la documentazione per le istruzioni riguardanti il logging per le regole del criterio firewall.

Questa pagina mostra anche come visualizzare i log generati. Per ulteriori informazioni su cosa viene registrato, esempi di log e formati di log, consulta la Panoramica sul logging delle regole firewall.

Se abiliti il logging su una regola firewall, puoi visualizzare insight e suggerimenti a partire da Firewall Insights. Per ulteriori informazioni, consulta la sezione Firewall Insights nella documentazione di Network Intelligence Center.

Autorizzazioni

Per modificare le regole firewall o i log di accesso, le entità IAM devono disporre di uno dei seguenti ruoli.

Attività Ruolo obbligatorio
Creare, eliminare o aggiornare le regole firewall Proprietario o editor del progetto oppure Amministratore della sicurezza
Visualizza log Proprietario, editor o visualizzatore del progetto oppure Visualizzatore log
Consulta la guida sul controllo degli accessi di Logging per maggiori dettagli su autorizzazioni e ruoli IAM di Logging.

Attivazione e disattivazione del logging delle regole firewall

Quando crei una regola firewall, puoi scegliere di attivarla. Consulta Creazione di regole firewall per ulteriori informazioni.

Per attivare o disattivare il logging delle regole firewall per una regola firewall esistente, segui queste istruzioni. Se attivi il logging, puoi controllare se i campi dei metadati sono inclusi. Se le ometti, puoi risparmiare sui costi di archiviazione.

Attivazione del logging delle regole firewall

Console

  1. Vai alla pagina Firewall in Google Cloud Console.
    Vai alla pagina Firewall
  2. Nella colonna Log, determina se il logging del firewall è attivo o meno per ogni regola firewall.
  3. Per abilitare il logging per una o più regole firewall, seleziona la casella di controllo accanto a ciascuna.
  4. Nella barra delle azioni di Regole firewall, fai clic su Configura i log.
  5. Nella finestra di dialogo Configure logs (Configura log), seleziona On.
  6. Per omettere i campi dei metadati, espandi Dettagli log e cancella Includi metadati.
  7. Fai clic su Save configuration (Salva configurazione).

gcloud

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

Sostituisci i segnaposto con valori validi:

  • NAME è il nome della regola firewall.
  • LOGGING_METADATA specifica se il logging delle regole firewall include campi di metadati nei log delle regole firewall. Puoi configurare questo campo solo se il logging è abilitato. Il valore deve essere exclude-all o include-all. Per impostazione predefinita, sono inclusi i campi dei metadati.

Per ulteriori informazioni, consulta la documentazione di riferimento sull'SDK.

API

Attiva il logging delle regole firewall per una regola firewall esistente.

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

Sostituisci i segnaposto con valori validi:

  • PROJECT_ID è l'ID del progetto in cui si trova la regola firewall.
  • RULE_NAME è il nome della regola firewall.
  • LOGGING_METADATA specifica se il logging delle regole firewall include campi di metadati nei log delle regole firewall. Puoi configurare questo campo solo se il logging è abilitato. Il valore deve essere exclude-all o include-all. Per impostazione predefinita, sono inclusi i campi dei metadati.

Per ulteriori informazioni, consulta il metodo firewalls.patch.

Terraform

Puoi utilizzare la risorsa Terraform per creare una regola firewall con il logging abilitato.

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"]
}

Disattivazione del logging delle regole firewall

Console

  1. Vai alla pagina Firewall in Google Cloud Console.
    Vai alla pagina Firewall
  2. Nella colonna Log, determina se il logging del firewall è attivo o meno per ogni regola firewall.
  3. Per disabilitare il logging per una o più regole firewall, seleziona la casella di controllo accanto a ciascuna.
  4. Nella barra delle azioni di Regole firewall, fai clic su Configura i log.
  5. Nella finestra di dialogo Configura i log, seleziona Off e fai clic su Salva configurazione.

gcloud

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

API

Attiva il logging delle regole firewall per una regola firewall esistente.

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

Sostituisci i segnaposto con valori validi:

  • PROJECT_ID è l'ID del progetto in cui si trova la regola firewall.
  • RULE_NAME è il nome della regola firewall.

Per ulteriori informazioni, consulta il metodo firewalls.patch.

Visualizzazione dei log

I log delle regole firewall vengono creati nel progetto che ospita la rete contenente le istanze VM e le regole firewall. Con VPC condiviso, le istanze VM vengono create nei progetti di servizio, ma utilizzano una rete VPC condivisa che si trova nel progetto host. I log delle regole firewall sono archiviati nel progetto host.

Utilizza la sezione Log di Cloud Console per visualizzare i log delle regole firewall.

I seguenti filtri mostrano come cercare eventi firewall specifici.

Tutti i log del firewall

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Seleziona Subnet nel primo menu a discesa.
  3. Seleziona compute.googleapis.com/firewall nel secondo menu a discesa.
  4. Fai clic su OK.

In alternativa:

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Sul lato destro del campo Filtra per etichetta o testo, fai clic sulla freccia rivolta verso il basso e seleziona Converti in filtro avanzato.
  3. Incolla nel campo quanto segue. Sostituisci PROJECT_ID con l'ID progetto.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    

Subnet specifiche

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Nel primo menu a discesa, sposta il cursore su Subnet, quindi spostalo a destra per aprire il menu di selezione delle singole subnet.
  3. Nel secondo menu a discesa, seleziona compute.googleapis.com/firewall.
  4. Fai clic su OK.

In alternativa:

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Sul lato destro del campo Filtra per etichetta o testo, fai clic sulla freccia rivolta verso il basso e seleziona Converti in filtro avanzato.
  3. Incolla nel campo quanto segue. Sostituisci PROJECT_ID con l'ID progetto e SUBNET_NAME con la subnet.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    

VM specifiche

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Sul lato destro del campo Filtra per etichetta o testo, fai clic sulla freccia rivolta verso il basso e seleziona Converti in filtro avanzato.
  3. Incolla nel campo quanto segue. Sostituisci PROJECT_ID con l'ID progetto e INSTANCE_NAME con la tua VM.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_NAME"
    

Connessioni da un paese specifico

  1. Vai a Esplora log in Google Cloud Console.
    Vai a Esplora log
  2. Sul lato destro del campo Filtra per etichetta o testo, fai clic sulla freccia rivolta verso il basso e seleziona Converti in filtro avanzato.
  3. Incolla nel campo quanto segue. Sostituisci PROJECT_ID con l'ID progetto e COUNTRY con il codice ISO 3166-1 alpha-3.
    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.remote_location.country=COUNTRY
    

Esportazione dei log

Per esportare i log delle regole firewall, segui queste istruzioni: Esportazione con il visualizzatore log.

Puoi utilizzare gli esempi di filtri avanzati per limitare i log esportati.

Tabella delle interazioni

  • Nel caso delle comunicazioni da VM a VM, i record di log possono essere generati da entrambe le VM, a seconda delle rispettive regole firewall.
  • La connessione registrata include pacchetti che passano in entrambi i modi se il pacchetto iniziale era consentito dal firewall.
  • Per una determinata VM, le connessioni in entrata vengono trovate con le regole firewall configurate su tale VM e le connessioni in uscita vengono trovate con la regola firewall in uscita configurata su tale VM.
  • Una connessione consentita che corrisponde a una regola firewall con "allow and logging" viene registrata una sola volta. La voce di log non viene ripetuta ogni 5 secondi, anche se la connessione dura nel tempo.
  • Una connessione negata corrispondente a una regola firewall con "denied and logging" ripete la voce di log ogni 5 secondi, purché siano presenti pacchetti osservati in tale connessione negata.

Questa tabella mostra il comportamento di logging del firewall dal punto di vista di una singola VM.

In uno scenario in cui una VM1 ha una regola in entrata R1 che corrisponde ai pacchetti e alla regola in uscita R2 che corrisponde anche ai pacchetti, il comportamento del logging del firewall è il seguente:

VM1 ha regole in entrata R1 (pacchetti corrispondenti) VM1 ha la regola in uscita R2 (pacchetti corrispondenti) Direzione della connessione Azione Log
Consenti + Log Consenti In entrata Consenti Una voce di log:
disposition=allow, rule=R1
Rifiuta
Consenti + Log
Rifiuta + Log
Consenti Consenti In entrata Consenti Nessun logging
Rifiuta
Consenti + Log
Rifiuta + Log
Rifiuta + Log N/A In entrata Rifiuta Una voce di log ogni 5 secondi:
disposition=deny, rule=R1
Rifiuta N/A In entrata Rifiuta Nessun logging
Consenti Consenti + Log In uscita Consenti Una voce di log:
disposition=allow, rule=R2
Rifiuta
Consenti + Log
Rifiuta + Log
Consenti Consenti In uscita Consenti Nessun logging
Rifiuta
Consenti + Log
Rifiuta + Log
N/A Rifiuta + Log In uscita Rifiuta Una voce di log ogni 5 secondi:
disposition=deny, rule=R2
N/A Rifiuta In uscita Rifiuta Nessun logging

Tieni presente che i valori in entrata e in uscita sono simmetrici.

Ecco la descrizione dettagliata della semantica dei log del firewall:

  • Consenti + Log (supporta i log solo per TCP e UDP)

    • La connessione avviata nella direzione in cui si applica la regola determina la creazione di un singolo record di log.
    • Il traffico di risposta è consentito a causa del monitoraggio delle connessioni. Il traffico di risposta non causa alcun logging, indipendentemente dalle regole firewall in tale istruzione.
    • Se la connessione scade dal firewall (non attiva per 10 minuti o ricevuta da RST TCP), un altro pacchetto in entrambe le direzioni potrebbe attivare il logging.
    • Il logging si basa su 5 tutele. I flag TCP non influiscono sul comportamento di logging.
  • Nega + log (supporta i log solo per TCP e UDP)

    • I pacchetti vengono eliminati (non è iniziata alcuna connessione).
    • Ogni pacchetto che corrisponde a una tupla 5 univoca viene registrato come tentativo di connessione non riuscito.
    • La stessa tupla da 5 viene registrata ogni 5 secondi se continua a ricevere pacchetti.

Risolvere i problemi

Impossibile visualizzare i log

Se non riesci a visualizzare i log delle regole firewall nella sezione Log di Cloud Console, verifica quanto segue:

Causa possibile: autorizzazioni insufficienti

Chiedi al proprietario del progetto di assicurarsi che l'entità IAM disponga almeno del ruolo Visualizzatore log per il progetto. Per ulteriori informazioni, fai riferimento alle autorizzazioni.
Possibile causa: i log di subnet potrebbero essere esclusi da Logging
In Cloud Console, vai a Logging > Importazione dei log e verifica che la subnet GCE non sia esclusa o, se è parzialmente esclusa, che il filtro di esclusione non si applichi ai log del firewall.
Possibile causa: reti precedenti non supportate
Non è possibile utilizzare il logging delle regole firewall in una rete legacy. Sono supportate solo le reti VPC.
Possibile causa: assicurati di cercare nel progetto corretto
Poiché i log delle regole firewall sono archiviati con il progetto contenente la rete, è importante assicurarti che tu stia cercando i log nel progetto corretto. Con il VPC condiviso, le istanze VM vengono create nei progetti di servizio, ma utilizzano una rete VPC condivisa che si trova nel progetto host. Per gli scenari di VPC condiviso, i log delle regole firewall vengono archiviati nel progetto host.

Se è coinvolta la rete VPC condivisa, avrai bisogno delle autorizzazioni appropriate per il progetto host per visualizzare i log delle regole firewall. Anche se le istanze VM stesse si trovano nei progetti di servizio, i log delle regole firewall si trovano nel progetto host.

Voci di log mancanti

Possibile causa. Le connessioni potrebbero non corrispondere alla regola firewall prevista

Verifica che la regola firewall prevista sia nell'elenco delle regole firewall applicabili di un'istanza. Utilizza Cloud Console per visualizzare i dettagli dell'istanza pertinente, quindi fai clic sul pulsante Visualizza dettagli nella sezione Interfacce di rete nella pagina Dettagli istanza VM. Esamina le regole applicabili del firewall nella sezione Dettagli del firewall e delle regole della relativa pagina Dettagli dell'interfaccia di rete.

Consulta la panoramica delle regole del firewall per assicurarti di aver creato correttamente le regole firewall.

Puoi utilizzare tcpdump sulla VM per determinare se le connessioni che invia o riceve hanno indirizzi, porte e protocolli che corrispondono al firewall previsto.

Possibile causa: potrebbe essere applicata una regola con priorità più elevata con il logging delle regole firewall disabilitato

Le regole del firewall vengono valutate in base alle loro priorità. Dal punto di vista di un'istanza VM, al traffico viene applicata una sola regola firewall.

Una regola che ritieni sia la regola più alta possibile, in realtà potrebbe non esserlo. Potrebbe essere applicata una regola con priorità più elevata per cui non è abilitato il logging.

Per risolvere il problema, puoi abilitare temporaneamente il logging per tutte le possibili regole firewall applicabili a una VM. Utilizza Cloud Console per visualizzare i dettagli relativi alla VM pertinente, quindi fai clic sul pulsante Visualizza dettagli nella sezione Interfacce di rete nella pagina Dettagli istanza VM. Esamina le regole firewall applicabili nella sezione Dettagli firewall e route della relativa pagina Dettagli interfaccia di rete e identifica le regole personalizzate in quell'elenco. Attiva temporaneamente il logging per tutte queste regole firewall personalizzate.

Quando il logging è abilitato, puoi identificare la regola applicabile. Una volta identificato, assicurati di disabilitare il logging per tutte le regole che non ne hanno effettivamente bisogno.

Metadati mancanti per alcune voci di log

Possibile causa: ritardo di propagazione della configurazione

Se aggiorni una regola firewall con il logging del firewall abilitato, potrebbero essere necessari alcuni minuti prima che Google Cloud completi la propagazione delle modifiche necessarie per registrare il traffico che corrisponde ai componenti aggiornati della regola.

Passaggi successivi