Share via


Gestire Windows Firewall con la riga di comando

Questo articolo fornisce esempi su come gestire Windows Firewall con PowerShell e netsh.exe, che possono essere usati per automatizzare la gestione di Windows Firewall.

Impostare le impostazioni predefinite globali del profilo

Le impostazioni predefinite globali impostano il comportamento del dispositivo in base al profilo. Windows Firewall supporta i profili dominio, privato e pubblico.

Windows Firewall elimina il traffico che non corrisponde al traffico non richiesto consentito o al traffico inviato in risposta a una richiesta del dispositivo. Se le regole create non vengono applicate, potrebbe essere necessario abilitare Windows Firewall. Ecco come abilitare Windows Firewall in un dispositivo locale:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Controllare il comportamento di Windows Firewall

Le impostazioni predefinite globali possono essere definite tramite l'interfaccia della riga di comando. Queste modifiche sono disponibili anche tramite la console di Windows Firewall. Gli scriptlet seguenti impostano le azioni in ingresso e in uscita predefinite, specificano le connessioni di rete protette e consentono di visualizzare le notifiche all'utente quando a un programma viene impedito di ricevere connessioni in ingresso. Consente la risposta unicast al traffico di rete multicast o broadcast e specifica le impostazioni di registrazione per la risoluzione dei problemi.

Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow -NotifyOnListen True -AllowUnicastResponseToMulticast True -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

Disabilitare Windows Firewall

Microsoft consiglia di non disabilitare Windows Firewall perché si perdono altri vantaggi offerti dal servizio, ad esempio la possibilità di usare le regole di sicurezza della connessione IPsec (Internet Protocol Security), la protezione di rete dagli attacchi che utilizzano l'impronta digitale della rete, la protezione avanzata del servizio Windows e i filtri del tempo di avvio. La disabilitazione di Windows Firewall può anche causare problemi, tra cui:

  • Il menu Start può smettere di funzionare
  • Le applicazioni moderne possono non riuscire a installare o aggiornare
  • L'attivazione di Windows tramite telefono non riesce
  • Incompatibilità dell'applicazione o del sistema operativo che dipendono da Windows Firewall

Microsoft consiglia di disabilitare Windows Firewall solo quando si installa un firewall non Microsoft e quando il software non Microsoft viene disabilitato o rimosso viene ripristinato il valore predefinito di Windows Firewall. Se è necessario disabilitare Windows Firewall, non disabilitarlo arrestando il servizio Windows Firewall (nello snap-in Servizi il nome visualizzato è Windows Firewall e il nome del servizio è MpsSvc). L'arresto del servizio Windows Firewall non è supportato da Microsoft. Il software firewall non Microsoft può disabilitare a livello di codice solo le parti di Windows Firewall che devono essere disabilitate per la compatibilità. Non è consigliabile disabilitare il firewall manualmente a questo scopo. Il metodo corretto per disabilitare Windows Firewall consiste nel disabilitare i profili di Windows Firewall e lasciare il servizio in esecuzione. Utilizzare la procedura seguente per disattivare il firewall o disabilitare l'impostazione Criteri di gruppo Configurazione computer|Modelli amministrativi|Rete|Connections di rete|Windows Firewall|Domain Prolfile|Windows Firewall: proteggere tutte le connessioni di rete. Per altre informazioni, vedere Guida alla distribuzione di Windows Firewall. L'esempio seguente disabilita Windows Firewall per tutti i profili.

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

Distribuire le regole del firewall di base

In questa sezione vengono forniti esempi di scriptlet per la creazione, la modifica e l'eliminazione di regole del firewall.

Creare regole del firewall

L'aggiunta di una regola del firewall in Windows PowerShell ha un aspetto molto simile a quello di Netsh, ma i parametri e i valori vengono specificati in modo diverso. Ecco un esempio di come consentire all'applicazione Telnet di restare in ascolto in rete. Questa regola del firewall ha come ambito la subnet locale usando una parola chiave anziché un indirizzo IP. Proprio come in Netsh, la regola viene creata nel dispositivo locale e diventa immediatamente effettiva.

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow

Lo scriptlet seguente illustra come aggiungere una regola del firewall di base che blocca il traffico in uscita da un'applicazione specifica e una porta locale a un oggetto Criteri di gruppo in Active Directory. In Windows PowerShell, l'archivio criteri viene specificato come parametro all'interno del cmdlet New-NetFirewall. In Netsh è innanzitutto necessario specificare l'oggetto Criteri di gruppo che deve essere modificato dai comandi in una sessione Netsh. I comandi immessi vengono eseguiti sul contenuto dell'oggetto Criteri di gruppo e l'esecuzione rimane attiva fino alla fine della sessione Netsh o fino all'esecuzione di un altro comando dell'archivio set. In questo caso, domain.contoso.com è il nome del Active Directory Domain Services (AD DS) e gpo_name è il nome dell'oggetto Criteri di gruppo che si vuole modificare. Le virgolette sono necessarie se sono presenti spazi nel nome dell'oggetto Criteri di gruppo.

New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -LocalPort 23 -Action Block -PolicyStore domain.contoso.com\gpo_name

Memorizzazione nella cache dell'oggetto Criteri di gruppo

Per ridurre l'onere per i controller di dominio occupati, Windows PowerShell consente di caricare un oggetto Criteri di gruppo nella sessione locale, apportare tutte le modifiche apportate in tale sessione e quindi salvarlo di nuovo contemporaneamente. Il comando seguente esegue le stesse azioni dell'esempio precedente aggiungendo una regola Telnet a un oggetto Criteri di gruppo, ma questa operazione viene eseguita applicando la memorizzazione nella cache degli oggetti Criteri di gruppo in PowerShell. La modifica dell'oggetto Criteri di gruppo caricandolo nella sessione locale e usando il parametro -GPOSession non è supportato in Netsh

$gpo = Open-NetGPO -PolicyStore domain.contoso.com\gpo_name
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\telnet.exe -Protocol TCP -LocalPort 23 -Action Block -GPOSession $gpo
Save-NetGPO -GPOSession $gpo

Questo comando non esegue il batch delle singole modifiche, carica e salva l'intero oggetto Criteri di gruppo contemporaneamente. Pertanto, se altre modifiche vengono apportate da altri amministratori o in una finestra di Windows PowerShell diversa, il salvataggio dell'oggetto Criteri di gruppo sovrascrive tali modifiche.

Modificare una regola del firewall esistente

Quando viene creata una regola, Netsh e Windows PowerShell consentono di modificare le proprietà e l'influenza della regola, ma la regola mantiene il relativo identificatore univoco (in Windows PowerShell, questo identificatore viene specificato con il parametro -Name). Ad esempio, è possibile avere una regola Consenti Web 80 che abilita la porta TCP 80 per il traffico in ingresso non richiesto. È possibile modificare la regola in modo che corrisponda a un indirizzo IP remoto diverso di un server Web il cui traffico sarà consentito specificando il nome localizzato leggibile e leggibile della regola.

Set-NetFirewallRule -DisplayName "Allow Web 80" -RemoteAddress 192.168.0.2

Netsh richiede di specificare il nome della regola per la modifica e non è disponibile un modo alternativo per ottenere la regola del firewall. In Windows PowerShell è possibile eseguire query per la regola usando le relative proprietà note. Quando si esegue Get-NetFirewallRule, è possibile notare che non vengono visualizzate condizioni comuni come indirizzi e porte. Queste condizioni sono rappresentate in oggetti separati denominati Filtri. Come illustrato in precedenza, è possibile impostare tutte le condizioni in New-NetFirewallRule e Set-NetFirewallRule. Se si vuole eseguire una query per le regole del firewall basate su questi campi (porte, indirizzi, sicurezza, interfacce, servizi), è necessario ottenere gli oggetti filtro stessi. È possibile modificare l'endpoint remoto della regola Consenti Web 80 (come in precedenza) usando gli oggetti filtro. Usando Windows PowerShell, si esegue una query per porta usando il filtro di porta, quindi presupponendo che esistano altre regole che influiscono sulla porta locale, si compilano con altre query fino a quando non viene recuperata la regola desiderata. Nell'esempio seguente si presuppone che la query restituisca una singola regola del firewall, che viene quindi inviata tramite pipe al Set-NetFirewallRule cmdlet utilizzando la capacità di Windows PowerShell di eseguire la pipeline degli input.

Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction -eq "Inbound" -and $_.Action -eq "Allow"} | Set-NetFirewallRule -RemoteAddress 192.168.0.2

È anche possibile eseguire query per le regole usando il carattere jolly. Nell'esempio seguente viene restituita una matrice di regole del firewall associate a un programma specifico. Gli elementi della matrice possono essere modificati nei cmdlet successivi Set-NetFirewallRule .

Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule

È possibile modificare contemporaneamente più regole in un gruppo quando il nome del gruppo associato viene specificato in un comando Set. È possibile aggiungere regole del firewall a gruppi di gestione specificati per gestire più regole che condividono le stesse influenze. Nell'esempio seguente vengono aggiunte regole del firewall Telnet in ingresso e in uscita al gruppo Telnet Management. In Windows PowerShell, l'appartenenza ai gruppi viene specificata al momento della prima creazione delle regole in modo da ricreare le regole di esempio precedenti. L'aggiunta di regole a un gruppo di regole personalizzato non è possibile in Netsh.

New-NetFirewallRule -DisplayName "Allow Inbound Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"
New-NetFirewallRule -DisplayName "Block Outbound Telnet" -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow -Group "Telnet Management"

Se il gruppo non viene specificato al momento della creazione della regola, la regola può essere aggiunta al gruppo di regole usando la notazione punto in Windows PowerShell. Non è possibile specificare il gruppo usando Set-NetFirewallRule perché il comando consente l'esecuzione di query in base al gruppo di regole.

$rule = Get-NetFirewallRule -DisplayName "Allow Inbound Telnet"
$rule.Group = "Telnet Management"
$rule | Set-NetFirewallRule

Con l'aiuto del Set comando , se viene specificato il nome del gruppo di regole, l'appartenenza al gruppo non viene modificata, ma tutte le regole del gruppo ricevono le stesse modifiche indicate dai parametri specificati. Lo scriptlet seguente abilita tutte le regole in un gruppo predefinito contenente la gestione remota che influenza le regole del firewall.

Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True

È anche disponibile un cmdlet separato Enable-NetFirewallRule per abilitare le regole in base al gruppo o ad altre proprietà della regola.

Enable-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Verbose

Eliminare una regola del firewall

Gli oggetti regola possono essere disabilitati in modo che non siano più attivi. In Windows PowerShell, il cmdlet Disable-NetFirewallRule lascerà la regola nel sistema, ma la inserirà in uno stato disabilitato in modo che la regola non venga più applicata e influirà sul traffico. Una regola del firewall disabilitata può essere riattivata da Enable-NetFirewallRule. Questo cmdlet è diverso da Remove-NetFirewallRule, che rimuove definitivamente la definizione della regola dal dispositivo. Il cmdlet seguente elimina la regola del firewall esistente specificata dall'archivio criteri locale.

Remove-NetFirewallRule -DisplayName "Allow Web 80"

Analogamente ad altri cmdlet, è anche possibile eseguire query per la rimozione di regole. In questo caso, tutte le regole del firewall bloccanti vengono eliminate dal dispositivo.

Remove-NetFirewallRule -Action Block

Può essere più sicuro eseguire query sulle regole con il comando Get e salvarle in una variabile, osservare le regole da modificare, quindi inviarle tramite pipe al comando Remove , proprio come è stato fatto per i comandi Set . Nell'esempio seguente viene illustrato come visualizzare tutte le regole del firewall bloccanti e quindi eliminare le prime quattro regole.

$x = Get-NetFirewallRule -Action Block
$x
$x[0-3] | Remove-NetFirewallRule

Gestire in remoto

La gestione remota tramite WinRM è abilitata per impostazione predefinita. I cmdlet che supportano il parametro CimSession usano WinRM e possono essere gestiti in remoto per impostazione predefinita. Nell'esempio seguente vengono restituite tutte le regole del firewall dell'archivio permanente in un dispositivo denominato RemoteDevice.

Get-NetFirewallRule -CimSession RemoteDevice

È possibile eseguire qualsiasi modifica o visualizzare le regole nei dispositivi remoti usando il parametro -CimSession . In questo caso viene rimossa una regola del firewall specifica da un dispositivo remoto.

$RemoteSession = New-CimSession -ComputerName RemoteDevice
Remove-NetFirewallRule -DisplayName "AllowWeb80" -CimSession $RemoteSession -Confirm

Distribuire le impostazioni di base delle regole IPsec

Un criterio IPsec (Internet Protocol Security) è costituito da regole che determinano il comportamento IPsec. IPsec supporta l'autenticazione peer a livello di rete, l'autenticazione dell'origine dati, l'integrità dei dati, la riservatezza dei dati (crittografia) e la protezione della riproduzione. Windows PowerShell possono creare criteri IPsec complessi e potenti, ad esempio in Netsh e nella console di Windows Firewall. Tuttavia, poiché Windows PowerShell è basato su oggetti anziché su token di stringa, la configurazione in Windows PowerShell offre maggiore controllo e flessibilità. In Netsh, i set di autenticazione e crittografia sono stati specificati come elenco di token delimitati da virgole in un formato specifico. In Windows PowerShell, anziché usare le impostazioni predefinite, è prima di tutto necessario creare gli oggetti di autenticazione o proposta di crittografia desiderati e raggrupparli in elenchi nell'ordine preferito. Creare quindi una o più regole IPsec che fanno riferimento a questi set. Il vantaggio di questo modello è che l'accesso a livello di codice alle informazioni nelle regole è molto più semplice. Vedere le sezioni seguenti per chiarire gli esempi. modello a oggetti per la creazione di una singola regola ipsec.

Creare regole IPsec

Il cmdlet seguente crea una regola di base della modalità trasporto IPsec in un oggetto Criteri di gruppo. Una regola IPsec è semplice da creare; tutto ciò che è necessario è il nome visualizzato e le proprietà rimanenti usano i valori predefiniti. Il traffico in ingresso viene autenticato e l'integrità viene controllata usando la modalità rapida predefinita e le impostazioni della modalità principale. Queste impostazioni predefinite sono disponibili nella console in Personalizza impostazioni predefinite IPsec.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -PolicyStore domain.contoso.com\gpo_name

Aggiungere metodi di autenticazione personalizzati a una regola IPsec

Se si vuole creare un set personalizzato di proposte in modalità rapida che includa sia AH che ESP in un oggetto regola IPsec, creare gli oggetti associati separatamente e collegarne le associazioni. Per altre informazioni sui metodi di autenticazione, vedere Scelta del protocollo IPsec. È quindi possibile usare i criteri di modalità rapida personalizzati appena creati quando si creano regole IPsec. L'oggetto set di crittografia è collegato a un oggetto regola IPsec. oggetto set di crittografia. In questo esempio si basa sulla regola IPsec creata in precedenza specificando un set di crittografia in modalità rapida personalizzato. La regola IPsec finale richiede l'autenticazione del traffico in uscita tramite il metodo di crittografia specificato.

$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP -AHHash SHA1 -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "ah:sha1+esp:sha1-des3" -Proposal $AHandESPQM -PolicyStore domain.contoso.com\gpo_name
New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name -PolicyStore domain.contoso.com\gpo_name

Regole di trasporto IPsec IKEv2

Una rete aziendale potrebbe dover proteggere le comunicazioni con un'altra agenzia. Tuttavia, si scopre che l'agenzia esegue sistemi operativi non Windows e richiede l'uso dello standard Internet Key Exchange Versione 2 (IKEv2). È possibile applicare le funzionalità IKEv2 in Windows Server 2012 specificando IKEv2 come modulo chiave in una regola IPsec. Questa specifica di funzionalità può essere eseguita solo usando l'autenticazione del certificato del computer e non può essere usata con l'autenticazione di fase 2.

New-NetIPsecRule -DisplayName "Require Inbound Authentication" -InboundSecurity Require -OutboundSecurity Request -Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 -RemoteAddress $nonWindowsGateway

Per altre info su IKEv2, inclusi gli scenari, vedi Protezione di IPsec end-to-end Connections tramite IKEv2.

Copiare una regola IPsec da un criterio a un altro

Le regole firewall e IPsec con le stesse proprietà delle regole possono essere duplicate per semplificare l'attività di ricreazione all'interno di archivi criteri diversi. Per copiare la regola creata in precedenza da un archivio criteri a un altro, anche gli oggetti associati devono essere copiati separatamente. Non è necessario copiare i filtri firewall associati. È possibile eseguire query sulle regole da copiare nello stesso modo degli altri cmdlet. La copia di singole regole è un'attività non possibile tramite l'interfaccia Netsh. Ecco come eseguire questa operazione con Windows PowerShell.

$Rule = Get-NetIPsecRule -DisplayName "Require Inbound Authentication"
$Rule | Copy-NetIPsecRule -NewPolicyStore domain.costoso.com\new_gpo_name
$Rule | Copy-NetPhase1AuthSet -NewPolicyStore domain.costoso.com\new_gpo_name

Gestione degli errori Windows PowerShell

Per gestire gli errori negli script Windows PowerShell, è possibile usare il parametro -ErrorAction. Questo parametro è particolarmente utile con i cmdlet Remove . Se si vuole rimuovere una determinata regola, si noterà che ha esito negativo se la regola non viene trovata. Quando le regole vengono rimosse, se la regola non è già presente, è accettabile ignorare l'errore. In questo caso, è possibile eseguire le operazioni seguenti per eliminare eventuali errori di "regola non trovata" durante l'operazione di rimozione.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98" -ErrorAction SilentlyContinue

L'uso di caratteri jolly può anche eliminare gli errori, ma potrebbero corrispondere a regole che non si intende rimuovere. Questi caratteri jolly possono essere un collegamento utile, ma devono essere usati solo se si sa che non sono presenti regole aggiuntive che verranno eliminate accidentalmente. Di conseguenza, il cmdlet seguente rimuoverà anche la regola, eliminando eventuali errori "non trovati".

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*"

Quando si usano caratteri jolly, se si vuole controllare di più il set di regole corrispondenti, è possibile usare il parametro -WhatIf .

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -WhatIf

Se si desidera eliminare solo alcune delle regole corrispondenti, è possibile usare il parametro -Confirm per ottenere una richiesta di conferma regola per regola.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Confirm

È anche possibile eseguire l'intera operazione, visualizzando il nome di ogni regola durante l'esecuzione dell'operazione.

Remove-NetFirewallRule -DisplayName "Contoso Messenger 98*" -Verbose

Monitoraggio

I comandi Windows PowerShell seguenti sono utili nel ciclo di aggiornamento di una fase di distribuzione. Per consentire di visualizzare tutte le regole IPsec in un archivio specifico, è possibile usare i comandi seguenti. In Netsh questo comando non mostra regole in cui profile=domain, public o profile=domain,private. Mostra solo le regole con il dominio a voce singola incluso nella regola. Gli esempi di comando seguenti mostrano le regole IPsec in tutti i profili.

Show-NetIPsecRule -PolicyStore ActiveStore

È possibile monitorare le associazioni di sicurezza in modalità principale per informazioni quali peer attualmente connessi al dispositivo e quale suite di protezione viene usata per formare le associazioni di sicurezza. Usare il cmdlet seguente per visualizzare le regole in modalità principale esistenti e le relative associazioni di sicurezza:

Get-NetIPsecMainModeSA

Trovare l'oggetto Criteri di gruppo di origine di una regola

Per visualizzare le proprietà di una determinata regola o gruppo di regole, eseguire una query per la regola. Quando una query restituisce campi specificati come NotConfigured, è possibile determinare da quale archivio criteri ha origine una regola. Per gli oggetti provenienti da un oggetto Criteri di gruppo (il parametro -PolicyStoreSourceType viene specificato come GroupPolicy nel comando Show ), se viene passato -TracePolicyStore , il nome dell'oggetto Criteri di gruppo viene trovato e restituito nel campo PolicyStoreSource .

Get-NetIPsecRule -DisplayName "Require Inbound Authentication" -TracePolicyStore

È importante notare che le origini rivelate non contengono un nome di dominio.

Distribuire un criterio di isolamento del dominio di base

IPsec può essere usato per isolare i membri di dominio da membri non di dominio. L'isolamento del dominio usa l'autenticazione IPsec per richiedere che i dispositivi aggiunti a un dominio stabiliscano in modo positivo le identità dei dispositivi in comunicazione per migliorare la sicurezza di un'organizzazione. Una o più funzionalità di IPsec possono essere usate per proteggere il traffico con un oggetto regola IPsec. Per implementare l'isolamento del dominio nella rete, i dispositivi nel dominio ricevono regole IPsec che bloccano il traffico di rete in ingresso non richiesto che non è protetto da IPSec. In questo caso viene creata una regola IPsec che richiede l'autenticazione da parte dei membri del dominio. Tramite questa autenticazione è possibile isolare i dispositivi aggiunti a un dominio dai dispositivi non aggiunti a un dominio. Negli esempi seguenti l'autenticazione Kerberos è necessaria per il traffico in ingresso e richiesta per il traffico in uscita.

$kerbprop = New-NetIPsecAuthProposal -Machine -Kerberos
$Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop -PolicyStore domain.contoso.com\domain_isolation
New-NetIPsecRule -DisplayName "Basic Domain Isolation Policy" -Profile Domain -Phase1AuthSet $Phase1AuthSet.Name -InboundSecurity Require -OutboundSecurity Request -PolicyStore domain.contoso.com\domain_isolation

Configurare la modalità tunnel IPsec

Il comando seguente crea un tunnel IPsec che instrada il traffico da una rete privata (192.168.0.0/16) tramite un'interfaccia del dispositivo locale (1.1.1.1) collegata a una rete pubblica a un secondo dispositivo tramite l'interfaccia pubblica (2.2.2.2) a un'altra rete privata (192.157.0.0/16). Tutto il traffico attraverso il tunnel viene controllato per l'integrità tramite ESP/SHA1 ed è crittografato tramite ESP/DES3.

$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3
$QMCryptoSet = New-NetIPsecQuickModeCryptoSet -DisplayName "esp:sha1-des3" -Proposal $QMProposal
New-NetIPSecRule -DisplayName "Tunnel from HQ to Dallas Branch" -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name

Distribuire regole del firewall sicure con IPsec

Nelle situazioni in cui è possibile consentire solo il traffico sicuro tramite Windows Firewall, è necessaria una combinazione di regole firewall e IPSec configurate manualmente. Le regole del firewall determinano il livello di sicurezza per i pacchetti consentiti e le regole IPsec sottostanti consentono di proteggere il traffico. Gli scenari possono essere eseguiti in Windows PowerShell e in Netsh, con molte analogie nella distribuzione.

Creare una regola del firewall sicura (consenti se sicura)

La configurazione della regola dei firewall per consentire le connessioni se sono sicure richiede che il traffico corrispondente venga autenticato e protetto dall'integrità e quindi crittografato facoltativamente da IPsec. Nell'esempio seguente viene creata una regola del firewall che richiede l'autenticazione del traffico. Il comando consente il traffico di rete Telnet in ingresso solo se la connessione dal dispositivo remoto viene autenticata usando una regola IPsec separata.

New-NetFirewallRule -DisplayName "Allow Authenticated Telnet" -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -Authentication Required -Action Allow

Il comando seguente crea una regola IPsec che richiede una prima autenticazione (computer) e quindi tenta una seconda autenticazione facoltativa (utente). La creazione di questa regola protegge e consente il traffico attraverso i requisiti delle regole del firewall per il programma messenger.

$mkerbauthprop = New-NetIPsecAuthProposal -Machine -Kerberos
$mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM
$P1Auth = New-NetIPsecPhase1AuthSet -DisplayName "Machine Auth" -Proposal $mkerbauthprop,$mntlmauthprop
$ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos
$unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM
$anonyauthprop = New-NetIPsecAuthProposal -Anonymous
$P2Auth = New-NetIPsecPhase2AuthSet -DisplayName "User Auth" -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop
New-NetIPSecRule -DisplayName "Authenticate Both Computer and User" -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name -Phase2AuthSet $P2Auth.Name

Isolare un server richiedendo la crittografia e l'appartenenza a gruppi

Per migliorare la sicurezza dei dispositivi in un'organizzazione, è possibile distribuire l'isolamento del dominio in cui i membri del dominio sono limitati. Richiedono l'autenticazione quando comunicano tra loro e rifiutano le connessioni in ingresso non autenticate. Per migliorare la sicurezza dei server con dati sensibili, questi dati devono essere protetti consentendo l'accesso solo a un subset di dispositivi all'interno del dominio aziendale. IPsec può fornire questo livello aggiuntivo di protezione isolando il server. Nell'isolamento del server, l'accesso ai dati sensibili è limitato agli utenti e ai dispositivi con esigenze aziendali legittime e i dati vengono crittografati per evitare intercettazioni.

Creare una regola del firewall che richiede l'appartenenza ai gruppi e la crittografia

Per distribuire l'isolamento del server, si sovrappone una regola del firewall che limita il traffico agli utenti autorizzati o ai dispositivi nella regola IPsec che impone l'autenticazione. La regola del firewall seguente consente il traffico Telnet dagli account utente membri di un gruppo personalizzato denominato "Autorizzato ad accedere al server". Questo accesso può anche essere limitato in base al dispositivo, all'utente o a entrambi specificando i parametri di restrizione. Una stringa SDDL (Security Descriptor Definition Language) viene creata estendendo l'identificatore di sicurezza (SID) di un utente o di un gruppo. Per altre informazioni sulla ricerca del SID di un gruppo, vedere: Ricerca del SID per un account di gruppo. La limitazione dell'accesso a un gruppo consente alle amministrazioni di estendere il supporto dell'autenticazione avanzata tramite Windows Firewall e/o i criteri IPsec. Nell'esempio seguente viene illustrato come creare una stringa SDDL che rappresenta i gruppi di sicurezza.

$user = new-object System.Security.Principal.NTAccount ("corp.contoso.com\Administrators")
$SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value
$secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"

Usando lo scriptlet precedente, è anche possibile ottenere la stringa SDDL per un gruppo di computer protetto, come illustrato di seguito:

$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"

Per altre informazioni su come creare gruppi di sicurezza o su come determinare la stringa SDDL, vedere Uso dei SID. Telnet è un'applicazione che non fornisce la crittografia. Questa applicazione può inviare dati, ad esempio nomi e password, in rete. Questi dati possono essere intercettati da utenti malintenzionati. Se un amministratore vuole consentire l'uso di Telnet, ma proteggere il traffico, è possibile creare una regola del firewall che richiede la crittografia IPsec. Questa regola del firewall è necessaria in modo che l'amministratore possa essere certo che quando viene usata questa applicazione, tutto il traffico inviato o ricevuto da questa porta viene crittografato. Se IPsec non riesce ad autorizzare la connessione, non è consentito alcun traffico da questa applicazione. In questo esempio viene consentito solo il traffico Telnet in ingresso autenticato e crittografato da un gruppo di utenti protetto specificato tramite la creazione della regola del firewall seguente.

New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%\System32\tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\Server_Isolation

Imposizione della sicurezza degli endpoint

Nell'esempio precedente è stata illustrata la sicurezza end-to-end per una particolare applicazione. In situazioni in cui la sicurezza degli endpoint è necessaria per molte applicazioni, la presenza di una regola del firewall per ogni applicazione può essere complessa e difficile da gestire. L'autorizzazione può eseguire l'override della base per regola ed essere eseguita a livello IPsec. In questo esempio viene impostata l'impostazione IPsec globale per consentire solo il traffico in modalità trasporto proveniente da un gruppo di utenti autorizzato con il cmdlet seguente. Consultare gli esempi precedenti per l'uso dei gruppi di sicurezza.

Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup

Creare regole del firewall che consentano il traffico di rete protetto da IPsec (bypass autenticato)

Il bypass autenticato consente al traffico proveniente da un dispositivo o un utente attendibile specificato di eseguire l'override delle regole del blocco del firewall. Questa sostituzione è utile quando un amministratore vuole usare i server di analisi per monitorare e aggiornare i dispositivi senza la necessità di usare eccezioni a livello di porta. Per altre informazioni, vedere Come abilitare il bypass del firewall autenticato. In questo esempio si presuppone che esista una regola del firewall di blocco. Questo esempio consente a qualsiasi traffico di rete su qualsiasi porta da qualsiasi indirizzo IP di eseguire l'override della regola di blocco, se il traffico viene autenticato come proveniente da un dispositivo o da un account utente membro del dispositivo o del gruppo di sicurezza utente specificato.

New-NetFirewallRule -DisplayName "Inbound Secure Bypass Rule" -Direction Inbound -Authentication Required -OverrideBlockRules $true -RemoteMachine $secureMachineGroup -RemoteUser $secureUserGroup -PolicyStore domain.contoso.com\domain_isolation