Collecter les journaux WatchGuard Fireware

Compatible avec :

Présentation

Ce parseur extrait les journaux WatchGuard Fireware au format JSON ou clé/valeur (KV), et les transforme en UDM. Il gère différemment les journaux "Traffic" et "Event", en utilisant des filtres grok et kv pour extraire les champs et les mapper à l'UDM, avec une logique spécifique pour différentes valeurs msg_id et noms d'événements, en gérant les protocoles réseau, les actions utilisateur, les résultats de sécurité et d'autres détails pertinents. Il traite également un deuxième groupe d'entrées syslog, en extrayant des informations similaires et en les mappant au format UDM.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à Watchguard.
  • Assurez-vous de disposer d'un hôte Windows 2012 SP2 ou version ultérieure, ou d'un hôte Linux avec systemd.
  • Si vous exécutez le programme derrière un proxy, assurez-vous que les ports du pare-feu sont ouverts.

Obtenir le fichier d'authentification d'ingestion Google SecOps

  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.

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 de la section Informations sur l'organisation.

Installer l'agent BindPlane

  1. Pour l'installation sous Windows, exécutez le script suivant : msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Pour installer Linux, exécutez le script suivant : sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Vous trouverez d'autres options d'installation dans ce guide d'installation.

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

  1. Accédez à la machine sur laquelle Bindplane est installé.
  2. Modifiez le fichier config.yaml comme suit :

    receivers:
      tcplog:
        # Replace the below port <54525> and IP (0.0.0.0) with your specific values
        listen_address: "0.0.0.0:54525" 
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the creds location below according the placement of the credentials file you downloaded
            creds: '{ json file for creds }'
            # Replace <customer_id> below with your actual ID that you copied
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # You can apply ingestion labels below as preferred
            ingestion_labels:
            log_type: SYSLOG
            namespace: testNamespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Redémarrez l'agent Bindplane pour appliquer les modifications à l'aide de la commande suivante : sudo systemctl bindplane restart

Ajouter la configuration du serveur Syslog à Watchguard

  1. Connectez-vous à l'interface utilisateur Watchguard.
  2. Sélectionnez Système > Journalisation.
  3. Cliquez sur l'onglet Serveur Syslog.
  4. Cochez la case Envoyer les messages du journal à ces serveurs syslog.
  5. Cliquez sur Ajouter.
  6. Spécifiez les valeurs des paramètres d'entrée dans la boîte de dialogue Serveur Syslog :

    • Adresse IP : saisissez l'adresse IP du serveur.
    • Port : modifiez le port du serveur syslog par défaut (514) et saisissez un autre port pour votre serveur.
    • Format du journal : sélectionnez Syslog dans le menu déroulant.
    • Facultatif : Description : saisissez une description du serveur (par exemple, Exportation Google SecOps).
    • Facultatif : Code temporel : cochez la case à cocher pour inclure la date et l'heure de l'événement sur votre Firebox dans les détails du message du journal.
    • Facultatif : Numéro de série de l'appareil : cochez la case pour inclure le numéro de série de la Firebox dans les détails du message du journal.
    • Installation Syslog : pour chaque type de message de journal, sélectionnez une priorité dans le menu déroulant (par exemple, pour les messages Syslog à haute priorité, tels que les alarmes, sélectionnez Local0).
    • Facultatif : Rétablir les paramètres par défaut pour rétablir les paramètres par défaut.
  7. Cliquez sur Enregistrer.

Table de mappage UDM

Champ de 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, avec target.labels.key défini sur "Action sur la ressource".
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, avec about.labels.key défini sur "app_cat_id".
app_cat_name target.application Utilisé en combinaison avec app_name pour former la valeur de target.application (par exemple, "Google – Services Web").
app_id about.labels.value La valeur de app_id du journal brut est attribuée à about.labels.value, avec about.labels.key défini sur "app_id".
app_name target.application Utilisé en combinaison avec app_cat_name pour former la valeur de target.application (par exemple, "Google – Services Web").
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 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, avec intermediary.labels.key défini sur "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 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 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, avec security_result.rule_labels.key défini sur "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 UDM fournis.
protocol network.ip_protocol La valeur de protocol du journal brut, convertie en majuscules, est attribuée à network.ip_protocol. Gestion spéciale 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 aux 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 UDM fournis.
reputation additional.fields.value.string_value La valeur de reputation du journal brut est attribuée à additional.fields.value.string_value, avec additional.fields.key défini sur "reputation".
response Non mappé Non mappé à l'objet IDM dans les exemples 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 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 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, avec additional.fields.key défini sur "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, avec additional.fields.key défini sur "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, avec additional.fields.key défini sur "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 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 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 UDM fournis.
time metadata.event_timestamp.seconds, timestamp.seconds La valeur de time du journal brut est analysée et utilisée pour remplir 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 la valeur sur 1 pour les requêtes d'enregistrement "A".
(N/A) target.labels.key Définissez sur "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 sur "Gateway-Endpoint" (Passerelle-Point de terminaison) lorsque endpoint est mappé sur intermediary.labels.value.
(N/A) principal.labels.key Définissez sur "Passerelle" lorsque gateway est mappé sur principal.labels.value.
(N/A) target.labels.key Définissez sur "Passerelle" lorsque gateway est mappé sur target.labels.value.
(N/A) principal.labels.key Définissez sur "state" (état) lorsque status est mappé sur principal.labels.value.
(N/A) target.labels.key Définissez la valeur 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.

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