Gestion des règles de pare-feu avec PowerShell sous Windows
Windows contient un pare-feu avancé robuste mais facile à utiliser, et en utilisant PowerShell 7, nous pouvons facilement configurer le pare-feu à partir de la ligne de commande. Cet article couvre les commandes courantes utilisées dans le pare-feu Windows et où elles peuvent être utilisées.
Le module NetSecurity est bien documenté. N'oubliez pas que cet article s'applique uniquement au système d'exploitation Windows. Pour d'autres systèmes d'exploitation, il existe d'autres outils de ligne de commande qui peuvent être utilisés pour effectuer le même type de fonctions, comme UFW
ou IPTables
sous Linux.
Sommaire
Chargement du NetSecurity
Module
le NetSecurity
, intégré et proposé par Microsoft, contient toutes les fonctionnalités nécessaires pour ajouter, supprimer et modifier des règles de pare-feu. Pour charger le module, importez simplement le module comme indiqué ci-dessous.
Import-Module -Name 'NetSecurity'
Liste des règles de pare-feu existantes
L'applet de commande, Get-NetFirewallRule
affichera toutes les règles de pare-feu existantes. Il y en a beaucoup, par défaut, donc pour démontrer, nous sortons les 10 premiers.
Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action -First 10
De nombreuses propriétés sont renvoyées par Get-NetFirewallRule
. Bien que nous ne répertorions que les propriétés ci-dessus, l'exécution Get-NetFirewallRule | Select-Object * -First 1
, liste tous les éléments disponibles.
Créer une nouvelle règle de pare-feu
Il existe de nombreuses façons de créer une nouvelle règle de pare-feu, mais la commande qui le fait est (Net-NewFirewallRule)(
. Les propriétés de base à remplir sont:
DisplayName
– Le nom convivial de la règle de pare-feuDirection
– S'il faut bloquer le trafic quittant l'ordinateurOutbound
ou venir dans l'ordinateurInbound
Action
– Quelle action entreprendre si la règle est respectée,Allow
ouBlock
$Params = @{ "DisplayName" = 'Block WINS' "Direction" = 'Inbound' "Action" = 'Block' "RemoteAddress" = 'WINS' }
New-NetFirewallRule @Params
Si la Name
n'est pas utilisé, alors un GUID aléatoire est utilisé. le DisplayName
peut être lisible par l'homme, mais la Name
lui-même attribué un GUID aléatoire.
Modifier une règle de pare-feu existante
Que faire si nous voulons modifier une règle existante sans supprimer et recréer entièrement la règle. Pour ce faire, nous devons exécuter le Set-NetFirewallRule
, et nous permettra de modifier la règle de pare-feu si nécessaire.
$Params = @{
"DisplayName" = 'Block WINS'
"Action" = 'Allow'
}
Set-NetFirewallRule @Params
Autres capacités utiles que le Set-NetFirewallRule
a est la capacité de fonctionner sur plusieurs règles à la fois. Cela peut être fait en localisant les règles par l'un des trois paramètres.
Name
Il s'agit de la valeur par défaut et si les noms sont définis via le pipeline ou un tableau de chaînes, chacun agira.DisplayName
Semblable àName
, plusieurs objets pipelinés ou un tableau de chaînes modifieront ces règles en conséquence.DisplayGroup
ouGroup
Si les règles sont regroupées, toutes ces règles regroupées peuvent être appliquées en même temps.
Supprimer une règle de pare-feu existante
Enfin, nous souhaitons supprimer la règle existante car elle pourrait ne plus être nécessaire. Pour ce faire, exécutez la commande Remove-NetFirewallRule
. Dans ce cas, il est souvent judicieux d'utiliser le WhatIf
pour vérifier que la règle est la bonne à supprimer.
Remove-NetFirewallRule -DisplayName "Block WINS"
Il est important de noter que le Remove-NetFirewallRule
peut supprimer plusieurs règles à la fois. Un exemple de ce type de fonctionnalité est ci-dessous. La règle ci-dessous supprimera toutes les règles désactivées contenues dans la politique firewall_gpo
dans le ad.local.test
domaine.
Remove-NetFirewallRule -Enabled 'False' -PolicyStore 'ad.local.test\firewall_gpo'
Une commande utile, mais potentiellement dangereuse, est en cours d'exécution Remove-NetFirewallFule
par lui-même, ce qui supprime toutes les règles de pare-feu local statique qui ont été créées. Si vous avez un objet de stratégie de groupe de domaine qui définit des règles de pare-feu, cela supprimera tout ce qui peut entrer en conflit avec ces règles définies par l'objet de stratégie de groupe.
Fonctionnalité supplémentaire
Il existe de nombreuses autres commandes disponibles dans le NetSecurity
module. Bien que nous ne les couvrions pas tous ici, quelques commandes notables sont présentées ci-dessous pour démontrer l'étendue du module.
Copy-NetFirewallRule
Cette commande copiera une règle de pare-feu existante et tous les filtres associés dans le même magasin de stratégies ou dans un autre.Disable-NetFirewallRule
Cela désactivera une règle de pare-feu précédemment activée. La règle existera toujours, mais ne modifiera pas activement les données réseau. Si vous exécutez cette commande sans aucun paramètre, elle désactivera toutes les règles actives sur l'ordinateur cible. Il est conseillé de toujours exécuter cette commande avec leWhatIf
si elle ne cible pas une règle ou un ensemble de règles spécifique.Enable-NetFirewallRule
Comme leDisable-NetFirewallRule
, cette commande activera une règle ou un ensemble de règles précédemment désactivées. Si cette commande est exécutée sans aucun paramètre, elle activera toutes les règles précédemment désactivées. Il est conseillé de toujours exécuter cette commande avec leWhatIf
si elle ne cible pas une règle ou un ensemble de règles spécifique.Get-NetFirewallProfile
Cette commande affiche les options actuellement configurées pour un profil spécifié, telles que leDomain
,Private
, ouPublic
profils.Get-NetFirewallSetting
Les paramètres globaux du pare-feu peuvent être récupérés à l'aide duGet-NetFirewallSetting
commander. Ces paramètres incluent des options telles que les options de certificat, la mise en file d'attente des paquets ou les listes d'autorisation.Rename-NetFirewallRule
Pour renommer une règle de pare-feu existante, utilisez leRename-NetFirewallRule
commander. Ceci est utile si une règle a été créée sans nom spécifié, recevant ainsi un GUID aléatoire comme son nom, et il est préférable qu'un nom lisible par l'homme soit attribué.Set-NetFirewallProfile
Pour définir des paramètres spécifiques pour des profils individuels, utilisez leSet-NetFirewallProfile
commander. Cela permet à chaque profil d'avoir des paramètres distincts.Set-NetFirewallSetting
Cette commande configure les comportements de pare-feu globaux qui s'appliquent quel que soit le profil réseau actuellement utilisé.Show-NetFirewallRule
Cette commande d'assistance affichera les règles de pare-feu et leurs objets associés dans une liste formatée.
Il y a une fonctionnalité IPSec étendue contenue dans le module. Les commandes répertoriées ci-dessus sont celles qui fonctionnent sur les paramètres standard du pare-feu Windows.
Conclusion
Il existe de nombreuses commandes disponibles pour gérer le pare-feu Windows. Cet article ne concerne que quelques-unes d'entre elles, notamment les commandes les plus importantes pour répertorier, créer, modifier et supprimer rapidement des règles de pare-feu. Même les configurations de pare-feu complexes peuvent être effectuées strictement via la ligne de commande en utilisant NetSecurity
Module PowerShell!