Configurer le pare-feu de Windows Defender en Powershell

malekalmorte

Création :

3 septembre 2020

Modification :

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

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.