Windows a implémenté dans ses OS son propre firewall qu’il peut être utile de savoir gérer, que ce soit personnellement pour autoriser une application bien précise en faisant une exception ou pour les entreprises qui veulent que leurs systèmes soient cleans et qui n’ouvrent que ce qui est nécessaire.

Dans cet article, je vous propose 3 méthodes pour appréhender ce firewall de façon simple en autorisant des flux entrants sur un serveur. Let’s go !


Découvrir 3 méthodes pour autoriser du flux entrant dans le pare-feu local de Windows

Un pare-feu, ou firewall, est un composant qui peut être logique (une application) ou physique (un équipement) dont la fonction est de protéger ce qui rentre et sort d’un réseau informatique privé. C’est une sorte de gros filtre des communications permettant d’autoriser ou de refuser un flux de données en particulier en triant les paquets de données.

Le pare-feu intégré aux systèmes d’exploitation Windows fonctionne de manière similaire sauf qu’il est « local », c’est-à-dire qu’il ne s’applique que à la machine sur laquelle il est.

Autre différence également avec un vrai pare-feu indépendant, c’est que celui de Windows va souvent nous prévenir quand il a besoin d’une exception dans le firewall, ou mieux, se gérer seul comme par exemple pour les accès à des partages, il va ouvrir de lui-même les flux nécessaires sans avoir besoin de notre intervention.

Mais parfois, on est obligé d’aller mettre les mains dedans et savoir s’en servir ne fait pas de mal surtout quand 1 fois sur 2 le firewall de Windows est carrément « désactivé »… no

Pour ce tuto, et comme le veut l’esprit du site de rester simple pour être compréhensible par le plus grand nombre, nous allons ici voir 3 méthodes différentes qui vont autoriser le flux entrant sur un serveur 2022 émanant des protocoles ICMP (pour obtenir une réponse à un ping) et SMB (pour l’accès distants aux partages), libre à vous d’adapter selon vos besoins réels, ce n’est qu’une illustration simple pour découvrir le fonctionnement du pare-feu local.

Accès rapide aux différentes parties de cet article : 

      1. Configuration manuelle du pare-feu local
      2. Configuration du pare-feu local via Powershell
      3. Configuration du pare-feu local via stratégie de groupe (GPO)

 

Mon labo du jour est assez simple car je n’ai que 2 machines :

La machine que je cherche à joindre à distance (depuis srv-ad) est chez moi celle nommée « srv-fichiers ». Vous pouvez faire vos tests depuis n’importe quel poste dans le même réseau, ça n’a pas d’importance.

Si je tente un ping depuis une machine dans le même réseau, j’aurai ce retour (sauf si la machine à atteindre est un contrôleur de domaine) :

Si je tente d’accéder à un partage hébergé sur « srv-fichiers » (même un partage administratif de type c$, e$, etc…), une nouvelle fois ça ne passera pas :

Tout ceci est normal, le pare-feu local de srv-fichiers bloque les requêtes entrantes. La réponse se situe donc dans le pare-feu local de la machine que l’on veut joindre.

OK donc on va le faire sauter du coup paske balec de ce bail… BAH NON ! Un pare-feu ça se « configure », ça ne se « désactive » pas !

Voyons ensemble les différentes méthodes possibles pour faire cela proprement.

 

1. Configuration manuelle du pare-feu local

La première méthode que nous allons voir est tout simplement la méthode dite « à la mano », configuration manuelle. Elle va permettre de bien comprendre step by step ce que l’on va faire parce que faire sans comprendre, ça ne sert à rien… unknw

Allez sur la machine à laquelle vous tentez d’accéder à distance et ouvrez la fonctionnalité « pare-feu Windows Defender avec fonctions avancées de sécurité » (soit en le cherchant via le menu recherche, soit en appuyant simultanément sur les touches Windows et R du clavier et en exécutant « wf.msc »).

Vous arriverez sur cette console qui permet de gérer le trafic entrant et sortant de cette machine précisément, on se trouve dans le pare-feu « local » :

Ce que nous voulons faire dans le cadre de ce tuto c’est autoriser du flux à rentrer dans la machine (autoriser le ping, l’accès à des partages, etc…), il s’agit donc de « trafic entrant ».

Rendez-vous en haut à gauche dans la partie « Règles de trafic entrant ». Vous pouvez d’ailleurs constater qu’il y existe déjà de nombreuses règles qui y sont présentes.

Info + : Les règles avec une coche verte devant leur nom sont celles actives, les autres sont simplement présentes mais n’agissent pas.

Nous allons dans un premier temps autoriser le ping à destination de cette machine. Le ping utilise le protocole ICMP, il va donc falloir autoriser ce protocole à entrer dans la machine srv-fichiers.

Sur la droite dans le volet d’action si vous ne l’avez pas désactivé ou en effectuant un clic droit sur « Règles de trafic entrant » en haut à gauche, cliquez sur « Nouvelle règle… ».

Il faut commencer par choisir le type de règle que l’on souhaite mettre en place dans le pare-feu local (est-ce qu’on veut autoriser un programme ? un port ? autre chose de plus spécifique ?).

Dans notre cas pour le ping, nous allons sélectionner « Personnalisée » et faire suivant.

Il faut ensuite choisir à quel programme s’applique cette règle (est-ce que toutes les applis peuvent être concernées ou on contraire juste un programme ou un service spécifique ?). Pour nous, on va laisser sur « Tous les programmes » et faire suivant.

Maintenant définissons le type de protocole à laquelle cette règle va s’appliquer (ipv4 ou ipv6 ? tcp ou udp ? autre ?). Le ping je le rappelle utilise le protocole ICMP et mon réseau est en IPv4, je choisis donc « ICMPv4 ». Si vous souhaitez encore plus préciser le flux ICMP entrant, vous pouvez cliquer sur le bouton « perso », vous pourrez alors cibler plus précisément quel type d’ICMP laisser passer. Je ne modifie rien dans cette partie.

Vient le moment de la configuration dite de « l’étendue ». C’est-à-dire à quelle(s) IP locale(s) (destination) et/ou distantes (source) cette règle va s’appliquer.

J’ai besoin que tout mon parc puisse pinguer mon srv-fichiers donc je vais laisser « toute adresse IP » dans les 2 catégories mais une fois encore, adaptez selon vos besoins pour être le plus hermétique possible, je fais cela ici car mon infra est un simple labo virtuel avec un réseau unique.

Info + : La partie supérieure concerne la destination, c’est-à-dire en gros l’IP précise de la machine que l’on veut joindre dans le cas où il y en a plusieurs. La partie inférieure concerne la source, c’est-à-dire les IP des machines distantes qui veulent parler à notre machine locale. En cochant « Ces adresse IP » et en cliquant sur les boutons « Ajouter », vous pourrez définir des adresses IP hôtes, des plages d’adresses IP et même des réseaux complets comme votre réseau local par exemple.

Ensuite on déclare si on autorise le flux du protocole ICMP ou si au contraire on le bloque. On veut le faire passer donc on laisse bien cocher « Autoriser la connexion ».

Pour terminer, il faut définir sur quel profil s’applique cette règle selon la connexion réseau de la machine (est-ce que vous êtes sur le réseau du domaine de l’entreprise, dans un réseau privé tel que votre réseau à la maison, ou dans le réseau public du macdo ou de la SNCF ?). Dans mon cas, je vais cocher « Domaine » et « Privé » pour éviter d’ouvrir l’accès à la machine si je suis dans un réseau public.

On ajoute un petit nom simple pour reconnaître facilement cette règle parmi les autres (et une petite description si besoin) et on clique sur « Terminer ».

Ma règle entrante est maintenant active.

Retentons un ping depuis une autre machine dans le même réseau, le ping devrait aboutir.

Créons maintenant une règle pour autoriser l’accès à distance à des partages (même si, comme dit dans l’introduction que vous n’avez certainement pas lu, Windows autorisera de lui-même l’accès lorsqu’on ferra un 1er partage, c’est ici juste pour l’exemple d’ouverture d’un protocole associé à un port acute)

Les accès aux partages distants utilisent le protocole SMB sur le port TCP 445, il va donc falloir autoriser ce protocole à entrer dans la machine srv-fichiers.

Comme vu précédemment, créez une nouvelle règle entrante.

Cette fois ci nous allons sélectionner « Port » et faire suivant.

Il faut ensuite définir si le port est en TCP ou UDP et nommer son nombre correspondant. Pour notre cas, on sélectionne « TCP » et on saisit « 445 » qui est le port du protocole SMB qui nous intéresse.

On déclare que l’on autorise le flux du protocole SMB port TCP 445 en cochant bien « Autoriser la connexion ».

Et on coche le ou les profils qui nous intéresse. Une nouvelle fois, je coche « Domaine » et « Privé ».

On nomme la règle et éventuellement on ajoute une description avant de cliquer sur Terminer.

Ma nouvelle règle entrante est maintenant active.

Retentons l’accès à un partage depuis une autre machine dans le même réseau, l’accès devrait aboutir.

Si vous souhaitez apporter des précisions à cette règle de type source/destination autorisée, il vous suffit dans la liste des règles entrantes d’aller dans ses propriétés (clic droit sur le nom de la règle et clic sur propriétés ou alors double clic dessus directement.) puis d’aller dans l’onglet « Etendue ».

Vous aurez peut-être remarqué qu’aussitôt une règle créée, aussitôt elle est appliquée donc faites attention à vos manipulations pour éviter de tout ouvrir ou au contraire tout bloquer…

Voilà pour la configuration manuelle d’un pare-local sous Windows ! good

 

2. Configuration du pare-feu local via Powershell

Autre méthode qui va faire exactement la même chose mais en beaucoup plus vite : l’utilisation de powershell.

Comme tout et n’importe quoi sous Windows, on peut le gérer via une commande powershell et le firewall ne fait pas exception à la règle.

Pour activer le ping exactement de la même façon que décrite dans la partie précédente, ouvrez powershell sur la machine que vous voulez atteindre à distance (chez moi je suis sur srv-fichiers toujours) et saisissez la commande suivante (sur une seule ligne) :

New-NetFirewallRule -DisplayName "Allow ICMP" -Profile Domain,Private -Enabled True -Protocol ICMPv4 -Action Allow

Et voilà c’est fait, la règle est mise en place dans le pare-feu local et active, vous pouvez tenter un ping pour le vérifier.

Pour activer l’accès aux partages distants exactement de la même façon que décrite dans la partie précédente, la commande est la suivante (sur une seule ligne) :

New-NetFirewallRule -DisplayName "Allow SMB 445" -Profile Domain,Private -Enabled True -Protocol TCP -LocalPort 445 -Action Allow

Une fois cette commande envoyée dans Powershell, la règle est aussitôt créée. Vous pouvez tenter d’accéder à distance à un partage stocké sur votre machine pour le vérifier.

Info + : Pour définir une IP de destination et une source, ajoutez à la suite de la commande les 2 paramètres suivants : -LocalAddress 192.168.3.12 -RemoteAddress 192.168.3.0/24
LocalAddress est l’IP de la machine à joindre dans le cas où elle en a plusieurs et RemoteAddress est l’IP de la ou des machines autorisées à la joindre à distance. Dans mon exemple, tout le réseau 192.168.3.0/24 est autorisé à envoyer un flux spécifique à ma machine srv-fichiers qui a l’IP 192.168.3.12.

C’est tout pour powershell, pas plus compliqué que cela ! smile

 

3. Configuration du pare-feu local via stratégie de groupe (GPO)

Et enfin voyons maintenant une méthode plus orientée entreprise : l’utilisation de stratégie de groupe.

Cela nécessite que vous soyez dans un domaine évidemment, mais aussi que votre arborescence AD soit propre, c’est-à-dire avec des unités d’organisation structurées et des objets bien rangés à leur place, notamment les objets ordinateurs car la GPO que nous allons mettre en place concerne uniquement des objets ordinateurs.

Voici ma structure AD actuelle :

J’ai une unité d’organisation dédiée pour les serveurs, avec des unités enfants selon le type de serveurs. Dans mon exemple qui va suivre, je vais appliquer la GPO sur l’unité d’organisation nommée « Serveurs-fichiers » afin qu’elle n’impacte QUE les objets ordinateurs qui sont à l’intérieur.

Info ++ : Vous pouvez choisir de placer la GPO où vous le souhaitez, selon ce que vous voulez impacter (tous les serveurs, tous les postes clients, 1 ou 2 serveurs seulement…). Attention cependant de ne pas ouvrir des accès inutilement, ce qui peut constituer une faille de sécurité.

Rendez-vous sur votre serveur Active Directory, dans la console de gestion des stratégies de groupes.

Placez vous dans « Objets de stratégie de groupe » et faites un clic droit pour créer une nouvelle GPO.

Donnez lui un nom selon votre convenance et cliquez sur OK.

Une fois dans la liste, faites un clic droit sur son nom puis cliquez sur « Modifier ».

Dans l’éditeur de la stratégie de groupe, allez dans « Configuration ordinateur / Stratégies / Paramètres Windows / Paramètres de sécurité / Pare-feu Windows avec fonctions avancées de sécurité / Pare-feu Windows avec fonctions avancées de sécurité / Règles de trafic entrant ».

Dans « Règles de trafic entrant », faites un clic droit pour créer une « Nouvelle règle… ».

Vous allez retrouver exactement la même interface que celle décrite dans la partie 1 de cet article lorsque vous créez manuellement la règle dans le firewall local.

Je vous renvoie donc ICI pour refaire les mêmes manipulations (à adapter selon vos besoins bien sur).

Une fois terminée, votre nouvelle règle apparait dans la console. Vous pouvez fermer la fenêtre de l’éditeur de la GPO.

Si on regarde maintenant les paramètres définis dans cette GPO (onglet « Paramètres » de la GPO pour avoir la vue globale), vous aurez quelque chose qui ressemble approximativement à ceci pour l’ajout d’une règle entrante concernant le protocole SMB :

Il ne reste qu’à lier cette GPO à l’unité d’organisation qui contient le ou les objets ordinateurs sur lesquelles elle doit s’appliquer. Dans mon cas, je veux qu’elle s’applique uniquement à srv-fichiers qui se trouve dans « serveurs-fichiers ».

Je fais donc un clic droit sur cette unité d’organisation puis « Lier un objet de stratégie de groupe existant… »

Puis je sélectionne dans la liste la GPO que je veux appliquer, celle que je viens de créer.

La GPO est désormais en place.

Sur ma machine srv-fichiers, je vais lancer la commande « gpupdate /force » en tant qu’administrateur pour mettre à jour les stratégies de groupe et que la machine prenne bien en compte la GPO que je viens de créer.

On peut également vérifier via la commande « gpresult /r /scope computer » que la GPO apparait bien dans la liste des objets de stratégie de groupe appliqués (commande à exécuter en tant qu’administrateur sinon l’accès sera refusé).

Info + : Si la GPO n’est pas appliquée sur la machine, redémarrez la et vérifier de nouveau.

Vous pourrez ainsi tester que la GPO est fonctionnelle et que votre règle est bien configurée.

 

Voilà qui met fin à cet article que vous pouvez utiliser pour le décliner selon vos besoins (accès en SSH, RPC/DCOM, programme…). N’oubliez pas que nous avons ici autorisé des flux entrants mais vous pouvez bien entendu en refuser et/ou agir sur les flux sortants.

Info + : Vous pouvez vous tourner vers ce lien officiel de Microsoft pour avoir plus de manips comme par exemple créer une règle de trafic sortant ou une règle pour un service et/ou un programme (ne pas se fier au titre de l’article qui peut être trompeur, ce n’est pas valable que pour les GPO) : Configurer des règles avec une stratégie de groupe

Sachez également que certaines règles existent déjà dans le pare-feu et peuvent justement faire ce dont vous avez besoin (ou presque) donc jeter un coup d’œil quand même (vous trouverez peut-être même une règle prédéfinie qui fait approximativement ce qu’on a fait dans ce tuto laugh).

A bientôt kiss


[Tuto] Gérer le pare-feu local de Windows pour autoriser du flux entrant

Articles pouvant vous intéresser