Powershell fournit tout ce qu’il faut pour configurer et paramétrer le pare-feu de Windows 10, 11.
En effet, vous pouvez activer ou désactiver le pare-feu Windows Defender en Powershell.
Mais aussi ajouter, supprimer ou modifier les règles de pare-feu. Par exemple bloquer, autoriser une application ou adresse IP en Powershell.
Cet article vous donne toutes les commandes Powershell pour gérer le firewall de Windows 10, 11.
Table des matières
Configurer le pare-feu de Windows Defender en Powershell
PowerShell est le nouveau shell de Windows qui remplace l’invite de commandes.
Pour plus d’informations sur ce dernier, lire cet article :
Il existe énormément de commande PowerShell liées au pare-feu de Windows.
Voici comment lister ces dernières :
Get-Command -Module NetSecurity
Gérer les profils réseaux sur le Firewall
Windows Defender Firewall fonctionne avec des profils réseaux.
Cela permet d’établir des règles de pare-feux différents selon le type de profil et de réseaux.
- Domaine (Domain) – Les domaines réseaux avec Active directory (pour entreprise)
- Privé (Private) – Pour les réseaux LAN à la maison ou d’entreprise
- Public (Public) – les réseaux et connexion internet publiques
Pour plus d’informations sur ces derniers, lire :
Deux commandes Powershell sont utiles :
- Get-NetFirewallProfile : Affiche les informations du pare-feu sur un profil réseau
- Set-NetFirewallProfile : Modifier les profils réseau sur le pare-feu
Ainsi, pour afficher la configuration d’un profil réseau en Powershell :
Get-NetFirewallProfile -Name Public
On peut alors modifier la configuration de ce dernier.
Par exemple :
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
Ou encore pour configurer le journal de blocage :
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%\system32\LogFiles\Firewall\pfirewall.log’
Puis il est possible d’activer ou désactiver un profil réseau sur le pare-feu :
Set-NetFirewallProfile -Profile Public -Enabled True
Enfin on peut aussi désactiver un profil sur une interface réseau spécifique de cette manière :
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet"
Ajouter, supprimer, modifier les règles de pare-feu
Les cmdlets pour gérer les règles de pare-feu en Powershell :
- New-NetFirewallRule : créer une nouvelle règle de pare-feu
- Copy-NetFirewallRule : copier une règle de pare-feu
- Disable-NetFirewallRule : désactiver une règle de pare-feu
- Enable-NetFirewallRule : activer une règle de pare-feu
- Get-NetFirewallRule : obtenir les propriétés les règles de pare-feu
- Remove-NetFirewallRule : supprimer une règle de pare-feu
- Rename-NetFirewallRule : renommer une règle de pare-feu
- Set-NetFirewallRule : Modifier une règle de pare-feu
- Show-NetFirewallRule : afficher la règle de pare-feu
Pour plus de détails et aide pour chaque commande PowerShell, utilisez Get-Help pour afficher l’aide :
get-help New-NetFirewallRule
Chaque cmdlnet possède des paramètres, par exemple -DisplayName -Program, etc.
Pour obtenir la liste des paramètres, vous pouvez utiliser la commande Get-help de cette manière :
get-help Show-NetFirewallRule -detailed
Enfin pour avoir des exemples d’utilisation de commandes :
get-help Get-NetFirewallrule -examples
Créer une règle de pare-feu
On utilise la commande New-NetFirewallRule puis on peut spécifier le nom d’un programme, d’un port et adresse local ou distant.
Pour bloquer une application comme Firefox en sortie :
New-NetFirewallRule -Program "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -Action Block -Profile Domain, Private -DisplayName "Block Firefox browser" -Description "Block Firefox browser" -Direction Outbound
Ou encore pour autoriser les connexions entrantes vers le port 3389 (RDP) depuis 192.168.1.100 :
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.1.100 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Éditer et modifier une règle de pare-feu
Pour changer une règle de pare-feu en Powershell, on utilise Set-NetFirewallRule.
Par exemple pour changer l’adresse IP distante de la règle AllowWeb80
Set-NetFirewallRule -DisplayName "AllowWeb80" -RemoteAddress "192.168.0.2"
Ou encore pour autoriser ou bloquer, on utilise le paramètre -Action :
Set-NetFirewallRule -DisplayName "Block HTTP" -Action Allow
Set-NetFirewallRule -DisplayName "Block HTTP" -Action Disallow
En plus complexe, on utilise Get-NetFirewallrule pour spécifier la règle, par exemple par son nom.
Ensuite on utilise Set-NetFirewallAddressFilter pour modifier un attribut.
Par exemple, ci-dessous, on modifie l’adresse IP distante de la règle HTTP-Inbound.
Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
Afficher les propriétés d’une règle de pare-feu
On utilise le cmdlet Get-NetFirewallrule afin de pouvoir afficher les propriétés d’une règle.
Get-NetFirewallrule -DisplayName 'Allow inbound ICMPv4'|Get-NetFirewallAddressFilter
Désactiver, Activer une règle de pare-feu
Ensuite pour désactiver une règle du pare-feu de Windows 10 avec Powershell, on utilise la commande Disable-NetFirewallRule.
Par exemple pour désactiver la règle WEB-Inbound :
Disable-NetFirewallRule –DisplayName "WEB-Inbound"
Enfin pour la réactiver par exemple par le nom :
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Lister les règles de pare-feu
Pour afficher les règles de pare-feu, on utilise le cmdlet Powershell Get-NetFirewallRule.
Sans aucun paramètre, il retourne la liste complète des règles de pare-feu.
Mais on peut filtrer sur certains champs.
Par exemple pour filtrer sur le nom de groupe :
Get-NetFirewallRule -DisplayGroup "*sans fil*"
Ou encore sur la direction pour n’avoir que les règles sortantes :
Get-NetFirewallRule -Direction Outbound
Et ainsi de suite pour chaque paramètre Name, DisplayName, Group, DisplayGroup).
Mais on peut aller plus loin.
Par exemple pour pour afficher les règles de pare-feu entrantes en colonne :
Get-NetFirewallRule | where {($_.enabled -eq $True) -and ($_.Direction -eq "Inbound")} |ft
Enfin pour lister toutes les règles du pare-feu en colonne en Powershell :
Get-NetFirewallRule -Action Allow -Enabled True -Direction Inbound |
Format-Table -Property Name,
@{Name='Protocol';Expression={($PSItem | Get-NetFirewallPortFilter).Protocol}},
@{Name='LocalPort';Expression={($PSItem | Get-NetFirewallPortFilter).LocalPort}},
@{Name='RemotePort';Expression={($PSItem | Get-NetFirewallPortFilter).RemotePort}},
@{Name='RemoteAddress';Expression={($PSItem | Get-NetFirewallAddressFilter).RemoteAddress}},
Enabled,Profile,Direction,Action
Liens
- Pare-feu Windows Defender en invite de commandes avec netsh advfirewall
- Autoriser/Bloquer une application pare-feu Windows Defender
- Comment gérer et paramétrer les applications Windows 10
- Windows Firewall Control : gérer pare-feu Windows Defender
- Dossier Windows Defender Firewall : le pare-feu de Windows 10
- Comment gérer Windows Defender avec Powershell
- Comment utiliser Windows Defender en ligne de commande (MpCmdRun)