Questo articolo illustra le nozioni di base sulla gestione delle impostazioni e delle regole del firewall Windows Defender integrato con sicurezza avanzata dalla riga di comando di PowerShell. Vedremo come abilitare/disabilitare il firewall per diversi profili di rete, creare o rimuovere regole firewall e importare/esportare regole Windows Firewall con PowerShell.
Contenuto:
- Come attivare o disattivare Windows Defender Firewall con PowerShell
- Crea regole di Windows Firewall utilizzando PowerShell
- Modifica di una regola esistente di Windows Firewall utilizzando PowerShell
- Come abilitare/disabilitare/rimuovere la regola di Windows Firewall con PowerShell
- PowerShell: elenca le regole attive in Windows Firewall
Le impostazioni di Windows Firewall vengono generalmente gestite utilizzando uno snap MMC grafico separatowf.msc(Pannello di controllo -> Sistema e sicurezza -> Windows Defender Firewall -> Impostazioni avanzate). È possibile eseguire la maggior parte delle operazioni di configurazione e gestione delle impostazioni di Windows Firewall dalla riga di comando di PowerShell. Puoi usare il built-inNetSecuritymodulo per eseguire questa operazione (disponibile nella versione di Windows PowerShell 5.1 o successiva).
È possibile elencare i cmdlet disponibili nel modulo NetSecurity utilizzando il comando:
Get-Command -Module NetSecurity

In precedenza, ilnetsh advfirewall firewallIl comando è stato utilizzato per gestire le regole e le impostazioni di Windows Firewall.
Come attivare o disattivare Windows Defender Firewall con PowerShell
Il firewall di Windows Defender è abilitato per impostazione predefinita.
Get-NetFirewallProfile | Format-Table Name, Enabled


Esistono tre tipi di profili di rete in Windows Firewall:
- Dominio– viene applicato ai computer che fanno parte di un dominio Active Directory;
- Privato– reti domestiche, SOHO o di gruppi di lavoro;
- Pubblico– reti pubbliche.
Per impostazione predefinita, Windows Firewall consente tutte le connessioni in uscita e blocca tutte le connessioni in ingresso (eccetto quelle consentite) per ciascun profilo di rete.


Il servizio Network Location Awareness (NLA) archivia le informazioni sui tipi di rete in un database. È possibile modificare manualmente il profilo di rete (posizione) in Windows se non viene rilevato correttamente.
Ciascun profilo di rete (posizione) può avere regole firewall diverse in uso. Per impostazione predefinita, tutte le interfacce di rete del computer sono protette da un firewall e ad esse vengono applicati tutti e tre i tipi di profili.
Per disabilitare completamente il firewall di Windows, esegui il comando seguente
Set-NetFirewallProfile -All -Enabled False
Oppure specifica un nome di profilo specifico invece diTutto:
Set-NetFirewallProfile -Profile Public -Enabled False
Per abilitare Windows Firewall per tutti e tre i profili di rete, utilizzare il comando seguente
Set-NetFirewallProfile -All -Enabled True
Visualizza il tipo di profilo applicabile alla connessione di rete:
Get-NetConnectionProfile


In questo esempio il profilo DomainAuthenticated viene applicato alla connessione di rete Ethernet0.
Se PowerShell Remoting (WinRM) è configurato sui computer remoti, è possibile gestire le regole di Windows Firewall su tali computer. In questo esempio utilizzeremo il cmdlet Invoke-Command per connetterci ai computer remoti nell'elenco e disabilitare il firewall su di essi.
$computers = @('WKS01', 'WKS02', 'WKS03')
Invoke-Command -ComputerName $computers {Set-NetFirewallProfile -All -Enabled False}
È possibile modificare l'azione predefinita per il profilo pubblico per bloccare tutte le connessioni in entrata.
Set-NetFirewallProfile –Name Public –DefaultInboundAction Block
Le impostazioni del profilo corrente possono essere visualizzate come segue:
Get-NetFirewallProfile -Name Public


Se gestisci le impostazioni di Windows Firewall utilizzando un oggetto Criteri di gruppo, puoi visualizzare le impostazioni del profilo risultanti correnti come segue:
Get-NetFirewallProfile -policystore activestore
Assicurati che tutte le impostazioni del firewall siano applicate a tutte le interfacce di rete sul computer:
Get-NetFirewallProfile -Name Public | fl DisabledInterfaceAliases
Se tutte le interfacce sono protette, il comando dovrebbe restituire:
DisabledInterfaceAliases : {NotConfigured}

Puoi disabilitare un profilo particolare per un'interfaccia di rete (puoi elencare gli adattatori di rete in Windows utilizzando il cmdlet Get-NetIPInterface):
Lettura consigliata:Come attivare o disattivare Windows Firewall in Windows 10
Set-NetFirewallProfile -Name Public -DisabledInterfaceAliases "Ethernet0"
Come puoi vedere, il profilo Pubblico non è più applicato all'interfaccia Ethernet0::
DisabledInterfaceAliases : {Ethernet0}

Puoi usare ilSet-NetFirewallProfilecmdlet per modificare le impostazioni del profilo (azione predefinita, impostazioni di registrazione, percorso e dimensione del file di registro, impostazioni di notifica, ecc.). È possibile configurare le impostazioni di registrazione della connessione di rete per ciascun profilo di percorso di rete. Per impostazione predefinita, i registri di Windows Firewall vengono archiviati%systemroot%system32LogFilesFirewalle la dimensione del file è 4 MB. Puoi abilitare la registrazione della connessione e aumentare la dimensione massima del file:
Set-NetFireWallProfile -Profile Domain -LogBlocked True -LogMaxSize 20000 -LogFileName ‘%systemroot%system32LogFilesFirewallpfirewall.log’
Crea regole di Windows Firewall utilizzando PowerShell
Sono disponibili 9 cmdlet di PowerShell per gestire le regole del firewall su Windows:
- Nuova regola NetFirewall
- Copia-NetFirewallRule
- Disabilita NetFirewallRule
- Abilita-NetFirewallRule
- Get-NetFirewallRule
- Rimuovi-NetFirewallRule
- Rinomina-NetFirewallRule
- Imposta-NetFirewallRule
- Mostra-NetFirewallRule
Diamo un'occhiata ad alcuni semplici esempi su come aprire le porte in Windows Firewall.
Ad esempio, se desideri consentire connessioni TCP in entrata sulle porte TCP 80 e 443 sia per il profilo Dominio che per quello Privato, esegui il comando seguente:
New-NetFirewallRule -DisplayName 'HTTP-Inbound' -Profile @('Domain', 'Private') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('80', '443')


È possibile consentire o bloccare l'accesso alla rete per un'applicazione specifica (eseguibile). Ad esempio, potresti voler bloccare le connessioni in uscita per il browser Firefox:
New-NetFirewallRule -Program “C:Program Files (x86)Mozilla Firefoxfirefox.exe” -Action Block -Profile Domain, Private -DisplayName “Block Firefox browser” -Description “Block Firefox browser” -Direction Outbound
Consentiamo una connessione RDP in entrata sulla porta TCP3389 predefinita da un solo indirizzo IP:
New-NetFirewallRule -DisplayName "AllowRDP" –RemoteAddress 192.168.2.200 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow
Per consentire i ping ICMP per gli indirizzi IP dagli intervalli specificati di indirizzi IP e sottoreti, creare la seguente regola:
$ips = @("192.168.2.15-192.168.2.40", "192.168.100.15-192.168.100.200", ”10.1.0.0/16”)
New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -RemoteAddress $ips -Action Allow
New-NetFirewallRule -DisplayName "Allow inbound ICMPv6" -Direction Inbound -Protocol ICMPv6 -IcmpType 8 -RemoteAddress $ips -Action Allow
Aggiungi un elenco di indirizzi IP da un file di testo normale alla regola del firewall (un indirizzo IP per riga):
$ips=Get-Content C:tempip.txt
Get-NetFirewallrule -DisplayName 'AllowRDP'|Set-NetFirewallRule -RemoteAddress $ips
Nell'articolo precedente ti abbiamo mostrato come utilizzare PowerShell per bloccare l'accesso a un sito Web non solo tramite l'indirizzo IP ma anche tramite il nome DNS del sito.
Consenti tutte le connessioni in entrata dall'indirizzo IP specificato. Ciò aggiungerà l'indirizzo IP alla whitelist del firewall:
$IP = '192.168.1.20'
New-NetFirewallRule -DisplayName "Allow $IP" -Direction Inbound -Action Allow -RemoteAddress $IP
Modifica di una regola esistente di Windows Firewall utilizzando PowerShell
Se desideri modificare una regola del firewall, utilizza il fileImposta-NetFirewallRulecmdlet. Ad esempio, potresti voler consentire connessioni in entrata da un indirizzo IP specifico per una regola che hai creato in precedenza:
Get-NetFirewallrule -DisplayName 'HTTP-Inbound' | Get-NetFirewallAddressFilter | Set-NetFirewallAddressFilter -RemoteAddress 192.168.1.10
Per aggiungere più indirizzi IP a una regola del firewall, utilizzare il seguente script di PowerShell:
$ips = @("192.168.2.15", "192.168.2.17",”192.168.100.15”)
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound'| Get-NetFirewallAddressFilter).RemoteAddress
$current_ips += $ips
Get-NetFirewallrule -DisplayName 'HTTP-Inbound'|Set-NetFirewallRule -RemoteAddress $current_ips
Elenco di tutti gli indirizzi IP in una regola firewall:
Get-NetFirewallrule -DisplayName 'Http_inbound'|Get-NetFirewallAddressFilter
Rimuovi un indirizzo IP da una regola del firewall:
$removeip = "192.168.100.5"
$current_ips = (Get-NetFirewallRule -DisplayName 'HTTP-Inbound'| Get-NetFirewallAddressFilter).RemoteAddress
$filterIP = $current_ips | Where-Object{ $_ -notin $removeip }
Get-NetFirewallrule -DisplayName 'HTTP-Inbound'|Set-NetFirewallRule -RemoteAddress $filterIP


Come abilitare/disabilitare/rimuovere la regola di Windows Firewall con PowerShell
Puoi usare ilDisabilita NetFirewallRuleEAbilita-NetFirewallRulecmdlet per abilitare e disabilitare le regole del firewall.
Disable-NetFirewallRule –DisplayName 'HTTP-Inbound'
Per consentire ICMP (ping), esegui questo comando:
Enable-NetFirewallRule -Name FPS-ICMP4-ERQ-In
Per rimuovere una regola del firewall, utilizzare il fileRimuovi-NetFirewallRulecmdlet.
Remove-NetFirewallRule -DisplayName 'HTTP-Inbound'
Per reimpostare tutte le regole di Microsoft Firewall e ripristinare le impostazioni predefinite, eseguire il comando seguente
netsh advfirewall reset
O:
(New-Object -ComObject HNetCfg.FwPolicy2).RestoreLocalFirewallDefaults()
Ciò eliminerà tutte le impostazioni definite dall'utente, nonché le regole del firewall di Microsoft Defender. Rimarranno solo le regole di accesso alla rete integrate in Windows.
Prima di reimpostare le regole del firewall, è possibile esportare le impostazioni correnti in un file.
netsh advfirewall export "C:Backupfirewall-config.wfw"
Successivamente, puoi ripristinare le vecchie impostazioni del firewall importando il file delle regole:
netsh advfirewall import "C:Backupfirewall-config.wfw"
PowerShell: elenca le regole attive in Windows Firewall
L'elenco delle regole firewall abilitate per il traffico in entrata può essere visualizzato come segue
Get-NetFirewallRule | where {($_.enabled -eq $True) -and ($_.Direction -eq "Inbound")} |ft
Puoi elencare solo le regole di blocco in uscita:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound
Se si desidera visualizzare il nome del programma (eseguibile) nella regola:
Get-NetFirewallRule -Action Block -Enabled True -Direction Outbound | %{$_.Name; $_ | Get-NetFirewallApplicationFilter}


Come puoi vedere, il cmdlet Get-NetFirewallRule non mostra le porte di rete e gli indirizzi IP per le regole del firewall. Per visualizzare le informazioni dettagliate sulle connessioni in entrata (in uscita) consentite in un modo più conveniente con i numeri di porta, utilizzare il seguente script di 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


PowerShell offre un'ampia gamma di opzioni per la gestione delle regole di Windows Firewall dal prompt dei comandi. Puoi eseguire automaticamente gli script PowerShell per aprire/chiudere le porte se si verificano determinati eventi. Nel seguente articolo esamineremo semplici soluzioni basate su PowerShell e Windows Firewall per bloccare automaticamente gli attacchi di forza bruta RDP sull'host VDS Windows aggiungendo l'indirizzo IP dell'autore dell'attacco alla regola del firewall.














![Un'altra scansione è l'errore in corso in Dell SupportAssist [Fix]](https://elsefix.com/tech/tejana/wp-content/uploads/2025/01/Another-scan-is-in-progress-error-in-DELL-SupportAssist.jpg)