Utiliser la journalisation des règles de pare-feu

La journalisation des règles de pare-feu vous permet de réaliser des audits, des vérifications et des analyses sur les effets de vos règles de pare-feu. Par exemple, vous pouvez déterminer si une règle de pare-feu conçue pour refuser le trafic fonctionne comme prévu. La journalisation est également utile si vous devez déterminer le nombre de connexions affectées par une règle de pare-feu donnée.

Cette page vous explique comment activer et désactiver la journalisation pour les règles de pare-feu de cloud privé virtuel. Pour obtenir des instructions sur la journalisation des règles des stratégies de pare-feu, consultez la page Utiliser des règles et des stratégies de pare-feu hiérarchiques.

Cette page vous montre également comment afficher les journaux générés. Pour obtenir plus d'informations sur les éléments consignés, accéder à des exemples de journalisation et connaître les différents formats de journal, consultez la page Journalisation des règles de pare-feu.

Si vous activez la journalisation sur une règle de pare-feu, vous pouvez afficher des insights et des recommandations qui lui sont propres à partir de Firewall Insights. Pour en savoir plus, consultez la présentation de Firewall Insights dans la documentation de Network Intelligence Center.

Autorisations

Pour modifier les règles de pare-feu ou accéder aux journaux, les entités principales IAM doivent disposer de l'un des rôles suivants.

Tâche Rôle requis
Créer, supprimer ou mettre à jour des règles de pare-feu Propriétaire ou éditeur du projet, ou administrateur de sécurité
Afficher les journaux Propriétaire, éditeur ou lecteur du projet, ou lecteur de journaux
Pour en savoir plus sur les rôles et les autorisations IAM de Logging, consultez le Guide du contrôle des accès de Logging.

Activer et désactiver la journalisation des règles de pare-feu

Lorsque vous créez une règle de pare-feu, vous pouvez choisir d'activer la journalisation des règles de pare-feu. Pour plus d'informations, consultez la section Créer des règles de pare-feu.

Pour activer ou désactiver la journalisation des règles de pare-feu pour une règle de pare-feu existante, suivez les instructions ci-dessous. Lorsque vous activez la journalisation, vous pouvez déterminer si les champs de métadonnées sont inclus. Si vous les omettez, vous pouvez économiser sur les coûts de stockage.

Activer la journalisation des règles de pare-feu

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Dans la colonne Journaux, déterminez si la journalisation du pare-feu est activée ou désactivée pour chaque règle de pare-feu.

  3. Pour activer la journalisation pour une ou plusieurs règles de pare-feu, cochez la case en regard de chaque règle que vous souhaitez modifier

  4. Dans la barre d'action Règles de pare-feu VPC, cliquez sur Configurer les journaux.

  5. Dans la boîte de dialogue Configurer les journaux, sélectionnez Activé.

  6. Pour omettre les champs de métadonnées, développez Afficher les détails des journaux, puis décochez la case Inclure les métadonnées.

  7. Cliquez sur Save configuration (Enregistrer la configuration).

gcloud

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

Remplacez les éléments suivants :

  • RULE_NAME : nom de la règle de pare-feu.
  • LOGGING_METADATA spécifie si la journalisation des règles de pare-feu inclut des champs de métadonnées dans les journaux de règles de pare-feu. Vous ne pouvez configurer ce champ que si la journalisation est activée. La valeur doit être exclude-all ou include-all. Par défaut, les champs de métadonnées sont inclus.

Pour en savoir plus, consultez la documentation de référence du SDK.

Terraform

Vous pouvez utiliser la ressource Terraform pour créer une règle de pare-feu avec la journalisation activée.

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

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

API

Activez la journalisation des règles de pare-feu pour une règle de pare-feu existante.

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

Remplacez les espaces réservés par des valeurs valides :

  • PROJECT_ID : ID du projet dans lequel se trouve la règle de pare-feu.
  • RULE_NAME : nom de la règle de pare-feu.
  • LOGGING_METADATA spécifie si la journalisation des règles de pare-feu inclut des champs de métadonnées dans les journaux de règles de pare-feu. Vous ne pouvez configurer ce champ que si la journalisation est activée. La valeur doit être exclude-all ou include-all. Par défaut, les champs de métadonnées sont inclus.

Pour plus d'informations, reportez-vous à la méthode firewalls.patch.

Désactiver la journalisation des règles de pare-feu

Console

  1. Dans la console Google Cloud, accédez à la page Règles d'administration.

    Accéder à la page "Stratégies de pare-feu"

  2. Dans la colonne Journaux, déterminez si la journalisation du pare-feu est activée ou désactivée pour chaque règle de pare-feu.

  3. Pour désactiver la journalisation pour une ou plusieurs règles de pare-feu, cochez la case en regard de chaque règle que vous souhaitez modifier.

  4. Dans la barre d'action Règles de pare-feu VPC, cliquez sur Configurer les journaux.

  5. Dans la boîte de dialogue Configurer les journaux, sélectionnez Désactivé, puis cliquez sur Enregistrer la configuration.

gcloud

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

Remplacez RULE_NAME par le nom de la règle de pare-feu.

API

Désactivez la journalisation des règles de pare-feu pour une règle de pare-feu existante.

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel se trouve la règle de pare-feu.
  • RULE_NAME : nom de la règle de pare-feu.

Pour plus d'informations, reportez-vous à la méthode firewalls.patch.

Afficher les journaux

Les journaux de règles de pare-feu sont créés dans le projet qui héberge le réseau contenant les instances de machine virtuelle et les règles de pare-feu. Dans le cas des VPC partagés, les instances de VM sont créées dans des projets de service, mais elles utilisent un réseau VPC partagé hébergé dans le projet hôte. Les journaux de règles de pare-feu sont stockés dans ce projet hôte.

Pour afficher les journaux des règles de pare-feu, utilisez la section Explorateur de journaux de la console Google Cloud.

Les filtres suivants montrent comment rechercher des événements de pare-feu spécifiques.

Afficher tous les journaux de pare-feu

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Ressource.

  3. Dans la liste Sélectionner une ressource, cliquez sur Sous-réseau, puis sur Appliquer.

  4. Cliquez sur Nom du journal, puis sélectionnez firewall (pare-feu) dans la liste.

  5. Cliquez sur Appliquer.

Vous pouvez également procéder comme suit :

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Requête.

  3. Si le champ de l'éditeur de requête n'apparaît pas dans le volet Query (Requête), cliquez sur le bouton Show query (Afficher la requête).

  4. Collez le texte suivant dans le champ de l'éditeur de requête du volet Query (Requête). Remplacez PROJECT_ID par l'ID du projet.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    
  5. Cliquez sur Exécuter la requête.

Afficher des journaux pour des sous-réseaux spécifiques

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Ressource.

  3. Dans la liste Sélectionner une ressource, cliquez sur Sous-réseau.

  4. Sélectionnez le sous-réseau pour lequel vous souhaitez afficher les journaux, puis cliquez sur Appliquer.

  5. Cliquez sur Nom du journal, puis sélectionnez firewall (pare-feu) dans la liste.

  6. Cliquez sur Appliquer.

Vous pouvez également procéder comme suit :

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Requête.

  3. Si le champ de l'éditeur de requête n'apparaît pas dans le volet Query (Requête), cliquez sur le bouton Show query (Afficher la requête).

  4. Collez le texte suivant dans le champ de l'éditeur de requête du volet Query (Requête). Remplacez PROJECT_ID par l'ID de votre projet et SUBNET_NAME par votre sous-réseau.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    resource.labels.subnetwork_name="SUBNET_NAME"
    
  5. Cliquez sur Exécuter la requête.

Afficher les journaux dans des VM spécifiques

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Ressource.

  3. Dans la liste Sélectionner une ressource, cliquez sur Instance de VM.

  4. Sélectionnez l'instance pour laquelle vous souhaitez afficher les journaux, puis cliquez sur Appliquer.

  5. Cliquez sur Nom du journal, puis sélectionnez firewall (pare-feu) dans la liste.

  6. Cliquez sur Appliquer.

Vous pouvez également procéder comme suit :

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Requête.

  3. Si le champ de l'éditeur de requête n'apparaît pas dans le volet Query (Requête), cliquez sur le bouton Show query (Afficher la requête).

  4. Collez le texte suivant dans le champ de l'éditeur de requête du volet Query (Requête). Remplacez PROJECT_ID par votre ID de projet et INSTANCE_ID par l'ID de la VM pour laquelle vous souhaitez afficher les journaux.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="INSTANCE_ID"
    
  5. Cliquez sur Exécuter la requête.

Afficher les journaux pour les connexions depuis un pays spécifique

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur Requête.

  3. Si le champ de l'éditeur de requête n'apparaît pas dans le volet Query (Requête), cliquez sur le bouton Show query (Afficher la requête).

  4. Collez le texte suivant dans le champ de l'éditeur de requête du volet Query (Requête). Remplacez PROJECT_ID par l'ID de votre projet et COUNTRY par le code ISO 3166-1 alpha-3.

    resource.type="gce_subnetwork"
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.remote_location.country=COUNTRY
    

Exporter des journaux

Consultez la page Configurer et gérer les récepteurs pour exporter les journaux des règles de pare-feu.

Vous pouvez utiliser les exemples de requêtes pour affiner la liste des journaux que vous exportez.

Tableau des interactions

  • Dans le cas d'une communication de VM à VM, les enregistrements de journaux peuvent être générés par les deux VM en fonction de leurs règles de pare-feu respectives.
  • La connexion journalisée inclut les paquets circulant dans les deux sens dès lors que le paquet initial a été autorisé par le pare-feu.
  • Pour une machine virtuelle donnée, les connexions entrantes sont confrontées aux règles de pare-feu d'entrée configurées sur cette VM et les connexions sortantes sont confrontées aux règles de pare-feu de sortie configurées sur cette même VM.
  • Une connexion autorisée mise en correspondance avec une règle de pare-feu associée à l'action "Autoriser + Journaliser" n'est consignée qu'une seule fois. L'entrée de journal n'est pas répétée toutes les cinq secondes, même si la connexion est durable.
  • Une connexion refusée mise en correspondance avec une règle de pare-feu associée à l'action "Refuser + Journaliser" répète l'entrée de journal toutes les cinq secondes aussi longtemps que des paquets sont observés dans cette connexion refusée.

Ce tableau montre le comportement de journalisation du pare-feu du point de vue d'une machine virtuelle unique.

Pour un scénario dans lequel une machine virtuelle VM1 a une règle d'entrée R1 qui correspond aux paquets et une règle de sortie R2 qui correspond également aux paquets, la journalisation du pare-feu se comporte comme suit :

Règle d'entrée R1 de VM1 (correspondant aux paquets) Règle de sortie R2 de VM1 (correspondant aux paquets) Sens de la connexion Action Journal
Autoriser + Journaliser Autoriser Entrée Autoriser Une entrée de journal :
disposition = autoriser, règle = R1
Refuser
Autoriser + Journaliser
Refuser + Journaliser
Autoriser Autoriser Entrée Autoriser Aucune journalisation
Refuser
Autoriser + Journaliser
Refuser + Journaliser
Refuser + Journaliser N/A Entrée Refuser Une entrée de journal toutes les cinq secondes :
disposition = refuser, règle = R1
Refuser N/A Entrée Refuser Aucune journalisation
Autoriser Autoriser + Journaliser Sortie Autoriser Une entrée de journal :
disposition = autoriser, règle = R2
Refuser
Autoriser + Journaliser
Refuser + Journaliser
Autoriser Autoriser Sortie Autoriser Aucune journalisation
Refuser
Autoriser + Journaliser
Refuser + Journaliser
N/A Refuser + Journaliser Sortie Refuser Une entrée de journal toutes les cinq secondes :
disposition = refuser, règle = R2
N/A Refuser Sortie Refuser Aucune journalisation

Notez que les entrées et les sorties sont traitées de façon symétrique.

Voici une description détaillée de la sémantique des journaux de pare-feu :

  • Autoriser + Journaliser (la journalisation n'est prise en charge que pour TCP et UDP)

    • Une connexion activée dans le sens auquel s'applique la règle entraîne la création d'un enregistrement de journal unique.
    • Le trafic de réponse est autorisé en raison du suivi de connexion. Le trafic de réponse n'entraîne aucune journalisation, quelles que soient les règles de pare-feu applicables dans ce sens.
    • Si la connexion au pare-feu expire (10 minutes d'inactivité ou réception d'un paquet TCP RST), la transmission d'un nouveau paquet dans l'un ou l'autre sens peut déclencher la journalisation.
    • La journalisation est basée sur des 5-tuples. Les indicateurs TCP n'affectent pas le comportement de la journalisation.
  • Refuser + Journaliser (la journalisation n'est prise en charge que pour TCP et UDP)

    • Les paquets sont supprimés (aucune connexion n'est activée).
    • Chaque paquet correspondant à un 5-tuple unique est journalisé comme une tentative de connexion ayant échoué.
    • Le même 5-tuple est enregistré à nouveau toutes les 5 secondes si des paquets supplémentaires sont reçus.

Dépannage

Impossible d'afficher les journaux

Si vous ne pouvez pas afficher les journaux des règles de pare-feu dans la section "Explorateur de journaux" de la console Google Cloud, vérifiez les points suivants :

Cause possible : autorisations insuffisantes.

Demandez au propriétaire du projet de s'assurer que l'entité principale IAM concernée détient au minimum le rôle Lecteur de journaux pour le projet. Pour en savoir plus, consultez la section Autorisations.
Cause possible : anciens réseaux non acceptés.
Vous ne pouvez pas utiliser les règles de pare-feu pour la journalisation d'un ancien réseau. Seuls les réseaux VPC sont acceptés.
Cause possible : vous ne regardez peut-être pas dans le bon projet.
Les journaux des règles de pare-feu étant stockés avec le projet qui contient le réseau, il importe de vous assurer que vous recherchez les journaux dans le projet approprié. Dans le cas des VPC partagés, les instances de VM sont créées dans des projets de service, mais elles utilisent un réseau VPC partagé hébergé dans le projet hôte. Pour les scénarios de VPC partagé, les journaux de règles de pare-feu sont stockés dans ce projet hôte.

En cas d'utilisation d'un VPC partagé, vous devez disposer des autorisations appropriées sur le projet hôte pour afficher les journaux de règles de pare-feu. Même si les instances de VM elles-mêmes se trouvent dans des projets de service, les journaux de règles de pare-feu correspondants sont situés dans le projet hôte.

Enregistrer les entrées manquantes

Cause possible : les connexions ne correspondent peut-être pas à la règle de pare-feu escomptée.

Vérifiez que la règle de pare-feu à laquelle vous pensez figure bien dans la liste des règles de pare-feu applicables à une instance. Affichez les détails de l'instance concernée à l'aide de la console Google Cloud, puis cliquez sur le bouton Afficher les détails dans la section Interfaces réseau de sa page Détails de l'instance de VM Inspectez les règles de pare-feu applicables dans la section Détails des pare-feu et des routes de la page Informations sur l'interface réseau de la VM.

Pour vous assurer de créer correctement vos règles de pare-feu, consultez la page Règles de pare-feu VPC.

Vous pouvez utiliser tcpdump sur la machine virtuelle pour déterminer si les connexions envoyées ou reçues présentent des adresses, des ports et des protocoles correspondant au pare-feu attendu.

Cause possible : une règle de priorité plus élevée qui désactive la journalisation des règles de pare-feu s'applique peut-être.

Les règles de pare-feu sont évaluées par ordre de priorité. Du point de vue d'une instance de machine virtuelle, une seule règle de pare-feu s'applique au trafic.

La règle qui, selon vous, est la règle applicable ayant la plus haute priorité, peut en réalité être supplantée par une règle de priorité plus élevée, qui en l'occurence désactive la journalisation.

Pour résoudre ce problème, vous pouvez activer temporairement la journalisation pour toutes les règles de pare-feu susceptibles de s'appliquer à une VM déterminée. Affichez les détails de la VM concernée à l'aide de la console Google Cloud, puis cliquez sur le bouton Afficher les détails dans la section Interfaces réseau de la page Détails de l'instance de VM. Inspectez les règles de pare-feu applicables dans la section Détails des pare-feu et des routes de la page Détails de l'interface réseau de la VM, puis identifiez vos règles personnalisées dans cette liste. Activez temporairement la journalisation pour toutes ces règles de pare-feu personnalisées.

Lorsque la journalisation est activée, vous pouvez identifier la règle applicable. Une fois cette règle identifiée, veillez à désactiver la journalisation pour toutes les règles qui n'en ont pas réellement besoin.

Métadonnées manquantes pour certaines entrées de journal

Cause possible : retard dans la propagation de la configuration.

Lorsque vous mettez à jour une règle de pare-feu pour laquelle la journalisation du pare-feu est activée, il faut parfois plusieurs minutes à Google Cloud pour propager les modifications nécessaires à la journalisation du trafic correspondant aux composants modifiés de la règle.

Étapes suivantes