Utilizzare il logging delle regole delle policy del firewall

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

Scopri come attivare e disattivare la registrazione delle regole dei criteri firewall per le regole firewall Virtual Private Cloud (VPC). Per istruzioni sul logging per le regole dei criteri firewall, vedi Utilizzo di criteri e regole firewall gerarchici.

Puoi anche scoprire come visualizzare i log generati. Per saperne di più su cosa viene registrato, esempi di logging e formati dei log, consulta Panoramica del logging delle regole delle policy firewall.

Se abiliti il logging per una regola firewall, puoi visualizzare approfondimenti e consigli per la regola da Firewall Insights. Per saperne di più, consulta 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 richiesto
Creare, eliminare o aggiornare le regole firewall Proprietario o Editor del progetto o Ruolo Amministratore sicurezza (roles/compute.securityAdmin)
Visualizza i log Proprietario, editor o visualizzatore del progetto o Ruolo Visualizzatore log (roles/logging.viewer)
Per informazioni dettagliate sui ruoli e sulle autorizzazioni IAM di Logging, consulta la Guida al controllo dell'accesso di Logging.

Attivare e disattivare la registrazione delle regole delle policy del firewall

Quando crei una regola firewall, puoi abilitare la registrazione per quella regola. Per saperne di più, consulta Creare regole firewall.

Per attivare o disattivare il logging delle regole dei criteri firewall per una regola firewall esistente, segui queste istruzioni. Quando abiliti la registrazione, puoi controllare se includere i campi dei metadati. Se li ometti, puoi risparmiare sui costi di archiviazione.

Abilita il logging delle regole dei criteri firewall

Console

  1. Nella console Google Cloud , vai alla pagina Policy del firewall.

    Vai a Criteri firewall

  2. Nella colonna Log, determina se il logging del firewall è attivo o disattivato per ogni regola firewall.

  3. Per attivare la registrazione per una o più regole firewall, seleziona la casella di controllo accanto a ogni regola da aggiornare.

  4. Nella barra delle azioni Regole firewall VPC, fai clic su Configura log.

  5. Nella finestra di dialogo Configura log, seleziona On.

  6. Per omettere i campi dei metadati, espandi Mostra dettagli log e poi deseleziona la casella di controllo Includi metadati.

  7. Fai clic su Save configuration (Salva configurazione).

gcloud

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

Sostituisci quanto segue:

  • RULE_NAME: il nome della regola firewall.
  • LOGGING_METADATA: indica se la registrazione delle regole della policy del firewall include i campi dei metadati nei log delle regole firewall. Puoi configurare questo campo solo se la registrazione è abilitata. Il valore deve essere exclude-all o include-all. Per impostazione predefinita, i campi dei metadati sono inclusi.

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

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

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

API

Abilita la registrazione delle regole della policy del 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: indica se la registrazione delle regole della policy del firewall include i campi dei metadati nei log delle regole firewall. Puoi configurare questo campo solo se la registrazione è abilitata. Il valore deve essere exclude-all o include-all. Per impostazione predefinita, i campi dei metadati sono inclusi.

Per saperne di più, consulta il metodo firewalls.patch.

Disabilita la registrazione delle regole delle policy del firewall

Console

  1. Nella console Google Cloud , vai alla pagina Policy del firewall.

    Vai a Criteri firewall

  2. Nella colonna Log, determina se il logging del firewall è attivo o disattivato per ogni regola firewall.

  3. Per disattivare la registrazione per una o più regole firewall, seleziona la casella di controllo accanto a ogni regola da aggiornare.

  4. Nella barra delle azioni Regole firewall VPC, fai clic su Configura log.

  5. Nella finestra di dialogo Configura log, seleziona Off, quindi fai clic su Salva configurazione.

gcloud

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

Sostituisci RULE_NAME con il nome della regola firewall.

API

Disattiva il logging delle regole delle policy del 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 quanto segue:

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

Per saperne di più, consulta il metodo firewalls.patch.

Visualizza i log

I log delle regole firewall vengono creati nel progetto che ospita la rete contenente le istanze VM e le regole firewall. 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. I log delle regole firewall vengono archiviati in quel progetto host.

Per visualizzare i log delle regole firewall, utilizza la sezione Esplora log della console Google Cloud .

Le seguenti query mostrano come cercare eventi firewall specifici.

Visualizzare tutti i log firewall

Per visualizzare i log del firewall, scegli l'opzione 1 o l'opzione 2.

Opzione 1

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Risorsa.

  3. Nell'elenco Seleziona risorsa, fai clic su Subnet e poi su Applica.

  4. Fai clic su Nome log e poi seleziona firewall dall'elenco.

  5. Fai clic su Applica.

Opzione 2

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Query.

  3. Se non vedi il campo dell'editor di query nel riquadro Query, fai clic sul pulsante di attivazione/disattivazione Mostra query.

  4. Incolla quanto segue nel campo dell'editor di query nel riquadro Query. Sostituisci PROJECT_ID con l'ID progetto.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    
  5. Fai clic su Esegui query.

Visualizza i log per subnet specifiche

Per visualizzare i log del firewall per subnet specifiche, scegli l'opzione 1 o l'opzione 2.

Opzione 1

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Risorsa.

  3. Nell'elenco Seleziona risorsa, fai clic su Subnet.

  4. Seleziona la subnet per la quale vuoi visualizzare i log, quindi fai clic su Applica.

  5. Fai clic su Nome log e poi seleziona firewall dall'elenco.

  6. Fai clic su Applica.

Opzione 2

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Query.

  3. Se non vedi il campo dell'editor di query nel riquadro Query, fai clic sul pulsante di attivazione/disattivazione Mostra query.

  4. Incolla quanto segue nel campo dell'editor di query nel riquadro Query. 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"
    
  5. Fai clic su Esegui query.

Visualizzare i log per VM specifiche

Per visualizzare i log del firewall per VM specifiche, scegli l'opzione 1 o l'opzione 2.

Opzione 1

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Risorsa.

  3. Nell'elenco Seleziona risorsa, fai clic su Istanza VM.

  4. Seleziona l'istanza per cui vuoi visualizzare i log, quindi fai clic su Applica.

  5. Fai clic su Nome log e poi seleziona firewall dall'elenco.

  6. Fai clic su Applica.

Opzione 2

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Query.

  3. Se non vedi il campo dell'editor di query nel riquadro Query, fai clic sul pulsante di attivazione/disattivazione Mostra query.

  4. Incolla quanto segue nel campo dell'editor di query nel riquadro Query. Sostituisci PROJECT_ID con l'ID progetto e INSTANCE_ID con l'ID della VM per cui vuoi visualizzare i log.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    
  5. Fai clic su Esegui query.

Visualizzare i log per le connessioni da un paese specifico

Per visualizzare i log del firewall per un paese specifico:

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Fai clic su Query.

  3. Se non vedi il campo dell'editor di query nel riquadro Query, fai clic sul pulsante di attivazione/disattivazione Mostra query.

  4. Incolla quanto segue nel campo dell'editor di query nel riquadro Query. Sostituisci PROJECT_ID con il tuo 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
    

Esporta log

Per esportare i log delle regole firewall, vedi Configura e gestisci i sink.

Puoi utilizzare le query di esempio per restringere i log che esporti.

Tabella delle interazioni

  • Nel caso della comunicazione da VM a VM, i record di log potrebbero essere generati da entrambe le VM, a seconda delle rispettive regole firewall.
  • La connessione registrata include pacchetti che scorrono in entrambe le direzioni se il pacchetto iniziale è stato consentito dal firewall.
  • Per una determinata VM, le connessioni in entrata vengono confrontate con le regole firewall configurate su quella VM e le connessioni in uscita vengono confrontate con la regola firewall in uscita configurata su quella VM.
  • Una connessione consentita che corrisponde a una regola firewall con "consenti e registra" viene registrata una sola volta. La voce di log non viene ripetuta ogni 5 secondi anche se la connessione persiste.
  • Una connessione negata che corrisponde a una regola firewall con "negata e registrazione" ripete la voce di log ogni 5 secondi finché vengono osservati pacchetti in quella connessione negata.
  • Se attivi la registrazione in una regola firewall che corrisponde a una connessione TCP o UDP già attiva, non viene generata una nuova voce di log. Una voce di log viene creata solo se la connessione rimane inattiva per almeno 10 minuti e viene inviato un nuovo pacchetto sulla stessa connessione. Per il traffico continuo con periodi di inattività inferiori a 10 minuti, viene generata una sola voce di log per la connessione.

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 una regola in uscita R2 che corrisponde anche ai pacchetti, il comportamento della registrazione firewall è il seguente:

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

Tieni presente che l'ingresso e l'uscita sono simmetrici.

Di seguito è riportata una descrizione dettagliata della semantica dei log firewall:

  • Consenti + Log (il logging è supportato per TCP e UDP)

    • La connessione avviata nella direzione a cui si applica la regola causa la creazione di un singolo record di log.
    • Il traffico di risposta è consentito grazie al monitoraggio della connessione. Il traffico di risposta non causa alcun logging, indipendentemente dalle regole firewall in quella direzione.
    • Se la connessione scade dal firewall (inattiva per 10 minuti o TCP RST ricevuto), un altro pacchetto in una delle due direzioni potrebbe attivare la registrazione.
    • La registrazione si basa su 5 tuple. I flag TCP non influiscono sul comportamento di logging.
  • Nega + Log (il logging è supportato per TCP e UDP)

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

Passaggi successivi