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 VPC. Pour obtenir des instructions sur la journalisation des règles des stratégies de pare-feu, consultez cette documentation.

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 Présentation de la 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 membres 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. Voir Créer des règles de pare-feu pour plus d'informations.

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. Accédez à la page Pare-feu de Google Cloud Console.
    Accéder à la page 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 correspondante.
  4. Dans la barre d'action Règles de pare-feu, 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 Détails des journaux, puis désélectionnez Inclure les métadonnées.
  7. Cliquez sur Enregistrer la configuration.

gcloud

gcloud compute firewall-rules update name \
    --enable-logging
    --logging-metadata=logging_metadata

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

  • name est le 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.

API

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

PATCH https://www.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 est l'ID du projet dans lequel se trouve la règle de pare-feu.
  • rule_name est le 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. Accédez à la page Pare-feu de Google Cloud Console.
    Accéder à la page 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 correspondante.
  4. Dans la barre d'action Règles de pare-feu, 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 name \
    --no-enable-logging

API

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

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

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

  • project_id est l'ID du projet dans lequel se trouve la règle de pare-feu.
  • rule_name est le 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.

Accédez à la section Journaux de Cloud Console pour afficher les journaux des règles de pare-feu.

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

Tous les journaux de pare-feu

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page Journaux
  2. Dans le premier menu déroulant, sélectionnez Sous-réseau.
  3. Sélectionnez compute.googleapis.com/firewall dans le deuxième menu déroulant.
  4. Cliquez sur OK.

Vous pouvez également procéder comme suit :

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page "Journaux"
  2. À droite du champ Filtrer par étiquette ou texte recherché, cliquez sur la flèche vers le bas et sélectionnez Convertir en filtre avancé.
  3. Collez le texte suivant dans le champ. Remplacez project_id par l'ID du projet.
    resource.type="gce_subnetwork"
    logName="projects/project_id/logs/compute.googleapis.com%2Ffirewall"
    

Sous-réseaux spécifiques

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page Journaux
  2. Dans le premier menu déroulant, déplacez le curseur sur Sous-réseau, puis vers la droite pour ouvrir le menu de sélection du sous-réseau.
  3. Dans le deuxième menu déroulant, sélectionnez compute.googleapis.com/firewall.
  4. Cliquez sur OK.

Vous pouvez également procéder comme suit :

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page "Journaux"
  2. À droite du champ Filtrer par étiquette ou texte recherché, cliquez sur la flèche vers le bas et sélectionnez Convertir en filtre avancé.
  3. Collez le texte suivant dans le champ. 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"
    

VM spécifiques

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page "Journaux"
  2. À droite du champ Filtrer par étiquette ou texte recherché, cliquez sur la flèche vers le bas et sélectionnez Convertir en filtre avancé.
  3. Collez le texte suivant dans le champ. Remplacez project_id par l'ID du projet et instance_name par votre VM.
    resource.type="gce_subnetwork"
    logName="projects/project_id/logs/compute.googleapis.com%2Ffirewall"
    jsonPayload.instance.vm_name="instance_name"
    

Connexions depuis un pays spécifique

  1. Accédez à la page "Journaux" dans Google Cloud Console.
    Accéder à la page "Journaux"
  2. À droite du champ Filtrer par étiquette ou texte recherché, cliquez sur la flèche vers le bas et sélectionnez Convertir en filtre avancé.
  3. Collez le texte suivant dans le champ. 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 les journaux

Pour exporter les journaux des règles de pare-feu, suivez les instructions fournies sur la page Exporter des entrées de journal avec la visionneuse de journaux.

Vous pouvez utiliser les exemples de filtres avancés 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 "Journaux" de Cloud Console, vérifiez les points suivants :

Cause possible : autorisations insuffisantes.

Demandez au propriétaire du projet de s'assurer que le membre IAM concerné détient au minimum le rôle Lecteur de journaux pour le projet. Pour en savoir plus, consultez la section Autorisations.
Cause possible : les journaux du sous-réseau peuvent être exclus de Logging.
Dans Cloud Console, accédez à Journaux > Ingestion de journaux et vérifiez que le sous-réseau GCE n'est pas exclu ou, s'il est partiellement exclu, que le filtre d'exclusion ne s'applique pas aux journaux du pare-feu.
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 Cloud Console, puis cliquez sur le bouton Afficher les détails dans la section Interfaces réseau de la page Informations sur l'instance de VM correspondante. Inspectez les règles de pare-feu applicables dans la section Règles de pare-feu et détails des routes de la page Information sur l'interface réseau correspondante.

Consultez la page Présentation des règles de pare-feu pour vous assurer que vous avez correctement créé vos règles de pare-feu.

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 Cloud Console, puis cliquez sur le bouton Afficher les détails dans la section Interfaces réseau de la page Informations sur l'instance de VM correspondante. Inspectez les règles de pare-feu applicables dans la section Règles de pare-feu et détails des routes de la page Information sur l'interface réseau, 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.

Étape suivante