Configuration du Pare-feu Windows

Aperçu

Cet article explique comment configurer Windows Defender Firewall (anciennement Windows Firewall) sur Windows Server. Il couvre la conception des profils (Domaine, Privé, Public), l’optimisation des stratégies d’entrée/sortie, la collecte et l’analyse des journaux, ainsi que l’administration centralisée via GPO et scripts pour une exploitation pratique.

Conventions de variables

Variable Exemple Description
<<SERVER_NAME>> SRV-CORE01 Nom de l’hôte cible
<<LOG_PATH>> C:\FirewallLogs\pfirewall.log Chemin du journal du pare-feu
<<OU_NAME>> Servers Nom de l’OU

Étape 1 : Comprendre les profils et le plan d’application

Windows Defender Firewall comporte trois profils :

Profil Usage Environnement typique
Domaine Réseaux rejoints à Active Directory LAN d’entreprise, VPN
Privé Réseau de confiance isolé Tests, réseaux fermés
Public Réseau non fiable Wi-Fi public, lab/VM

Chaque profil est configurable indépendamment et bascule automatiquement selon l’identifiant réseau.

Commande de vérification :

# État et stratégies par défaut de chaque profil
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction

Étape 2 : Définir les stratégies de base (comportement par défaut)

Par défaut, Windows Defender Firewall bloque l’entrée et autorise la sortie.
Conservez ce comportement ou introduisez un contrôle explicite de la sortie selon le besoin.

# Définir explicitement la stratégie par défaut
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -DefaultInboundAction Block `
  -DefaultOutboundAction Allow `
  -NotifyOnListen True

Note : En environnements sensibles, utilisez -DefaultOutboundAction Block et autorisez uniquement les flux sortants nécessaires (p. ex. DNS, NTP, WSUS) — approche « liste blanche ».


Étape 3 : Opérer et gérer les règles du pare-feu

Lister et filtrer

# Toutes les règles
Get-NetFirewallRule

# Rechercher les règles contenant "RDP"
Get-NetFirewallRule | Where-Object DisplayName -Like "*RDP*"

# Uniquement les règles actives
Get-NetFirewallRule | Where-Object Enabled -eq "True"

Créer de nouvelles règles

# Autoriser l’entrée RDP (TCP/3389) pour le profil Domaine
New-NetFirewallRule -DisplayName "Allow RDP (Domain)" `
  -Direction Inbound -Protocol TCP -LocalPort 3389 `
  -Action Allow -Profile Domain

# Autoriser la sortie NTP (UDP/123)
New-NetFirewallRule -DisplayName "Allow NTP Outbound" `
  -Direction Outbound -Protocol UDP -LocalPort 123 `
  -Action Allow -Profile Domain,Private,Public

Paramètres : exemples et formats

Élément Paramètre Exemple Valeurs/format acceptés
Direction -Direction Inbound / Outbound Inbound, Outbound
Action -Action Allow / Block Allow, Block
Protocole -Protocol TCP / UDP / ICMPv4 / ICMPv6 / Any Comme indiqué ; ICMP détaillable via -IcmpType
Port local -LocalPort 80 / 1024-2048 / 80,443,8080 Port unique, plage, liste CSV
Port distant -RemotePort 53 / 1000-2000 / 53,67,68 Port unique, plage, liste CSV
Adresse distante -RemoteAddress 192.168.1.1 / 192.168.0.0/24 / Any IP, CIDR, plage, liste, Any
Adresse locale -LocalAddress 10.0.0.1 / 10.0.0.0/16 / Any IP, CIDR, plage, liste, mots-clés spéciaux, Any
Programme -Program C:\Program Files\App\App.exe Chemin complet de l’exécutable
Service -Service W32Time Nom du service Windows
Profil -Profile Domain,Private Combinaison de Domain, Private, Public
Type d’interface -InterfaceType Ethernet / Wireless / RemoteAccess Types supportés

Ex. : autoriser HTTP depuis une IP de confiance

New-NetFirewallRule -DisplayName "Allow HTTP from Trusted IP" `
  -Direction Inbound -Protocol TCP -LocalPort 80 `
  -RemoteAddress 192.168.1.100 `
  -Action Allow -Profile Domain,Private

Ex. : règle sortante basée sur un programme

New-NetFirewallRule -DisplayName "Allow Outbound for App.exe" `
  -Direction Outbound -Program "C:\Program Files\App\App.exe" `
  -Action Allow -Profile Domain,Private,Public

Ex. : règle entrante basée sur un service

New-NetFirewallRule -DisplayName "Allow Service XYZ Inbound" `
  -Direction Inbound -Service "W32Time" `
  -Action Allow -Profile Domain,Private

Ex. : bloquer la sortie via interface Wi-Fi

New-NetFirewallRule -DisplayName "Block Outbound on Wireless" `
  -Direction Outbound -InterfaceType Wireless `
  -Action Block -Profile Public

Modifier, (dés)activer et supprimer des règles

# Désactiver
Disable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Activer
Enable-NetFirewallRule -DisplayName "Allow RDP (Domain)"

# Modifier (ex. : limiter à Domain et Private)
Set-NetFirewallRule -DisplayName "Allow RDP (Domain)" -Profile Domain,Private

# Supprimer
Remove-NetFirewallRule -DisplayName "Allow RDP (Domain)"

Exporter/Importer l’ensemble de règles

# Export de la stratégie du pare-feu
netsh advfirewall export "C:\Backup\FirewallPolicy.wfw"

# Import de la stratégie du pare-feu
netsh advfirewall import "C:\Backup\FirewallPolicy.wfw"

Étape 4 : Journalisation et audit

Consignez les autorisations/refus et surveillez les anomalies.

# Journaliser Allow et Block, taille max. 32 Mo
Set-NetFirewallProfile -Profile Domain,Private,Public `
  -LogAllowed True -LogBlocked True `
  -LogFileName "<<LOG_PATH>>" -LogMaxSizeKilobytes 32767

Lecture en temps réel :

Get-Content "<<LOG_PATH>>" -Tail 20 -Wait

Attention : LogAllowed=True accroît le volume de journaux. En production, limitez-le aux profils critiques (p. ex. Public) et mettez en place rotation/archivage.
La limite de -LogMaxSizeKilobytes est 32767 KB ; au-delà, erreur.


Étape 5 : Gestion centralisée via GPO

Les paramètres du pare-feu peuvent être modifiés et automatisés par GPO via les cmdlets du module GroupPolicy.
Cmdlets clés : Set-GPRegistryValue, Get-GPO, New-GPO, New-GPLink, Set-GPInheritance.

Créer un GPO et appliquer la journalisation du profil Domaine

  1. Créer ou récupérer le GPO

    $gpo = New-GPO -Name "Firewall-Policy-Domain"
    

    Pour éditer un GPO existant : Get-GPO -Name "<NOM_DU_GPO>".

  2. Appliquer les valeurs via les clés Registre du GPO

    # Activer la journalisation pour le profil Domaine
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" `
      -ValueName "EnableLogging" -Type DWord -Value 1
    
    # Chemin et taille du journal
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFilePath" -Type String -Value "%systemroot%\system32\logfiles\firewall\pfirewall.log"
    
    Set-GPRegistryValue -Name $gpo.DisplayName `
      -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\Logging" `
      -ValueName "LogFileSize" -Type DWord -Value 32767
    

Ces paramètres prennent effet lorsque le GPO est lié à une OU via New-GPLink.

Lier à l’OU (New-GPLink)

Fournissez le DN de l’OU (ou du domaine) à -Target.

Import-Module ActiveDirectory

$gpo = Get-GPO -Name "Firewall-Policy-Domain"

# Rechercher l’OU par nom et récupérer son DN
$ou = Get-ADOrganizationalUnit -LDAPFilter '(name=<<OU_NAME>>)' `
      -SearchBase (Get-ADDomain).DistinguishedName -SearchScope Subtree |
      Select-Object -First 1
$ouDn = $ou.DistinguishedName

# Lier le GPO à l’OU (activé ; Enforced optionnel)
New-GPLink -Name $gpo.DisplayName -Target $ouDn -LinkEnabled Yes -Enforced No

Prérequis : modules ActiveDirectory et GroupPolicy (RSAT) sur le poste d’administration.


Étape 6 : Vérifications périodiques et dépannage

# Règles effectivement actives
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} |
  Select-Object DisplayName, Direction, Action, Profile

# Test de connectivité de port
Test-NetConnection -ComputerName <<SERVER_NAME>> -Port 3389

Conclusion

Windows Defender Firewall fournit une défense réseau robuste sur Windows Server. En combinant contrôle explicite du trafic entrant/sortant, analyse des journaux et gestion centralisée/automatisée via GPO et PowerShell, vous obtenez visibilité et sécurité conformes au hardening et adaptées à l’ère du zero trust.