Collecter les journaux WatchGuard Firebox

Compatible avec :

Ce document explique comment ingérer des journaux WatchGuard Firebox dans Google Security Operations à l'aide de Bindplane. WatchGuard Firebox est un pare-feu UTM (Unified Threat Management, gestion unifiée des menaces) qui fournit des fonctionnalités de sécurité réseau, y compris l'inspection des paquets avec état, la prévention des intrusions, le contrôle des applications, le filtrage des URL, l'antivirus de passerelle et la connectivité VPN. Les journaux Firebox enregistrent les événements de trafic, les alertes de sécurité, l'activité d'authentification et les informations sur l'état du système.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps.
  • Un hôte Windows 2016 ou version ultérieure, ou Linux avec systemd.
  • Si vous exécutez l'agent derrière un proxy, assurez-vous que les ports de pare-feu sont ouverts conformément aux exigences de l'agent Bindplane.
  • Accès privilégié à l'interface utilisateur Web WatchGuard Firebox (interface utilisateur Web Fireware) ou à WatchGuard System Manager.

Obtenir les identifiants Google SecOps pour l'agent Bindplane

Pour authentifier l'agent Bindplane auprès de Google SecOps, choisissez l'une des méthodes suivantes :

  • Nouveaux déploiements : utilisez l'API Chronicle (option 1).
  • Anciens déploiements : continuez à utiliser le fichier d'authentification d'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
  1. Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
  2. Accédez à IAM et administration > Comptes de service.
  3. Cliquez sur Créer un compte de service.
  4. Fournissez les informations de configuration suivantes :
    • Nom du compte de service : saisissez un nom pour le compte (par exemple, bindplane-ingest).
    • Description du compte de service : saisissez une description (par exemple, Bindplane agent log ingestion).
  5. Cliquez sur Créer et continuer.
  6. Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
  7. Cliquez sur Continue (Continuer), puis sur Done (OK).
  8. Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
  9. Cliquez sur Ajouter une clé > Créer une clé.
  10. Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
  11. Enregistrez le fichier de clé sous le nom ingestion-auth.json dans le répertoire du collecteur Bindplane (/opt/observiq-otel-collector/ingestion-auth.json sous Linux ou C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json sous Windows), ou mettez à jour creds_file_path dans config.yaml pour qu'il corresponde au chemin d'accès où vous l'enregistrez.
  12. Accédez à IAM et administration > Paramètres, puis copiez le numéro du projet. Vous en aurez besoin pour la configuration de l'exportateur.

Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM> Agents de collecte.
  3. Téléchargez le fichier d'authentification d'ingestion.
  4. Enregistrez le fichier de manière sécurisée sur le système où l'agent BindPlane sera installé.

Obtenir l'ID client Google SecOps

  1. Connectez-vous à la console Google SecOps.
  2. Accédez à Paramètres SIEM > Profil.
  3. Copiez et enregistrez le numéro client dans la section Détails de l'organisation.

Installer l'agent BindPlane

Installez l'agent BindPlane sur votre système d'exploitation Windows ou Linux en suivant les instructions ci-dessous.

Installation de Windows

  1. Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
  2. Exécutez la commande suivante :

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installation sous Linux

  1. Ouvrez un terminal avec des privilèges root ou sudo.
  2. Exécutez la commande suivante :

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Ressources d'installation supplémentaires

Configurer l'agent Bindplane pour ingérer les journaux syslog et les envoyer à Google SecOps

  1. Accédez au fichier de configuration :

    • Trouvez le fichier config.yaml. Il se trouve généralement dans le répertoire /opt/observiq-otel-collector/ sous Linux ou dans le répertoire d'installation sous Windows.
    • Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple, nano, vi ou Bloc-notes).
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: chronicle.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'WATCHGUARD'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  • Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
  • Remplacez <LOCATION> par la région de votre instance Google SecOps (par exemple, us, europe ou asia-southeast1). L'exportateur ajoute cette valeur en préfixe à chronicle.googleapis.com.
  • Remplacez <PROJECT_NUMBER> par le numéro de projet indiqué dans IAM et administration > Paramètres.
  • Remplacez YOUR_CUSTOMER_ID par le numéro client réel.
  • Remplacez /path/to/ingestion-authentication-file.json par le chemin d'accès au fichier de clé du compte de service (option 1) enregistré à l'étape 1.

Ancien exportateur d'API d'ingestion

  • Si vous utilisez le fichier d'authentification d'ingestion de l'option 2, remplacez le bloc exporters par ce qui suit. Définissez creds_file_path sur le chemin d'accès au fichier d'authentification d'ingestion. Si votre instance se trouve en dehors des États-Unis, remplacez malachiteingestion-pa.googleapis.com par votre point de terminaison régional (par exemple, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'WATCHGUARD'
        raw_log_field: body
        ingestion_labels:
    

Redémarrez l'agent BindPlane pour appliquer les modifications.

  1. Pour redémarrer l'agent BindPlane sous Linux, exécutez la commande suivante :

    sudo systemctl restart observiq-otel-collector
    
  2. Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :

    net stop observiq-otel-collector && net start observiq-otel-collector
    

Configurer le transfert syslog WatchGuard Firebox

Pour configurer le WatchGuard Firebox afin qu'il transfère les messages syslog à l'agent Bindplane, procédez comme suit à l'aide de l'interface utilisateur Web Fireware :

  1. Connectez-vous à l'interface utilisateur Web Fireware (https://<firebox-ip>:8080).
  2. Accédez à Système > Journalisation.
  3. Cliquez sur Ajouter dans la section Serveurs Syslog.
  4. Fournissez les informations de configuration suivantes :

    • Adresse IP : saisissez l'adresse IP de l'hôte de l'agent BindPlane (par exemple, 192.168.1.100).
    • Port : saisissez 514 (ou le port configuré dans l'agent Bindplane).
    • Format du journal : sélectionnez Syslog (format Syslog BSD standard).
  5. Dans la section Paramètres Syslog, configurez le niveau de journalisation :

    • Définissez le niveau de journalisation sur Informations ou un niveau supérieur pour capturer les événements liés au trafic, à la sécurité et au système.
  6. Cliquez sur Enregistrer.

Configurer les types de journaux à transférer

  1. Dans l'interface utilisateur Web Fireware, accédez à System> Logging> Syslog (Système > Journalisation > Syslog).
  2. Assurez-vous que les types de journaux suivants sont activés pour le transfert syslog :

    • Trafic : événements de trafic du pare-feu (autoriser, refuser).
    • Alarme : événements d'alarme de sécurité et d'IPS.
    • Événement : événements système et changements d'état.
    • Debug (facultatif, pour le dépannage uniquement).
  3. Cliquez sur Enregistrer.

(Autre option) Configurer via WatchGuard System Manager

  1. Ouvrez WatchGuard System Manager et connectez-vous à la Firebox.
  2. Accédez à Setup> Logging > Send log messages to this syslog server (Configuration > Journalisation > Envoyer les messages de journal à ce serveur syslog).
  3. Cliquez sur Ajouter.
  4. Fournissez les informations de configuration suivantes :

    • Adresse IP : saisissez l'adresse IP de l'hôte de l'agent Bindplane.
    • Port : saisissez 514.
    • Format du journal : sélectionnez Syslog.
  5. Cliquez sur OK et enregistrez la configuration dans le Firebox.

Pour en savoir plus, consultez la documentation sur la journalisation WatchGuard Fireware.

Table de mappage UDM

Champ du journal Mappage UDM Logique
action security_result.action_details La valeur de action du journal brut est attribuée à security_result.action_details.
action target.labels.value La valeur de action du journal brut est attribuée à target.labels.value, target.labels.key étant "Action over resource".
arg target.file.full_path La valeur de arg du journal brut est attribuée à target.file.full_path.
app_cat_id about.labels.value La valeur de app_cat_id du journal brut est attribuée à about.labels.value, about.labels.key étant "app_cat_id".
app_cat_name target.application Utilisé en combinaison avec app_name pour former la valeur de target.application (par exemple, "Google - Web services").
app_id about.labels.value La valeur de app_id du journal brut est attribuée à about.labels.value, about.labels.key étant "app_id".
app_name target.application Utilisé en combinaison avec app_cat_name pour former la valeur de target.application (par exemple, "Google - Web services").
cats security_result.category_details La valeur de cats du journal brut est attribuée à security_result.category_details.
cert_issuer network.tls.server.certificate.issuer La valeur de cert_issuer du journal brut est attribuée à network.tls.server.certificate.issuer.
cert_subject network.tls.server.certificate.subject La valeur de cert_subject du journal brut est attribuée à network.tls.server.certificate.subject.
cn network.tls.server.certificate.subject La valeur de cn du journal brut est attribuée à network.tls.server.certificate.subject.
conn_action security_result.action_details La valeur de conn_action du journal brut est attribuée à security_result.action_details.
content_type Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
description metadata.description La valeur de description dérivée du journal brut est attribuée à metadata.description.
dhcp_type network.dhcp.type La valeur de dhcp_type du journal brut est mappée au type DHCP correspondant dans network.dhcp.type (par exemple, "REQUEST", "ACK").
dst_host target.hostname La valeur de dst_host du journal brut est attribuée à target.hostname.
dst_ip target.ip La valeur de dst_ip du journal brut est attribuée à target.ip.
dst_mac target.mac La valeur de dst_mac du journal brut est attribuée à target.mac.
dst_port target.port La valeur de dst_port du journal brut est attribuée à target.port.
dst_user target.user.user_display_name La valeur de dst_user du journal brut est attribuée à target.user.user_display_name.
dstname target.administrative_domain La valeur de dstname du journal brut est attribuée à target.administrative_domain.
duration Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
elapsed_time Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
endpoint intermediary.labels.value La valeur de endpoint du journal brut est attribuée à intermediary.labels.value, intermediary.labels.key étant "Gateway-Endpoint".
event_name principal.application La valeur de event_name du journal brut est attribuée à principal.application.
firewall_id intermediary.asset_id La valeur de firewall_id du journal brut est précédée de "Firewall ID : " et attribuée à intermediary.asset_id.
firewall_name principal.asset_id La valeur de firewall_name du journal brut est précédée de "Firewall: " et attribuée à principal.asset_id.
firewallname intermediary.hostname La valeur de firewallname du journal brut est attribuée à intermediary.hostname.
firewallname principal.hostname La valeur de firewallname du journal brut est attribuée à principal.hostname.
fqdn_dst_match Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
geo Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
geo_dst target.location.country_or_region La valeur de geo_dst du journal brut est attribuée à target.location.country_or_region.
geo_src principal.location.country_or_region La valeur de geo_src du journal brut est attribuée à principal.location.country_or_region.
host Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
ike_policy security_result.rule_id La valeur de ike_policy du journal brut est attribuée à security_result.rule_id.
ike_policy_version security_result.rule_version La valeur de ike_policy_version du journal brut est attribuée à security_result.rule_version.
intermediary_host intermediary.hostname La valeur de intermediary_host du journal brut est attribuée à intermediary.hostname.
ipaddress Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
ipsec_policy Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
ipsec_policy_version Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
keyword Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
line Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
log_message metadata.description La valeur de log_message du journal brut est attribuée à metadata.description lorsque d'autres descriptions plus spécifiques ne sont pas disponibles.
log_reason security_result.summary La valeur de log_reason du journal brut est attribuée à security_result.summary.
log_type metadata.log_type La valeur de log_type du journal brut est attribuée à metadata.log_type. Toujours défini sur "WATCHGUARD".
msg security_result.summary La valeur de msg du journal brut est attribuée à security_result.summary.
msg_id metadata.product_event_type La valeur de msg_id du journal brut est attribuée à metadata.product_event_type.
new_action security_result.action_details Utilisé avec conn_action pour former la valeur de security_result.action_details (par exemple, "ProxyReplace: IP protocol - HTTPS-Client.DPI-Off").
op network.http.method La valeur de op du journal brut est attribuée à network.http.method.
path target.url La valeur de path du journal brut est attribuée à target.url.
pid Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
policy_name intermediary.resource.name La valeur de policy_name du journal brut est attribuée à intermediary.resource.name.
policy_name security_result.rule_name La valeur de policy_name du journal brut est attribuée à security_result.rule_name.
policyname_label.value security_result.rule_labels.value La valeur de policy_name du journal brut est attribuée à security_result.rule_labels.value, security_result.rule_labels.key étant "PolicyName".
prin_host principal.hostname La valeur de prin_host du journal brut est attribuée à principal.hostname.
proc_id Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
protocol network.ip_protocol La valeur de protocol du journal brut, convertie en majuscules, est attribuée à network.ip_protocol. Traitement spécial pour "EXTERNAL ICMP" qui est mappé sur "ICMP".
proxy_act security_result.rule_id La valeur de proxy_act du journal brut est attribuée à security_result.rule_id.
proxy_act security_result.rule_name La valeur de proxy_act du journal brut est attribuée à security_result.rule_name.
query_name network.dns.questions.name La valeur de query_name du journal brut est attribuée à network.dns.questions.name.
query_type network.dns.questions.type La valeur de query_type du journal brut est attribuée à network.dns.questions.type. Gestion spéciale des types de requêtes numériques et mappage vers les types de requêtes DNS standards.
rc Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
reason security_result.summary La valeur de reason du journal brut est attribuée à security_result.summary.
record_type network.dns.answers.type La valeur de record_type du journal brut est mappée au type d'enregistrement DNS correspondant dans network.dns.answers.type.
redirect_action Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
reputation additional.fields.value.string_value La valeur de reputation du journal brut est attribuée à additional.fields.value.string_value, additional.fields.key étant "reputation".
response Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
response_code network.dns.response_code La valeur de response_code du journal brut est mappée au code de réponse DNS correspondant dans network.dns.response_code.
route_type Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
rule_name security_result.rule_name La valeur de rule_name du journal brut est attribuée à security_result.rule_name.
rcvd_bytes network.received_bytes La valeur de rcvd_bytes du journal brut est attribuée à network.received_bytes.
sent_bytes network.sent_bytes La valeur de sent_bytes du journal brut est attribuée à network.sent_bytes.
server_ssl Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
severity Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
sig_vers network.tls.server.certificate.version La valeur de sig_vers du journal brut est attribuée à network.tls.server.certificate.version.
signature_cat additional.fields.value.string_value La valeur de signature_cat du journal brut est attribuée à additional.fields.value.string_value, additional.fields.key étant "signature_cat".
signature_id additional.fields.value.string_value La valeur de signature_id du journal brut est attribuée à additional.fields.value.string_value, additional.fields.key étant "signature_id".
signature_name additional.fields.value.string_value La valeur de signature_name du journal brut est attribuée à additional.fields.value.string_value, additional.fields.key étant "signature_name".
sni network.tls.client.server_name La valeur de sni du journal brut est attribuée à network.tls.client.server_name.
src_ctid Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
src_host principal.hostname La valeur de src_host du journal brut est attribuée à principal.hostname.
src_ip principal.ip La valeur de src_ip du journal brut est attribuée à principal.ip.
src_ip_nat Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
src_mac principal.mac La valeur de src_mac du journal brut est attribuée à principal.mac.
src_port principal.port La valeur de src_port du journal brut est attribuée à principal.port.
src_user principal.user.user_display_name La valeur de src_user du journal brut est attribuée à principal.user.user_display_name.
src_user_name principal.user.user_display_name La valeur de src_user_name du journal brut est attribuée à principal.user.user_display_name.
src_vpn_ip principal.ip La valeur de src_vpn_ip du journal brut est attribuée à principal.ip.
srv_ip Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
srv_port Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
ssl_offload Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
tcp_info Non mappé Non mappé à l'objet IDM dans les exemples d'UDM fournis.
time metadata.event_timestamp.seconds, timestamp.seconds La valeur de time du journal brut est analysée et utilisée pour renseigner metadata.event_timestamp.seconds et timestamp.seconds.
time1 metadata.event_timestamp.seconds, timestamp.seconds La valeur de time1 du journal brut est analysée et utilisée pour remplir metadata.event_timestamp.seconds et timestamp.seconds.
tls_profile about.labels.value La valeur de tls_profile du journal brut est attribuée à about.labels.value, avec about.labels.key défini sur "tls_profile".
tls_version Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
user_name principal.user.userid, principal.user.user_display_name La valeur de user_name du journal brut est attribuée à principal.user.userid ou principal.user.user_display_name selon le contexte.
user_type Non mappé Non mappé à l'objet IDM dans les exemples UDM fournis.
(N/A) intermediary.resource.type Toujours défini sur "ACCESS_POLICY".
(N/A) metadata.event_type Déterminé par la logique de l'analyseur en fonction de msg_id, log_type, event_name et d'autres champs. Il peut s'agir de NETWORK_CONNECTION, SERVICE_MODIFICATION, NETWORK_SMTP, NETWORK_DNS, NETWORK_HTTP, USER_LOGIN, USER_LOGOUT, USER_RESOURCE_UPDATE_CONTENT, RESOURCE_PERMISSIONS_CHANGE, RESOURCE_CREATION, GENERIC_EVENT, STATUS_UPDATE ou USER_UNCATEGORIZED.
(N/A) metadata.product_name Toujours défini sur "Fireware".
(N/A) metadata.vendor_name Toujours défini sur "Watchguard".
(N/A) security_result.action Déterminé par la logique de l'analyseur en fonction de disposition. Valeurs possibles : "ALLOW" ou "BLOCK".
(N/A) extensions.auth.type Définissez la valeur sur "AUTHTYPE_UNSPECIFIED" pour les événements de connexion/déconnexion des utilisateurs et sur "VPN" pour les événements réseau liés aux VPN.
(N/A) network.application_protocol Déterminé par la logique de l'analyseur en fonction de msg_id et event_name. Valeurs possibles : "DNS", "DHCP", "HTTP" ou "HTTPS".
(N/A) network.dns.questions.type Définissez cette valeur sur 1 pour les requêtes d'enregistrement "A".
(N/A) target.labels.key Définissez cette option sur "Action over resource" (Action sur la ressource) lorsque action est mappé sur target.labels.value.
(N/A) intermediary.labels.key Définissez la valeur sur "Nom du membre du pare-feu" lorsque prin_host est mappé sur intermediary.labels.value.
(N/A) intermediary.labels.key Définissez cette option sur "Gateway-Endpoint" lorsque endpoint est mappé sur intermediary.labels.value.
(N/A) principal.labels.key Définissez la valeur sur "Gateway" (Passerelle) lorsque gateway est mappé sur principal.labels.value.
(N/A) target.labels.key Définissez cette option sur "Passerelle" lorsque gateway est mappé sur target.labels.value.
(N/A) principal.labels.key Définissez sur "state" lorsque status est mappé sur principal.labels.value.
(N/A) target.labels.key Définissez cette option sur "État de la passerelle" lorsque status est mappé sur target.labels.value.
(N/A) additional.fields.key Définissez sur "signature_name", "signature_cat", "signature_id" ou "reputation" lorsque les valeurs correspondantes sont mappées à partir du journal brut.

Journal des modifications

Afficher le journal des modifications de cet analyseur

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.