- Panoramica
- Convenzioni sulle variabili
- Step 1: Comprendere i profili e il piano di applicazione
- Step 2: Impostare le policy di base (comportamento predefinito)
- Step 3: Operare e gestire le regole del firewall
- Step 4: Logging e audit
- Step 5: Gestione centralizzata tramite GPO
- Step 6: Verifiche periodiche e troubleshooting
- Conclusione
Panoramica
Questo articolo spiega come configurare Windows Defender Firewall (ex Windows Firewall) su Windows Server. Copre la progettazione dei profili (Domain, Private, Public), l’ottimizzazione delle policy di ingresso/uscita, la raccolta e l’analisi dei log, nonché la gestione centralizzata tramite GPO e script per un’operatività pratica.
Convenzioni sulle variabili
| Variabile | Esempio | Descrizione |
|---|---|---|
<<SERVER_NAME>> |
SRV-CORE01 |
Nome host del server di destinazione |
<<LOG_PATH>> |
C:\FirewallLogs\pfirewall.log |
Percorso del file di log del firewall |
<<OU_NAME>> |
Servers |
Nome dell’OU |
Step 1: Comprendere i profili e il piano di applicazione
Windows Defender Firewall è composto da tre profili:
| Profilo | Uso | Ambiente tipico |
|---|---|---|
| Domain | Reti membri di Active Directory | LAN aziendale, VPN |
| Private | Rete isolata e fidata | Ambienti di test, reti chiuse |
| Public | Rete non fidata | Wi-Fi pubblico, lab/VM |
Ogni profilo è configurabile in modo indipendente e commuta automaticamente in base all’identificatore di rete.
Comando di verifica:
# Stato e policy predefinite di ciascun profilo
Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Step 2: Impostare le policy di base (comportamento predefinito)
Per impostazione predefinita, Windows Defender Firewall blocca l’ingresso e consente l’uscita.
Mantenere questo comportamento o introdurre, se necessario, un controllo esplicito dell’uscita.
# Impostare esplicitamente la policy predefinita
Set-NetFirewallProfile -Profile Domain,Private,Public `
-DefaultInboundAction Block `
-DefaultOutboundAction Allow `
-NotifyOnListen True
Nota: In ambienti ad alta sensibilità, usare
-DefaultOutboundAction Blocke consentire solo il traffico in uscita necessario (es. DNS, NTP, WSUS): approccio “lista bianca”.
Step 3: Operare e gestire le regole del firewall
Elencare e filtrare
# Tutte le regole
Get-NetFirewallRule
# Regole che contengono "RDP" nel nome
Get-NetFirewallRule | Where-Object DisplayName -Like "*RDP*"
# Solo regole abilitate
Get-NetFirewallRule | Where-Object Enabled -eq "True"
Creare nuove regole
# Consenti ingresso RDP (TCP/3389) per il profilo Domain
New-NetFirewallRule -DisplayName "Allow RDP (Domain)" `
-Direction Inbound -Protocol TCP -LocalPort 3389 `
-Action Allow -Profile Domain
# Consenti uscita NTP (UDP/123)
New-NetFirewallRule -DisplayName "Allow NTP Outbound" `
-Direction Outbound -Protocol UDP -LocalPort 123 `
-Action Allow -Profile Domain,Private,Public
Parametri: esempi e formati
| Voce | Parametro | Esempio | Valori/Formato accettati |
|---|---|---|---|
| Direzione | -Direction |
Inbound / Outbound |
Inbound, Outbound |
| Azione | -Action |
Allow / Block |
Allow, Block |
| Protocollo | -Protocol |
TCP / UDP / ICMPv4 / ICMPv6 / Any |
Come indicato; ICMP dettagliabile con -IcmpType |
| Porta locale | -LocalPort |
80 / 1024-2048 / 80,443,8080 |
Porta singola, intervallo, lista CSV |
| Porta remota | -RemotePort |
53 / 1000-2000 / 53,67,68 |
Porta singola, intervallo, lista CSV |
| Indirizzo remoto | -RemoteAddress |
192.168.1.1 / 192.168.0.0/24 / Any |
IP singolo, CIDR, intervallo, lista, Any |
| Indirizzo locale | -LocalAddress |
10.0.0.1 / 10.0.0.0/16 / Any |
IP singolo, CIDR, intervallo, lista, parole chiave, Any |
| Programma | -Program |
C:\Program Files\App\App.exe |
Percorso completo dell’eseguibile |
| Servizio | -Service |
W32Time |
Nome del servizio Windows |
| Profilo | -Profile |
Domain,Private |
Combinazione di Domain, Private, Public |
| Tipo di interfaccia | -InterfaceType |
Ethernet / Wireless / RemoteAccess |
Tipi supportati |
Esempio: consentire HTTP da IP fidato
New-NetFirewallRule -DisplayName "Allow HTTP from Trusted IP" `
-Direction Inbound -Protocol TCP -LocalPort 80 `
-RemoteAddress 192.168.1.100 `
-Action Allow -Profile Domain,Private
Esempio: regola in uscita basata su programma
New-NetFirewallRule -DisplayName "Allow Outbound for App.exe" `
-Direction Outbound -Program "C:\Program Files\App\App.exe" `
-Action Allow -Profile Domain,Private,Public
Esempio: regola in ingresso basata su servizio
New-NetFirewallRule -DisplayName "Allow Service XYZ Inbound" `
-Direction Inbound -Service "W32Time" `
-Action Allow -Profile Domain,Private
Esempio: bloccare l’uscita su interfaccia Wi-Fi
New-NetFirewallRule -DisplayName "Block Outbound on Wireless" `
-Direction Outbound -InterfaceType Wireless `
-Action Block -Profile Public
Modificare, (dis)abilitare e rimuovere regole
# Disabilitare
Disable-NetFirewallRule -DisplayName "Allow RDP (Domain)"
# Abilitare
Enable-NetFirewallRule -DisplayName "Allow RDP (Domain)"
# Modificare (es.: limitare a Domain e Private)
Set-NetFirewallRule -DisplayName "Allow RDP (Domain)" -Profile Domain,Private
# Rimuovere
Remove-NetFirewallRule -DisplayName "Allow RDP (Domain)"
Esportare/Importare l’insieme di regole
# Esportare la policy del firewall
netsh advfirewall export "C:\Backup\FirewallPolicy.wfw"
# Importare la policy del firewall
netsh advfirewall import "C:\Backup\FirewallPolicy.wfw"
Step 4: Logging e audit
Registrare consentiti/negati e monitorare eventuali anomalie.
# Loggare sia Allow che Block, dimensione massima 32 MB
Set-NetFirewallProfile -Profile Domain,Private,Public `
-LogAllowed True -LogBlocked True `
-LogFileName "<<LOG_PATH>>" -LogMaxSizeKilobytes 32767
Lettura in tempo reale:
Get-Content "<<LOG_PATH>>" -Tail 20 -Wait
Attenzione:
LogAllowed=Trueaumenta il volume dei log. In produzione, limitarlo ai profili critici (es. Public) e implementare rotazione/archiviazione.
Il limite di-LogMaxSizeKilobytesè 32767 KB; oltre questo valore si ottiene un errore.
Step 5: Gestione centralizzata tramite GPO
I settaggi del firewall possono essere modificati e automatizzati via GPO usando il modulo GroupPolicy.
Cmdlet chiave: Set-GPRegistryValue, Get-GPO, New-GPO, New-GPLink, Set-GPInheritance.
Creare un GPO e applicare il logging del profilo Domain
-
Creare o recuperare il GPO
$gpo = New-GPO -Name "Firewall-Policy-Domain"Per modificare un GPO esistente:
Get-GPO -Name "<NOME_GPO>". -
Applicare i valori tramite chiavi di Registro del GPO
# Abilitare il logging per il profilo Domain Set-GPRegistryValue -Name $gpo.DisplayName ` -Key "HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile" ` -ValueName "EnableLogging" -Type DWord -Value 1 # Percorso e dimensione del log 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
Queste impostazioni hanno effetto quando il GPO è collegato a un’OU tramite
New-GPLink.
Collegare all’OU (New-GPLink)
Passare il DN dell’OU (o del dominio) a -Target.
Import-Module ActiveDirectory
$gpo = Get-GPO -Name "Firewall-Policy-Domain"
# Trovare l’OU per nome e recuperarne il DN
$ou = Get-ADOrganizationalUnit -LDAPFilter '(name=<<OU_NAME>>)' `
-SearchBase (Get-ADDomain).DistinguishedName -SearchScope Subtree |
Select-Object -First 1
$ouDn = $ou.DistinguishedName
# Collegare il GPO all’OU (abilitato; Enforced opzionale)
New-GPLink -Name $gpo.DisplayName -Target $ouDn -LinkEnabled Yes -Enforced No
Prerequisiti: moduli ActiveDirectory e GroupPolicy (RSAT) sulla postazione di amministrazione.
Step 6: Verifiche periodiche e troubleshooting
# Regole effettivamente attive
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True"} |
Select-Object DisplayName, Direction, Action, Profile
# Test di connettività porta
Test-NetConnection -ComputerName <<SERVER_NAME>> -Port 3389
Conclusione
Windows Defender Firewall offre una solida difesa di rete su Windows Server. Combinando controllo esplicito del traffico in/uscita, analisi dei log e gestione centralizzata/automatizzata via GPO e PowerShell, si ottengono visibilità e sicurezza in linea con l’hardening e adatte all’era dello zero trust.
