Collecter les journaux du WAF FortiWeb

Compatible avec:

Ce document explique comment collecter les journaux du pare-feu d'application Web (WAF) FortiWeb à l'aide d'un transfert Google Security Operations.

Pour en savoir plus, consultez la section Présentation de l'ingestion de données dans Google Security Operations.

Un libellé d'ingestion identifie l'analyseur qui normalise les données de journal brutes au format UDM structuré. Les informations présentées dans ce document s'appliquent à l'analyseur avec le libellé d'ingestion FORTINET_FORTIWEB.

Configurer les journaux du WAF FortiWeb

Pour configurer le WAF FortiWeb afin qu'il envoie des journaux à un transfert Google Security Operations, procédez comme suit:

Créer une règle syslog

  1. Connectez-vous à la console Fortinet FortiWeb.
  2. Dans la console Fortinet FortiWeb, sélectionnez Journal et rapports > Règle de journalisation > Règle Syslog.
  3. Cliquez sur Créer.
  4. Dans la fenêtre Nouvelle règle syslog qui s'affiche, procédez comme suit:

    • Dans le champ Nom de la stratégie, spécifiez un nom pour la stratégie que vous souhaitez utiliser dans la configuration.
    • Dans le champ Adresse IP, spécifiez l'adresse IP ou le nom d'hôte du serveur syslog distant.
    • Dans le champ Port, spécifiez le port du serveur syslog.
    • Décochez la case Activer le format CSV, si elle est cochée.
  5. Cliquez sur OK.

Activer les types et le niveau de journalisation syslog

  1. Dans la console Fortinet FortiWeb, sélectionnez Log & report (Journal et rapports) > Log config (Configuration des journaux) > Global log settings (Paramètres des journaux globaux).
  2. Dans la fenêtre Paramètres de journalisation globaux qui s'affiche, cochez la case Syslog, puis procédez comme suit:

    • Dans la liste Règle Syslog, sélectionnez la règle Syslog que vous avez créée précédemment.
    • Dans la liste Niveau de journalisation, choisissez le niveau de gravité minimal pour les journaux à collecter.
    • Dans la liste Facility (Installation), sélectionnez l'installation de journalisation.
  3. Cliquez sur Appliquer.

Créer un déclencheur

  1. Dans la console Fortinet FortiWeb, sélectionnez Journal et rapports > Règle de journalisation > Règle de déclenchement.
  2. Cliquez sur Créer.
  3. Dans la fenêtre Nouvelle règle de déclencheur qui s'affiche, procédez comme suit:

    • Dans le champ Nom de la stratégie, spécifiez un nom pour la stratégie que vous souhaitez utiliser dans la configuration.
    • Dans la liste Règle Syslog, sélectionnez la règle Syslog que vous avez créée précédemment.
  4. Cliquez sur OK.

    Mettez à jour votre stratégie syslog avec le déclencheur nouvellement créé pour vous assurer que tous les événements requis sont consignés dans le transfert syslog de Google Security Operations.

Configurer le transfert Google Security Operations pour ingérer les journaux du WAF FortiWeb

  1. Accédez à Paramètres du SIEM > Transferts.
  2. Cliquez sur Ajouter un forwarder.
  3. Dans le champ Nom du transmettant, saisissez un nom unique pour le transmettant.
  4. Cliquez sur Envoyer. Le forwarder est ajouté, et la fenêtre Ajouter une configuration de collecteur s'affiche.
  5. Dans le champ Nom du collecteur, saisissez un nom.
  6. Sélectionnez Fortinet Web Application Firewall (Barrière de protection Web Fortinet) comme type de journal.
  7. Sélectionnez Syslog comme type de collecteur.
  8. Configurez les paramètres d'entrée obligatoires suivants :
    • Protocole: spécifiez le protocole de connexion utilisé par le collecteur pour écouter les données syslog.
    • Address (Adresse) : spécifiez l'adresse IP ou le nom d'hôte cible où le collecteur réside et écoute les données syslog.
    • Port: spécifiez le port cible sur lequel se trouve le collecteur et qui écoute les données syslog.
  9. Cliquez sur Envoyer.

Pour en savoir plus sur les transferts Google Security Operations, consultez Gérer les configurations de transfert via l'interface utilisateur de Google Security Operations.

Si vous rencontrez des problèmes lors de la création de transmetteurs, contactez l'assistance Google Security Operations.

Référence de mappage de champ

Cet analyseur gère les journaux de FORTINET FORTIWEB au format clé-valeur (KV), en les transformant en UDM. Il traite les journaux au format CEF et non CEF, en extrayant les champs, en normalisant les valeurs et en les mappant sur les champs UDM appropriés en fonction du format de journal.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
action additional.fields[].value.string_value La valeur est mappée directement.
action security_result.action_details Si action est défini sur "Allow" (Autoriser) ou "accept" (Accepter), security_result.action_details est défini sur "ALLOW". Si action est défini sur "Denied" (Refusé), "deny" (Refuser), "block" (Bloquer) ou "Block" (Bloquer), security_result.action_details est défini sur "BLOCK".
app network.application_protocol La valeur est mappée directement après avoir été mise en majuscules. Uniquement si la valeur est HTTPS, HTTP, DNS, DHCP ou SMB.
app_name additional.fields[].key La clé est définie sur "appName".
app_name additional.fields[].value.string_value La valeur est mappée directement.
backend_service additional.fields[].key La clé est définie sur "backend_service".
backend_service additional.fields[].value.string_value La valeur est mappée directement.
cat security_result.category_details La valeur est mappée directement.
client_level security_result.category Si client_level est défini sur "Malicious" (Malveillant), security_result.category est défini sur "NETWORK_MALICIOUS".
cn1 additional.fields[].value.string_value Mappé sur le champ threatWeight.
cn1Label additional.fields[].key La clé est définie sur la valeur cn1Label.
cn2 additional.fields[].value.string_value Mappé sur le champ "length".
cn2Label additional.fields[].key La clé est définie sur la valeur cn2Label.
cn3 additional.fields[].value.string_value Mappé sur le champ "signatureID".
cn3Label additional.fields[].key La clé est définie sur la valeur cn3Label.
cs1 additional.fields[].value.string_value La valeur est mappée directement.
cs1Label additional.fields[].key La clé est définie sur la valeur cs1Label.
cs1 principal.user.product_object_id La valeur est mappée directement lorsque cs1Label correspond à "userID" (sans distinction entre majuscules et minuscules).
cs2 additional.fields[].value.string_value La valeur est mappée directement.
cs2Label additional.fields[].key La clé est définie sur la valeur cs2Label.
cs2 principal.user.userid La valeur est mappée directement lorsque cs2Label correspond à "userName" (sans distinction entre majuscules et minuscules) et que suid est vide.
cs3 additional.fields[].value.string_value La valeur est mappée directement.
cs3Label additional.fields[].key La clé est définie sur la valeur cs3Label.
cs3 metadata.severity La valeur est mappée directement lorsque cs3Label est "niveau" et que cs3 n'est pas vide.
cs4 additional.fields[].value.string_value Mappé sur le champ "subType".
cs4Label additional.fields[].key La clé est définie sur la valeur cs4Label.
cs5 additional.fields[].value.string_value Mappé sur le champ threatLevel.
cs5Label additional.fields[].key La clé est définie sur la valeur cs5Label.
cs6 additional.fields[].value.string_value Mappé sur le champ owaspTop10.
cs6Label additional.fields[].key La clé est définie sur la valeur cs6Label.
date metadata.event_timestamp.seconds Combiné avec time et analysé pour générer des secondes d'époque.
dev_id principal.resource.id La valeur est mappée directement.
devname principal.resource.name La valeur est mappée directement.
device_event_class_id metadata.product_event_type Utilisé dans l'analyse CEF.
device_product metadata.product_name Utilisé dans l'analyse CEF.
device_vendor metadata.vendor_name Utilisé dans l'analyse CEF.
device_version metadata.product_version Utilisé dans l'analyse CEF.
dhost target.hostname La valeur est mappée directement.
dpt target.port La valeur est mappée directement et convertie en entier.
dst target.ip La valeur est mappée directement.
dst_port target.port La valeur est mappée directement et convertie en entier.
dstepid target.process.pid La valeur est mappée directement.
dsteuid target.user.userid La valeur est mappée directement.
event_name metadata.product_event_type Utilisé dans l'analyse CEF.
http_agent network.http.parsed_user_agent La valeur est analysée en tant que chaîne user-agent.
http_method network.http.method La valeur est mappée directement.
http_refer network.http.referral_url La valeur est mappée directement.
http_session_id network.session_id La valeur est mappée directement.
http_url target.url La valeur est mappée directement.
http_version metadata.product_version La valeur est mappée directement.
length additional.fields[].key La clé est définie sur "length".
length additional.fields[].value.string_value La valeur est mappée directement.
log_type metadata.log_type Code codé en dur sur "FORTINET_FORTIWEB".
main_type additional.fields[].key La clé est définie sur "mainType".
main_type additional.fields[].value.string_value La valeur est mappée directement.
message Divers champs Analysé à l'aide des filtres grok et kv pour extraire différents champs.
ml_allow_method additional.fields[].key La clé est définie sur "ml_allow_method".
ml_allow_method additional.fields[].value.string_value La valeur est mappée directement.
ml_arg_dbid additional.fields[].key La clé est définie sur "ml_arg_dbid".
ml_arg_dbid additional.fields[].value.string_value La valeur est mappée directement.
ml_domain_index additional.fields[].key La clé est définie sur "ml_domain_index".
ml_domain_index additional.fields[].value.string_value La valeur est mappée directement.
ml_log_arglen additional.fields[].key La clé est définie sur "ml_log_arglen".
ml_log_arglen additional.fields[].value.string_value La valeur est mappée directement.
ml_log_hmm_probability additional.fields[].key La clé est définie sur "ml_log_hmm_probability".
ml_log_hmm_probability additional.fields[].value.string_value La valeur est mappée directement.
ml_log_sample_arglen_mean additional.fields[].key La clé est définie sur "ml_log_sample_arglen_mean".
ml_log_sample_arglen_mean additional.fields[].value.string_value La valeur est mappée directement.
ml_log_sample_prob_mean additional.fields[].key La clé est définie sur "ml_log_sample_prob_mean".
ml_log_sample_prob_mean additional.fields[].value.string_value La valeur est mappée directement.
ml_svm_accuracy additional.fields[].key La clé est définie sur "ml_svm_accuracy".
ml_svm_accuracy additional.fields[].value.string_value La valeur est mappée directement.
ml_svm_log_main_types additional.fields[].key La clé est définie sur "ml_svm_log_main_types".
ml_svm_log_main_types additional.fields[].value.string_value La valeur est mappée directement.
ml_svm_log_match_types additional.fields[].key La clé est définie sur "ml_svm_log_match_types".
ml_svm_log_match_types additional.fields[].value.string_value La valeur est mappée directement.
ml_url_dbid additional.fields[].key La clé est définie sur "ml_url_dbid".
ml_url_dbid additional.fields[].value.string_value La valeur est mappée directement.
monitor_status additional.fields[].key La clé est définie sur "monitor_status".
monitor_status additional.fields[].value.string_value La valeur est mappée directement.
msg metadata.description La valeur est mappée directement.
owasp_top10 additional.fields[].key La clé est définie sur "owaspTop10".
owasp_top10 additional.fields[].value.string_value La valeur est mappée directement.
principal_app principal.application La valeur est mappée directement.
principal_host principal.hostname La valeur est mappée directement.
proto network.ip_protocol La valeur est mappée directement après avoir été mise en majuscules.
request target.url La valeur est mappée directement.
requestMethod network.http.method La valeur est mappée directement.
rt metadata.event_timestamp.seconds Analysé en millisecondes depuis l'epoch et converti en secondes.
security_result.severity security_result.severity Dérivé de severity_level. Mappé sur différentes valeurs de gravité UDM en fonction de la valeur brute du journal. La valeur par défaut est UNKNOWN_SEVERITY si aucune correspondance n'est trouvée.
server_pool_name additional.fields[].key La clé est définie sur "server_pool_name".
server_pool_name additional.fields[].value.string_value La valeur est mappée directement.
service network.application_protocol La valeur est mappée directement après avoir été mise en majuscules.
service target.application La valeur est mappée directement après avoir été mise en majuscule si elle ne correspond pas à HTTPS, HTTP, DNS, DHCP ou SMB.
severity security_result.severity Si severity est vide et que cs3Label est "niveau", la valeur de cs3 est utilisée. Elles sont ensuite mappées à une valeur de gravité UDM (LOW, HIGH, etc.).
signature_id security_result.rule_id La valeur est mappée directement.
signature_subclass security_result.detection_fields[].key La clé est définie sur "signature_subclass".
signature_subclass security_result.detection_fields[].value La valeur est mappée directement.
src principal.ip La valeur est mappée directement.
src_country principal.location.country_or_region La valeur est mappée directement.
src_ip principal.ip La valeur est mappée directement.
src_port principal.port La valeur est mappée directement et convertie en entier.
srccountry principal.location.country_or_region La valeur est mappée directement.
sub_type additional.fields[].key La clé est définie sur "subType".
sub_type additional.fields[].value.string_value La valeur est mappée directement.
subtype target.resource.resource_subtype La valeur est mappée directement.
suid principal.user.userid La valeur est mappée directement.
threat_level additional.fields[].key La clé est définie sur "threatLevel".
threat_level additional.fields[].value.string_value La valeur est mappée directement.
threat_weight security_result.detection_fields[].key La clé est définie sur "threat_weight".
threat_weight security_result.detection_fields[].value La valeur est mappée directement.
time metadata.event_timestamp.seconds Combiné avec date et analysé pour générer des secondes d'époque.
user_id principal.user.product_object_id La valeur est mappée directement.
user_name additional.fields[].key La clé est définie sur "userName".
user_name additional.fields[].value.string_value La valeur est mappée directement.
user_name principal.user.userid La valeur est mappée directement.
N/A metadata.event_type Définissez sur "NETWORK_CONNECTION" si principal.ip et target.ip sont tous deux présents. Définissez-le sur "USER_UNCATEGORIZED" si principal.ip et principal.user sont présents. Défini sur "STATUS_UPDATE" si seul principal.ip est présent. Sinon, définissez-le sur "GENERIC_EVENT".
N/A metadata.log_type Code codé en dur sur "FORTINET_FORTIWEB".
N/A metadata.product_name Code codé en dur sur "FORTINET FORTIWEB" ou "FortiWEB Cloud" en fonction du format de journal.
N/A metadata.vendor_name Code codé en dur sur "FORTINET" ou "Fortinet" en fonction du format de journal.
N/A principal.resource.resource_type Codé en dur sur "DEVICE" si dev_id est présent.

Modifications

2024-01-09

  • Ajout de la prise en charge des journaux au format CEF.
  • Ajout d'un format Grok correspondant au nouveau format des journaux CEF.
  • Mappage de "principal_hostnamne" sur "principal.hostname".
  • Mappage de "principal.app" sur "principal.application".

2023-05-18

  • Analyseur nouvellement créé.

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