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.
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
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.
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.
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.
Si un pare-feu depuis le rĂ©seau souhaite joindre le SLS, une rĂšgle inverse doit ĂȘtre crĂ©Ă©e :
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 :
à 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...
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.
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 :
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.
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.
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éé.
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 :
Commençons à créer nos différents widgets ! Dans la création du Dashboard, les "widgets" seront créés à savoir :
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 :
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
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
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()
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