Come gestire le regole di Windows Firewall con PowerShell

Contenuti

Logo Powershell

Windows contiene un robusto firewall avanzato, ma facile da usare, e con PowerShell 7 possiamo facilmente configurare il firewall dalla riga di comando. Questo post copre i comandi comuni utilizzati in Windows Firewall e dove possono essere utilizzati.

Il modulo NetSecurity è ok documentato. Si prega di notare che questo post si applica solo al sistema operativo Windows. Per altri sistemi operativi, ci sono altri strumenti da riga di comando che possono essere usati per eseguire lo stesso tipo di funzioni, Che cosa UFW oh IPTables en Linux.

Caricamento del NetSecurity Modulo

il NetSecurity Il modulo, integrato e offerto da Microsoft, Contiene tutte le funzionalità indispensabili da aggiungere, eliminare e modificare le regole del firewall. Per caricare il modulo, basta importare il modulo come mostrato di seguito.

Import-Module -Name 'NetSecurity'

Elenco delle regole firewall esistenti

Il cmdlet, Get-NetFirewallRule mostrerà tutte le regole del firewall esistenti. Ci sono molti, predefinito, quindi per dimostrarlo, prendiamo il primo 10.

Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action -First 10

Ci sono molte proprietà che vengono restituite da Get-NetFirewallRule. Anche se elenchiamo solo una delle proprietà sopra, in esecuzione Get-NetFirewallRule | Select-Object * -First 1, elencherà tutti disponibili.

Crea una nuova regola firewall

Esistono molti modi diversi per creare una nuova regola firewall, ma il comando che fa questo è [Net-NewFirewallRule](<https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=win10-ps>). Le proprietà di base che devono essere completate sono:

  • DisplayName – Il nome descrittivo della regola del firewall.
  • Direction – O per bloccare il traffico in uscita dal computer. Outbound o entrando nel computer Inbound
  • Action – Quale azione intraprendere se la regola viene rispettata, Allow oh Block

$Params = @{ "DisplayName" = 'Block WINS' "Direction" = 'Inbound' "Action" = 'Block' "RemoteAddress" = 'WINS' }

New-NetFirewallRule @Params
Se lui Name il parametro non viene utilizzato, quindi viene utilizzato un GUID casuale. il DisplayName può essere leggibile dall'uomo, ma Name è stato assegnato un GUID casuale.

Modifica una regola firewall esistente

E se volessimo modificare una regola esistente senza eliminare e ricreare completamente la regola?? Per farlo, dobbiamo eseguire il Set-NetFirewallRule, e ci consentirà di modificare la regola del firewall secondo necessità.

$Params = @{
	"DisplayName"   = 'Block WINS'
	"Action"        = 'Allow'
}

Set-NetFirewallRule @Params

Altre abilità utili che il Set-NetFirewallRule ha è la capacità di operare con più regole contemporaneamente. Questo può essere fatto individuando le regole in base a uno dei tre parametri.

  • NameQuesta è l'impostazione predefinita e se i nomi sono impostati tramite pipe o un array di stringhe, ognuno di loro sarà agito su.
  • DisplayNameSimile a Name, più oggetti in pipeline o un array di stringhe modificheranno tali regole di conseguenza.
  • DisplayGroup oh GroupSe le regole sono raggruppate, tutte queste regole raggruppate possono essere applicate contemporaneamente.

Elimina una regola firewall esistente

Finalmente, vorremmo eliminare la regola esistente, poiché è fattibile che non sia più necessario. Per fare questo, eseguire il comando Remove-NetFirewallRule. Quando lo fa, spesso è consigliabile utilizzare il WhatIf parametro per verificare che la regola sia corretta da eliminare.

Remove-NetFirewallRule -DisplayName "Block WINS"

È fondamentale prestare attenzione che il Remove-NetFirewallRule può eliminare più regole contemporaneamente. Di seguito è riportato un esempio di questo tipo di funzionalità. La prossima regola rimuoverà tutte le regole disabilitate contenute nella policy firewall_gpo a ad.local.test dominio.

Remove-NetFirewallRule -Enabled 'False' -PolicyStore 'ad.local.testfirewall_gpo'

È in esecuzione un comando utile, ma potenzialmente pericoloso Remove-NetFirewallFule si, che rimuove tutte le regole firewall locali statiche che sono state create. Se hai un GPO di dominio che imposta le regole del firewall, questo rimuoverà quelli che potrebbero entrare in conflitto con quelle regole definite dall'oggetto Criteri di gruppo.

Funzionalità aggiuntive

Ci sono molti altri comandi disponibili all'interno di NetSecurity modulo. Anche se non li copriamo tutti qui, di seguito sono riportati alcuni comandi importanti per dimostrare quanto sia grande il modulo.

  • Copy-NetFirewallRuleQuesto comando copierà una regola firewall esistente e tutti i filtri associati nello stesso o in un altro policy store.
  • Disable-NetFirewallRuleQuesto disabiliterà una regola del firewall precedentemente abilitata. La regola continuerà ad esistere, ma non modificherà attivamente alcun dato di rete. Se esegui questo comando senza alcun parametro, disabiliterà tutte le regole attive sul computer di destinazione. Si consiglia di eseguire sempre questo comando con il WhatIf parametro se non ha come target una regola specifica o un insieme di regole.
  • Enable-NetFirewallRuleCome la Disable-NetFirewallRule, questo comando abiliterà una regola precedentemente disabilitata o un insieme di regole. Se questo comando viene eseguito senza parametri, abiliterà tutte le regole precedentemente disabilitate. Si consiglia di eseguire sempre questo comando con il WhatIf parametro se non ha come target una regola specifica o un insieme di regole.
  • Get-NetFirewallProfileQuesto comando mostra le alternative attualmente configurate per un profilo specificato, Come la Domain, Private, oh Public profili.
  • Get-NetFirewallSettingLe impostazioni globali del firewall possono essere recuperate utilizzando il Get-NetFirewallSetting comando. Queste impostazioni includono opzioni come le opzioni del certificato, coda di pacchetti o elenchi di autorizzazioni.
  • Rename-NetFirewallRulePer rinominare una regola firewall esistente, Utilizzare il Rename-NetFirewallRule comando. Questo è utile se è stata creata una regola senza un nome specifico, quindi un GUID casuale viene ricevuto come nome, ed è preferibile avere un nome leggibile assegnato dall'uomo.
  • Set-NetFirewallProfilePer determinare impostazioni specifiche per i singoli profili, usa el Set-NetFirewallProfile comando. Ciò consente a ciascun profilo di avere configurazioni diverse.
  • Set-NetFirewallSettingQuesto comando configura i comportamenti del firewall globale che si applicano indipendentemente dal profilo di rete attualmente in uso..
  • Show-NetFirewallRuleQuesto comando di supporto visualizzerà le regole del firewall e i relativi oggetti associati in un elenco formattato.

C'è un'ampia funzionalità IPSec contenuta nel modulo. I comandi elencati in precedenza sono quelli che operano nella configurazione standard di Windows Firewall.

conclusione

Sono disponibili molti comandi per gestire Windows Firewall. Questo post ne tocca solo alcuni, in particolare i comandi più importanti da elencare, creare, modificare e cancellare rapidamente le regole del firewall. Anche le configurazioni complesse del firewall possono essere ottenute rigorosamente tramite la riga di comando utilizzando il NetSecurity Modulo PowerShell!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.