Comment exporter les journaux FortiSIEM

Comment exporter les journaux FortiSIEM

SOC Prime Team
SOC Prime Team linkedin icon Suivre

Utilisez l’API de requête d’événements REST de FortiSIEM. Envoyez une requête XML à /phoenix/rest/query/eventQuery, qui renvoie un ID de requête, suivez la progression jusqu’à ce qu’elle atteigne 100, puis récupérez les événements. Les résultats reviennent sous forme de XML. La ligne de log d’origine de chaque événement se trouve dans l’attribut rawEventMsg, donc quelques lignes de Python transforment le résultat en logs bruts. Les exportations de l’écran Analytics sortent dans des formats que LogTotal ne lit pas aujourd’hui. 

FortiSIEM est courant partout où Fortinet gère le réseau, et il contient souvent bien plus que des logs de pare-feu. Prime Core possède 19 692 règles de détection pour FortiSIEM, mappées à 664 techniques MITRE ATT&CK. Voici comment obtenir des événements, les assainir et les enquêter gratuitement dans LogTotal.

Commencez gratuitement

Avant de commencer

Un utilisateur de l’API. Utilisez un compte avec les droits pour exécuter des requêtes analytiques. L’API s’authentifie avec l’authentification de base, en incluant l’organisation dans le nom d’utilisateur : super/<utilisateur> sur une installation d’entreprise, <org>/<utilisateur> pour une organisation spécifique dans une installation de fournisseur de services.

Rétention. Le stockage en ligne des événements est limité. Les événements plus anciens peuvent se trouver dans un stockage d’archives nécessitant des étapes supplémentaires. 

Noms d’attributs. Les requêtes FortiSIEM utilisent leurs propres noms d’attributs, tels que reptDevName (appareil signalant), reptDevIpAddr, eventType et phRecvTime. Construisez le filtre dans Analytics en premier.

Exporter avec l’API de requête d’événements

Enregistrez la requête sous query.xml :

<?xml version= »1.0″ encoding= »UTF-8″?>
<Reports><Report><Name>Export LogTotal</Name><Description/>
  <SelectClause><AttrList>phRecvTime,reptDevIpAddr,eventType,rawEventMsg</AttrList></SelectClause>
  <ReportInterval><Low>1792368000</Low><High>1792454400</High></ReportInterval>
  <PatternClause><SubPattern id= »1″ name= »Filtre »>
    <SingleEvtConstr>reptDevName = « web-03″</SingleEvtConstr>
  </SubPattern></PatternClause>
</Report></Reports>

L’intervalle est en secondes epoch pour 2026-10-19 00:00 UTC à 2026-10-20 00:00 UTC. Ensuite, exécutez-le :

FSM= »https://fortisiem.example.com »
AUTH= »super/apiuser:$FSM_PASS »

QID=$(curl -sS -u « $AUTH » -X POST -H ‘Content-Type: text/xml’ –data @query.xml « $FSM/phoenix/rest/query/eventQuery »)
until [ « $(curl -sS -u « $AUTH » « $FSM/phoenix/rest/query/progress/$QID ») » = « 100 » ]; do sleep 5; done
curl -sS -u « $AUTH » « $FSM/phoenix/rest/query/events/$QID/0/1000 » > fsm_web03_1019.xml

Les deux derniers segments de chemin sont le décalage de départ et le compte. Parcourez les résultats volumineux par étapes de 1 000. Ensuite, extrayez les messages bruts :

import xml.etree.ElementTree as ET

root = ET.parse(« fsm_web03_1019.xml »).getroot()
with open(« fsm_web03_1019.log », « w ») as out:
    for attr in root.iter(« attribute »):
        if attr.get(« name ») == « rawEventMsg » and attr.text:
            out.write(attr.text.strip() + « n »)

Téléchargez, assainissez et examinez dans LogTotal

  1. Télécharger. Ouvrir logtotal.com et déposez le fichier.
  2. Assainir.
  3. Examiner.

À quoi cela ressemble-t-il sur des données réelles. 

Quand cela tourne mal

SymptômeCause probableFix
401Organisation absente du nom d’utilisateurUtilisez super/<utilisateur> ou <org>/<utilisateur>
La requête renvoie une erreur au lieu d’un IDSyntaxe XML ou nom d’attribut inconnuTestez le filtre dans Analytics ; vérifiez les noms d’attributs
La progression n’atteint jamais 100Requête trop largeRéduisez l’intervalle de temps et le filtre
rawEventMsg videL’attribut n’a pas été sélectionnéAjoutez rawEventMsg à AttrList
Événements anciens manquantsIls sont dans un stockage d’archivesVérifiez les options d’archive

FAQ

Pourquoi XML?

C’est ce que cette API FortiSIEM utilise. L’étape Python le convertit en lignes brutes d’origine, ce qui est généralement ce que vous souhaitez télécharger de toute façon.

Puis-je exporter des incidents à la place?

Les incidents ont leurs propres appels d’API. Pour LogTotal, exportez les événements qui les sous-tendent.

Rejoignez la plateforme Detection as Code de SOC Prime pour améliorer la visibilité sur les menaces les plus pertinentes pour votre entreprise. Pour vous aider à démarrer et à générer une valeur immédiate, planifiez dès maintenant une réunion avec des experts de SOC Prime.