Collecter les journaux WatchGuard Fireware
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
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM > Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Installer l'agent BindPlane
- 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
. - 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
. - 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
- Accédez à la machine sur laquelle Bindplane est installé.
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
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
- Connectez-vous à l'interface utilisateur Watchguard.
- Sélectionnez Système > Journalisation.
- Cliquez sur l'onglet Serveur Syslog.
- Cochez la case Envoyer les messages du journal à ces serveurs syslog.
- Cliquez sur Ajouter.
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.
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.