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 😎