Menu Fermer

Configurer le pare-feu de Windows Defender en Powershell

Cette entrée fait partie d'une série de 10 sur 15 dans la série Dossier Firewall Windows Defender : le pare-feu de Windows 10

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.

Configurer le pare-feu de Windows Defender en Powershell

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
Afficher la configuration d'un profil réseau en Powershell sur le pare-feu Windows Defender

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
Afficher l'aide sur les commandes Powershell

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
Lorsque vous souhaitez viser une règle pour la modifier par exemple. Le plus simple est d’utiliser le paramètre -Name pour la viser par son nom.

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*"
Lister les règles de pare-feu en Powershell

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
Lister les règles de pare-feu en Powershell

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
Lister les règles de pare-feu en Powershell