Ressources

Construire votre matrice de flux avec Stormshield Log Supervisor

Rédigé par Antoine, le Lundi 12 Juin 2023

Nous sommes souvent confrontĂ©s Ă  la mise en place de nouvelles applications dont la matrice des flux n’est pas connue ou est incomplĂšte. Certes dans l'Ă©tat des choses, mettre en place un nouveau pare-feu de tel type que ce soit dans un rĂ©seau d'entreprise permets de mieux gĂ©rer les diffĂ©rents accĂšs, dans son utilitĂ© d'origine, mais la construction de rĂšgles de filtrages est plus complexe, si on souhaite affiner chaque accĂšs.


Dans cet article, nous verrons comment mettre en place, en guise de remplacement de l'article de Blog avec Stormshield Visibility Center (voir : Peaufinez vos rÚgles de filtrage de vos pares-feux Stormshield avec SVC ! | VemoTech.fr), un mode opératoire qui nous permettra à partir de rÚgles de filtrage « permissives » (en provenance et à destination du nouveau serveur par exemple)


Nous allons ainsi analyser les différents logs correspondants depuis le serveur tiers Stormshield Log Supervisor (SLS) afin de mettre en lumiÚre quels sont les ports sortants, adresse IP sources et adresse IP de destinations à ouvrir. Cette procédure sera réalisée sur la version SLS 1.1.1.


Installation du serveur SLS

Stormshield Log Supervisor est un produit commercialisé par Stormshield. Sur leur site internet, une procédure est disponible afin de réaliser de déploiement de l'image OVA, à télécharger sur leur portail client MyStormshield.


👉 Voir : https://documentation.stormshield.eu/SLS/v1/en/Content/PDF/sls-en-deployment_guide_ova.pdf



Récupérer les traces d'un pare-feu SNS

Maintenant que notre serveur SLS est désormais installé, nous allons dÚs à présent configurer un pare-feu SNS de telle sorte à envoyer les logs sur le serveur.

Sur l'interface d'administration du pare-feu Stormshield, allez dans le menu de navigation CONFIGURATION > NOTIFICATIONS > Traces – Syslog – IPFIX.


Ajouter le serveur Syslog

Dans l'onglet "Syslog", c'est Ă  cet endroit que nous allons ajouter notre serveur SLS :




Dans un premier temps, nous allons activer le profil SYSLOG.

Ensuite, dans les dĂ©tails, nous allons renseigner un nom explicite (exemple : SYSLOG-SLS) et un commentaire si nĂ©cessaire. Ensuite, comme "Serveur Syslog", spĂ©cifiez l'objet machine crĂ©Ă© au prĂ©alable qui est l'adresse IP du serveur SLS. CrĂ©ez un objet contenant l’adresse IPV4 de votre serveur SLS et spĂ©cifiez le protocole de communication UDP. De plus, le port "syslog" (UDP:514) et le format RFC5424 doivent ĂȘtre spĂ©cifiĂ©s.


Gardez les options par défaut, dans la partie "Configuration Avancée". On souhaite envoyer toutes les traces du firewall. Enfin, enregistrez les modifications.



Création de la rÚgle de filtrage

Afin d'autoriser la communication entre le serveur SLS et le pare-feu, une rĂšgle de filtrage doit ĂȘtre crĂ©Ă©e afin d'autoriser le flux depuis le SYSLOG Ă  destination de l'interface enregistrĂ©e sur le SLS.


  • Source : serveur SLS
  • Destination : Firewall
  • Port : "syslog"


Si un pare-feu depuis le rĂ©seau souhaite joindre le SLS, une rĂšgle inverse doit ĂȘtre crĂ©Ă©e :


  • Source : Firewall
  • Destination : serveur SLS
  • Port : "syslog"


Création de la rÚgle de filtrage pour la matrice de Flux

Dans notre cas d'exemple, nous devons filtrer, identifier les ressources qui sont ou doivent ĂȘtre accessibles sur un serveur Web, sur le rĂ©seau DMZ de notre entreprise. Nous allons devoir crĂ©er une rĂšgle permissive afin d'autoriser tout le trafic temporairement, mais notre objectif sera ici d'Ă©tudier sur plusieurs jours, une semaine, un mois, toutes les entrĂ©es sorties : les ports et adresses IP sources et de destination.


Sur notre pare-feu, nous allons créer une rÚgle permissive, autorisant une machine (ici : un serveur Web) à destination de "Any", sur les ports de destination "Any" avec l'IPS d'activé :




Plusieurs paramÚtres sont à spécifier :

  • Un nom de rĂšgle explicite : ce nom sera Ă  retenir, afin de construire par la suite nos panneaux de bords sur le serveur SLS, pour la matrice de flux.
  • La machine source : le serveur Web qui nĂ©cessite l'inspection des connexions. Vous pouvez trĂšs bien mettre comme source "Any" afin de visualiser toute les connexions entrantes.
  • La destination et ports de destinations : Any (sauf si vous souhaitez rĂ©aliser une matrice de flux plus restrictive, sur un port particulier, une adresse de destination prĂ©cise).
  • Commentaire : vous pouvez identifier la rĂšgle de telle sorte Ă  distinguer cette rĂšgle comme temporaire, destinĂ©es Ă  l'usage de la construction de notre matrice, puis la date de crĂ©ation de la rĂšgle.


À noter qu'il n'est pas nĂ©cessaire de spĂ©cifier le niveau de trace en "verbose" (mode "AvancĂ©"), ce qui n'est pas nĂ©cessaire car cette fonction est uniquement nĂ©cessaire afin de voir ce qui bloque. Le moindre Handshake TCP/IP, le moindre PING sera loggĂ© et sera donc stockĂ© sur la partition log du firewall... pas top pour l'espace disque... 😉


Accéder à l'interface d'administration du Syslog

Maintenant que la configuration sur le pare-feu a été réalisée, du cÎté de notre serveur SLS, notre objectif est d'enregistrer le firewall depuis l'interface WEB d'administration afin d'autoriser le SNS à envoyer des logs ; et de créer ensuite un tableau de bord, dédié à notre matrice de flux.


Enregistrer l'interface du pare-feu

Rendez-vous sur l'interface Web du SLS, depuis l'adresse : https://<SLS_IP_FQDN>/.

Vous tombez alors sur l'interface principale :




Cliquez, dans la zone supérieure, sur le bouton "Settings", puis en bas de l'écran sur le bouton "Configuration" et enfin sur le bouton "Devices" :




Cette partie va nous permettre d'enregistrer, d'ajouter notre firewall SNS configuré précédemment. La page "Devices" permets d'ajouter, de définir chaque pare-feu et ainsi de répertorier l'ensemble des firewalls enregistrés.

Afin d'en ajouter un nouveau, cliquer sur le bouton "Add" :




Un assistant s'ouvre et renseignez les informations du pare-feu :




Saisissez quelques informations :

  • Name : Un nom commun tel que le nom du SNS, afin de l'identifier sur SLS,
  • IP Address : L'adresse IP du firewall accessible par SLS,
  • Log Collection Policy : choisissez "stormshield".


Monitorez les firewalls

AprÚs avoir appliquer les modifications et le firewall en question, l'objectif est de vérifier si les informations su firewall sont remontées. Nous allons donc aller dans le Dashboard "SNS MONITOR".

Afin d'y accéder, cliquez sur le bouton Search, puis dans la partie Search Template, le lien SNS Monitor :




Une fois sur le Dashboard, des informations sur tous les firewalls enregistrés sur SLS apparaissent et des graphiques de la consommation CPU sont présentés.

Le rafraichissement n'est pas instantané. Afin de récupérer les données, cliquez sur le bouton "Update" :




Dans notre cas, nous pouvons voir que les informations de notre pare-feu sont bien récupérés.


Relever les connexions avec le serveur SLS

Notre objectif est maintenant de crĂ©er de nouveaux graphiques afin d’organiser toutes les connexions entrantes, sortantes et les ports de destinations de notre pare-feu. C'est pour cela que nous allons crĂ©er trois graphiques afin d’afficher ces diffĂ©rentes donnĂ©es.


Création d'un Dashboard

Pour commencer, nous allons créer un tableau de bord, un "Dashboard", dédié à notre matrice de flux. Pour cela, nous allons aller sur la page d'accueil, puis cliquer sur le bouton "+" :




On souhaite créer un panneau vide. Choisissez un nom explicite représentant le type de matrice de flux + le nom de la machine + date de création (suggestion) :




Le panneau vide est créé.




Comment construire une rĂšgle SYSLOG ?

Afin de crĂ©er une rĂšgle avec les bons Ă©lĂ©ments, chacune des rĂšgles doivent ĂȘtre de façon a obtenir le nombre de connexion en fonction d'une source et / ou d'une destination.

Dans un premier temps, nous allons récupérer les logs en brut, et puis de filtrer tout les logs récupérés par le nom de la rÚgle.


Cliquez le bouton "Search", puis dans la zone de texte, on souhaite récupérer, trier les logs par le nom de la rÚgle de la matrice de flux, à savoir : "sls-matrix-vemotech.fr" :




On trie les logs par le nom de la rĂšgle. Dans le champs de recherche, saisissez l'instruction suivante :

"rule"="sls-matrix-vemotech.fr"


À partir de cela, les derniers logs sur 5 minutes sont affichĂ©s. Il est possible de modifier la limite de temps en cliquant, en haut Ă  droite, sur le menu "LAST XX YYYY" :



Tous les logs en brut sont affichés :




En cliquant sur les champs, dans le panneau latéral gauche, vous pouvez ajoutez d'autres critÚres afin de peaufiner le filtrage, utile par la suite dans la création de nos graphiques, en cliquant sur le champ "dstname" afin d'afficher un panneau regroupant toutes les destinations matchées avec notre rÚgle de filtrage :




Création des graphiques

Commençons à créer nos différents widgets ! Dans la création du Dashboard, les "widgets" seront créés à savoir :

  • "Destination Ports" : les ports de destinations.
  • La frĂ©quence de rĂ©currence des logs.
  • "IP Source" : les rĂ©seaux, machines source.
  • "IP Destination" : les rĂ©seaux, machines de destination.
  • Les derniers logs bruts triĂ©s par le nom de la rĂšgle.


Ports de destination

C'est parti pour la création du premier widget qui sera un diagramme circulaire regroupant le nombre de ports de destination. On ajoute un widget en cliquant sur "Add Widget" :




Un assistant s'ouvre. PremiÚre chose, veuillez spécifier un nom pour ce widget (exemple : "Destination Ports").

La construction de la "query" sera réalisées de la maniÚre suivante :

  • "rule" : nom de la rĂšgle pour la matrice de flux (rĂšgle permissive).
  • "source_address=*" : toute adresses source.
  • "destination_address=*" : toute adresses de destination.


Ensuite, une fois la récupération des données en fonction des critÚres de sélection, on souhaite afficher uniquement le nombre de connexion (chart count() as "count") en en fonction des ports de destinations (by destination_port), trier le nombre de connexions au plus récent (order by "count" desc) avec une limite de 20 (limit 20).


RequĂȘte finale :

"rule"="<NOM_REGLE_FW_POUR_MATRICE_FLUX>" source_address=* destination_address=* | chart count() as "count" by destination_port order by "count" desc limit 20


Lors de la création du widget :




On réalise notre étude sur une rangée de 1 journée :




Notre widget est crĂ©Ă© et la rĂ©cupĂ©ration des donnĂ©es s'effectue. Pendant ce temps, passez la souris sur le titre du graphique, puis en haut Ă  droite cliquez sur la coche "⌄" afin d'ouvrir le menu. En bas, sĂ©lectionnez le type de graphique pour "Donut" et cochez l'option "Legend" afin d'afficher les informations de chaque portion du graphique :



Rendu final :



Adresses source

Respectez la mĂȘme procĂ©dure prĂ©cĂ©dente et modifiez uniquement la requĂȘte pour les adresses IP source :

"rule"="<NOM_REGLE_FW_POUR_MATRICE_FLUX>" source_address=* destination_address=* | chart count() as "count" by source_address



Adresse de destination

Respectez la mĂȘme procĂ©dure prĂ©cĂ©dente et modifiez uniquement la requĂȘte pour les adresses IP de destination :

"rule"="<NOM_REGLE_FW_POUR_MATRICE_FLUX>" source_address=* destination_address=* | chart count() as "count" by destination_address



Fréquence

Respectez la mĂȘme procĂ©dure prĂ©cĂ©dente et modifiez uniquement la requĂȘte pour la frĂ©quence et modifiez Ă©galement l'intervalle (≈environ sur 2 jours, une semaine... Ă  vous de voir 😉) :

"rule"="<NOM_REGLE_FW_POUR_MATRICE_FLUX>" source_address=* destination_address=* destination_port=* | timechart count()



Récupérer les logs bruts

Vous pouvez également récupérer les différents logs, de cette rÚgle dédiée à la matrice de flux, en récupérant les 25 derniers logs, d'ici 5 minutes :



RequĂȘte :

"rule"="<NOM_REGLE_FW_POUR_MATRICE_FLUX>" source_address=* destination_address=*



Voici un aperçu de notre Dashboard au complet :




Grùce à cela, nous pouvons établir simplement une matrice de flux en ne fournissant que les services nécessaire à une machine dans un réseau. Au fur et à mesure, créez vos rÚgles de filtrages au dessus de votre rÚgle permissive afin de les faires matcher :




Bien sĂ»r, les rĂšgles sont Ă  adapter en fonction de vos besoins. N'oubliez pas de supprimer la rĂšgle permissive, une fois que la matrice de flux est terminĂ©e 😉

À vous de jouer 😎