Il firewall di Windows e le applicazioni aziendali — Registrare le regole in ingresso dall'installer

· · Windows, Firewall, Rete, Sicurezza, Applicazioni aziendali, Installer, PowerShell, Sistemi informativi

«Sulla macchina di sviluppo funziona senza problemi, ma dal cliente il client non arriva al server», «al primo avvio è uscita una sorta di avviso e la persona in campo l’ha annullato», «con netstat la porta è in ascolto, ma dal PC accanto non arriva» — Nei cantieri di introduzione delle app aziendali, questo tipo di richiesta «non si comunica» è tra i più classici. E a restare in cima alle cause è il firewall di Windows (Windows Defender Firewall).

Il fastidio è che sulla macchina di sviluppo il problema non si vede. Sulla macchina di sviluppo, all’esecuzione di debug da Visual Studio, si è premuto Consenti da soli, o si era amministratori, e si spedisce senza accorgersi del blocco in ingresso predefinito. Dal cliente, invece, chi opera è un utente ordinario senza privilegi di amministratore, e la rete è gestita con GPO. Non è «dovrebbe funzionare e non funziona»: la realtà è «la macchina di sviluppo funzionava per caso».

Questo articolo è rivolto agli sviluppatori di app aziendali che, con un’app sviluppata internamente, si trovano di fronte a «dal cliente non si comunica», e al personale IT delle PMI che riceve quelle richieste. Fissati al minimo il comportamento predefinito del firewall di Windows e il meccanismo dei profili, organizza la progettazione delle regole in ingresso, la pratica della registrazione dall’installer, la procedura di triage e i punti di attenzione sotto gestione GPO/Intune, sulla base di fonti primarie ad agosto 2026.

1. Prima di tutto, la conclusione

  • Il predefinito del firewall di Windows è «blocca in ingresso, consenti in uscita». Il traffico in ingresso che non è una risposta a una richiesta viene scartato se non corrisponde a una regola.1
  • Una regola in ingresso serve solo alle app di tipo server che si mettono in ascolto su una porta. Un’app client che si collega da sola comunica con i predefiniti. Fate prima questo triage.1
  • I profili sono tre (dominio / privato / pubblico). Il dominio si applica in automatico al rilevamento di un controller di dominio; il pubblico è il predefinito delle reti non identificate. Le regole sono abilitate o disabilitate per profilo.1
  • Non affidate la produzione a quella finestra di «avviso importante». Se l’amministratore annulla, viene creata una regola di blocco; se l’utente non ha privilegi di amministratore, qualunque pulsante si prema viene creata una regola di blocco. Finché non si elimina la regola creata, la finestra non ricompare.2
  • La conclusione è «le regole in ingresso delle app aziendali si registrano dall’installer». Microsoft stessa raccomanda di collocare le regole prima del primo avvio e di disabilitare le notifiche in ingresso.2
  • Le regole si progettano con privilegio minimo. Asse programma + protocollo + porta, profilo limitato a dominio/privato, IP remoto ristretto alla subnet necessaria. Sul percorso del programma i caratteri jolly non si possono usare.23
  • Il triage è nell’ordine Test-NetConnection → Get-NetFirewallRule → pfirewall.log. Il registro del firewall per default non viene scritto: esce solo quando si abilita la registrazione dei pacchetti scartati.456
  • La disabilitazione globale fermando il servizio non è supportata. Sotto gestione GPO/Intune l’«unione dei criteri locali» può essere disabilitata, e in quel caso le regole locali non hanno effetto. Si fa richiesta ai sistemi informativi di distribuzione centralizzata delle regole.12

Mappa della conoscenza di questo articolo

Il predefinito del firewall di Windows è blocco in ingresso e consenso in uscita, e una regola in ingresso serve solo alle app aziendali di tipo server che si mettono in ascolto su una porta. Se un’app senza regola si mette in ascolto, viene mostrata la finestra di «avviso importante», ma a seconda dell’operazione può bruciarsi una regola di blocco e diventare causa di un guasto «non si comunica»: per principio le regole in ingresso si registrano dall’installer. Sotto gestione GPO/Intune l’unione dei criteri locali può essere disabilitata, e una regola registrata in locale può non essere applicata.

Mappa della conoscenza del firewall di Windows e delle app aziendaliDiagramma che mostra le relazioni tra firewall di Windows, regole in ingresso, app in ascolto, finestra di «avviso importante», installer e privilegi di amministratore, restringimento delle regole (designazione per programma, limitazione dell'IP remoto), unione dei criteri locali, guasto «non si comunica» e comandi di triagerichiedeconsigliato perpuò causarepuò causarepuò causareverificato daconfigurato daconfigurato darichiedeimplementausapuò causarepuò causareconfigurato daverificato daverificato daprevieneconfigurato daconfigurato darichiedemitigamitigasconsigliato persconsigliato perconsigliato perconsigliato perusaverificato dapuò causarepuò causareprevienemitigamitigaconsigliato perverificato daFirewall di WindowsRegola in ingressoApp aziendale in ascoltoInstallerProfilo di reteGuasto «non si comunica»Finestra di «avviso importante»Cambio del percorso del file eseguibileRegistro del firewall (pfirewall.log)Criteri di gruppoMicrosoft IntuneUnione dei criteri localiServizio firewall (MpsSvc)Regola per portaConsenso eccessivo della regolaTest-NetConnectionGet-NetFirewallRuleComunicazione in ingresso non richiestanetsh advfirewallNew-NetFirewallRulePrivilegi di amministratoreLimitazione dell'IP remotoRegola per programmaArresto del servizio MpsSvcDisabilitazione del firewallNamed pipeSMB (TCP 445)Get-NetConnectionProfileRegola di bloccoDisabilitazione delle notifiche in ingressoRegola per servizioLimitazione del profiloNuova registrazione della regola all'aggiornamentonetstat

Nel diagramma, una linea continua indica una relazione che vale sempre e una linea tratteggiata indica una relazione condizionale (le condizioni sono nella spiegazione di ciascuna relazione nella pagina di dettaglio). L’elenco completo delle relazioni (in totale 35, con evidenza e livello di certezza) e le definizioni dei concetti principali sono raccolti nella pagina di dettaglio della mappa della conoscenza (in giapponese). Dati: JSON-LD / Turtle

2. Il comportamento predefinito, con precisione — In ingresso blocco predefinito, in uscita consenso predefinito

Per prima cosa fissiamo con precisione le fondamenta. Il firewall di Windows è un firewall host abilitato per default in tutte le edizioni, e il comportamento predefinito si esaurisce in queste due righe.1

  • In ingresso (inbound): tutto bloccato se non è una risposta a una richiesta (solicited) o non corrisponde a una regola
  • In uscita (outbound): tutto consentito se non corrisponde a una regola

Da queste due righe esce il triage più importante per le app aziendali. Una regola in ingresso serve solo al «lato in ascolto».

  • App client che si collega da sola a un server Web interno, a un server DB, a un sistema core → di regola, nessuna regola. Il pacchetto di ritorno della connessione è una «risposta a una richiesta», quindi passa per default.
  • App di tipo server o servizi Windows che aprono una porta e attendono connessioni con TCP, gRPC, un protocollo proprio, ecc. → regola in ingresso obbligatoria.
  • Una configurazione che usa named pipe da remoto è un’eccezione. Le named pipe remote non passano dalla porta dell’app stessa ma da SMB (TCP 445), quindi ciò che serve non è una regola dell’app ma una regola lato condivisione file (SMB).
  • L’eccezione è un ambiente ad alta sicurezza in cui il predefinito in uscita è stato cambiato esplicitamente in blocco. Questa configurazione c’è solo in alcune organizzazioni, ma in quel caso anche un’app client ha bisogno di una richiesta di regola in uscita.2
La regola in ingresso serve solo al lato in ascoltoSe ci si collega solo come client la regola in ingresso di regola non è necessaria, e se si apre una porta e si attende connessioni si registra la regola in ingresso dall'installerNon è in ascolto(si collega solo come client)È in ascolto(tipo server, ricezione di callback)Elencare le comunicazioni dell'app internaApre una porta eattende connessioni?Regola in ingresso di regola non necessariail ritorno della connessione passa come «risposta»Regola in ingresso obbligatoria→ registrarla dall'installer (capitolo 5)Eccezione: in un ambiente ad alta sicurezzacon blocco predefinito in uscita, richiedere una regola in uscita

Figura 1: Se una porta è in ascolto la regola in ingresso è obbligatoria; un collegamento solo come client di regola non la richiede.

Il caso in cui «un’app che dovrebbe essere client in realtà è anche in ascolto» (ricezione di callback di risultato, bocca di notifica da altri processi, ecc.) è facile da perdere. Se è ambiguo con quale modo di comunicazione la vostra app è in ascolto, per l’organizzazione in fase di progetto confermate anche «Come scegliere la comunicazione interprocesso».

2.1. Profili e «posizione della rete»

Le regole si applicano per profilo di rete. I profili sono tre.1

Profilo Condizione di applicazione Luogo presupposto
Dominio Si applica in automatico quando un PC unito a un dominio AD rileva un controller di dominio. Impostazione manuale non possibile Rete di dominio interna
Privato L’amministratore lo imposta a mano sull’interfaccia di rete LAN di casa o di un piccolo ufficio
Pubblico Predefinito delle reti non identificate. Progettato sul presupposto più severo Wi-Fi pubblico, hotel, aeroporto

Quale profilo è in applicazione si conferma con Get-NetConnectionProfile; il passaggio privato/pubblico si fa con Set-NetConnectionProfile.1 L’incidente frequente in campo è che nell’ambiente workgroup del cliente la rete è giudicata «pubblica», e una regola in ingresso fatta solo per dominio/privato non è applicata. Quando «la regola c’è ma non passa», sospettate prima la corrispondenza del profilo, più che il contenuto della regola.

2.2. L’ordine di priorità delle regole

La valutazione quando le regole sono più d’una non è un elenco ordinato con pesi, ma si decide con questi principi coerenti.2

  1. Una regola di consenso esplicita ha priorità sul blocco predefinito
  2. Una regola di blocco esplicita ha priorità su una regola di consenso in conflitto
  3. Nei limiti che non contraddicono i due punti sopra, ha priorità la regola più specifica

L’implicazione pratica è: «se da qualche parte c’è una regola di blocco, per quante regole di consenso aggiungiate dopo non vincete». Come si vede nel capitolo successivo, proprio questa regola di blocco è ciò che quella finestra crea in silenzio.

3. La vera natura della finestra di «avviso importante» — Perché non ci si può affidare

Quando un’app inizia per la prima volta l’ascolto (listen) su una porta, se non esiste né una regola di consenso per quell’app né una regola definita dall’amministratore, Windows mostra la familiare finestra «Avviso di sicurezza di Windows» che dice «alcune funzionalità di questa app sono bloccate da Windows Defender Firewall». La specifica del comportamento è chiara.2

  • Se è mostrata a un utente con privilegi di amministratore: «Consenti accesso» crea una regola di consenso. Ma se si preme «Annulla», viene creata una regola di blocco. Di solito sono due, una per TCP e una per UDP.
  • Se è mostrata a un utente senza privilegi di amministratore: qualunque scelta si faccia, viene creata una regola di blocco.
  • In entrambi i casi, finché non si elimina la regola creata la finestra non ricompare più, e la comunicazione resta bloccata.
Biforcazione della finestra di «avviso importante»Se non c'è una regola e le notifiche in ingresso sono abilitate esce la finestra, e con Annulla o con l'operazione di un utente ordinario si crea una regola di blocco e la finestra non esce piùnodisabilitateabilitatel'amministratore preme «Consenti accesso»l'amministratore preme «Annulla»utente senza privilegi di amministratore(qualunque operazione)L'app inizia l'ascolto sulla portaEsiste una regolache corrisponde a quell'app?Si segue la regola(la finestra non esce)Le notifiche in ingressosono abilitate?Blocco in silenzio(non si crea una regola)Finestra di «avviso importante»Viene creata una regola di consensoViene creata una regola di bloccoViene creata una regola di bloccoFinché non si elimina la regolala finestra non esce più

Figura 2: Annullare la finestra o l’operazione di un utente senza privilegi crea una regola di blocco; finché non la si elimina la finestra non esce più.

Questa finestra, insomma, sembra «un meccanismo che chiede il consenso all’utente», ma nel cantiere delle app aziendali lavora come «un meccanismo che, nell’istante in cui un utente ordinario la tocca, brucia una regola di blocco». Se il responsabile dell’introduzione avvia la prima volta con un account amministratore e consente dalla finestra, la regola di consenso creata vale per l’intero PC, quindi anche gli utenti ordinari del giorno dopo per il momento comunicano. L’incidente resta però — quando un utente ordinario pesta per primo un ascolto che in verifica di introduzione non si era pestato, quando il profilo di rete applicato è diverso da quello di introduzione, e quando un aggiornamento cambia il percorso dell’exe (capitoli 4 e 5).

Microsoft stessa, per i dispositivi usati da chi non è amministratore, esplicita queste best practice.2

  1. Collocare le regole necessarie prima del primo avvio dell’app (installer o distribuzione lato gestione)
  2. Disabilitare le notifiche in ingresso (se si tagliano le notifiche, la creazione automatica di regole a runtime non avviene più)

La disabilitazione delle notifiche si imposta con Set-NetFirewallProfile -NotifyOnListen False o con i Criteri di gruppo.7 «Quando esce la finestra, fate premere Consenti alla persona in campo» non è una procedura operativa: è la prenotazione di un incidente. Le regole in ingresso si registrano in installazione — questa è la conclusione dell’articolo, e coincide con la raccomandazione di Microsoft.

4. Progettare le regole in ingresso — Designazione per programma, per porta, per servizio

Progettiamo il contenuto della regola da registrare. I modi di designazione sono in sostanza tre famiglie, e si decide se usarli da soli o combinarli.

Modo di designazione Quando è adatto Debolezze e attenzioni
Designazione per programma (program= / -Program) Porta in ascolto dinamica o multipla. Configurazione in cui è in ascolto il corpo dell’app desktop Solo percorso completo dell’exe, caratteri jolly non ammessi2. Se un aggiornamento cambia il percorso, la regola perde il bersaglio (sezione 5.4)
Designazione per porta (localport= / -LocalPort) Porta fissa. Facile allineare la richiesta ai sistemi informativi e l’impostazione lato apparati di rete Fa passare anche un altro processo in ascolto sulla stessa porta. Serve un registro di gestione dei numeri di porta
Designazione per servizio (-Service) Processo in ascolto che gira come servizio Windows Si restringe il bersaglio con il nome breve del servizio3. Non si usa per una forma di avvio diretto dell’exe
Combinazione (programma + protocollo + porta) Forma di base delle app aziendali di produzione Più le condizioni crescono, più si indebolisce al cambiamento dell’ambiente (cambio di percorso o porta), quindi documentate il contenuto della regola2

Sopra a questo, si sovrappone la limitazione dell’ambito. Anche la raccomandazione di progetto di Microsoft è «le regole in ingresso il più specifiche possibile».2

  • Limitazione del profilo: una regola in ingresso di un’app aziendale usata solo internamente si limita a dominio/privato e non la si abilita sul pubblico. Si evita l’incidente in cui, nell’istante in cui un portatile si collega a un Wi-Fi esterno, la porta in ascolto si apre al mondo.
  • Limitazione dell’IP remoto: se la sorgente della connessione è decisa, si restringe -RemoteAddress a quella subnet. Per reti domestiche e di piccola scala è raccomandata la limitazione con la parola chiave LocalSubnet.23
  • Direzione e numero: se l’ascolto è solo TCP, basta una regola TCP. Non create per inerzia regole sia TCP sia UDP come quelle che la finestra crea in automatico.

«Solo dal destinatario necessario, solo verso la porta necessaria, solo il programma necessario» — la progettazione delle regole in ingresso si esaurisce in questa frase di privilegio minimo.

5. La pratica della registrazione dall’installer — netsh e New-NetFirewallRule

5.1. Premessa: servono i privilegi di amministratore

Aggiungere e eliminare regole del firewall è un cambio di impostazione dell’intero computer, quindi va eseguito con privilegi di amministratore (processo elevato).8 Un installer di solito gira già con privilegi di amministratore, quindi è ragionevole mettere la registrazione della regola nel trattamento di installazione. Non è un motivo per far girare il corpo dell’app come amministratore. Questo modo di tracciare la linea è trattato in dettaglio in «Quando servono i privilegi di amministratore».

5.2. Registrazione con netsh advfirewall

Classico, ma facile da chiamare da qualunque installer, è netsh advfirewall firewall add rule.8

rem add rule accoda anche se esiste già una regola omonima, quindi in vista di
rem reinstallazione, riparazione e aggiornamento si elimina la regola omonima e poi si registra di nuovo
netsh advfirewall firewall delete rule name="MyCompany OrderServer"

rem Regola di consenso in ingresso con designazione per programma + porta + limitazione di profilo
netsh advfirewall firewall add rule name="MyCompany OrderServer" dir=in action=allow program="C:\Program Files\MyCompany\OrderServer\OrderServer.exe" protocol=TCP localport=50051 profile=domain enable=yes

rem In disinstallazione: eliminazione per nome
netsh advfirewall firewall delete rule name="MyCompany OrderServer"

add rule non sostituisce una regola omonima esistente ma la aggiunge omonima, quindi se non eseguite prima delete rule a ogni riesecuzione le regole proliferano, e dopo un aggiornamento che ha cambiato percorso o ambito sopravvive la vecchia regola di consenso (alla prima esecuzione, il delete rule in testa risponde che «non c’è una regola corrispondente», ma l’esecuzione del batch continua, quindi questa sequenza va bene. Se l’installer giudica il successo con il codice di uscita, guardate il risultato dell’add rule in coda). Si può restringere anche la sorgente, come remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet.8 L’eliminazione cancella insieme le regole che corrispondono per nome, quindi rendere univoco il nome della regola con un prefisso aziendale è il modo sicuro.

5.3. Registrazione con PowerShell (New-NetFirewallRule)

Per un controllo più fine, il modulo NetSecurity. -DisplayName è obbligatorio, -Profile accetta più valori separati da virgola (senza spazi).3

# Registrazione (eseguire dall'installer in stato elevato). -Name è un identificatore univoco,
# quindi in reinstallazione, riparazione e aggiornamento la creazione di una regola omonima
# va in errore. Si rende idempotente eliminando la regola omonima esistente e poi ricreandola
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue
New-NetFirewallRule -Name "MyCompany-OrderServer-In" `
    -DisplayName "MyCompany OrderServer (TCP 50051 in ingresso)" `
    -Direction Inbound -Action Allow `
    -Program "C:\Program Files\MyCompany\OrderServer\OrderServer.exe" `
    -Protocol TCP -LocalPort 50051 `
    -Profile Domain,Private -RemoteAddress LocalSubnet

# In disinstallazione: non andare in errore se non esiste
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue

C’è un motivo per esplicitare -Name. -Name è l’identificatore univoco della regola; se lo omettete viene assegnato un valore casuale. Il nome visualizzato (-DisplayName) può cambiare a seconda delle impostazioni locali, quindi la chiave con cui uno script identifica la regola è -Name, come indica Microsoft.3 Anche perché il disinstaller elimini con certezza solo la propria regola, considerate obbligatorio fissare -Name.

5.4. Quando un aggiornamento cambia il percorso dell’exe

Una regola con designazione per programma fissa il bersaglio con il percorso completo. Quindi, se un aggiornamento cambia la cartella di installazione o il nome dell’exe, la regola resta ma perde il bersaglio, e l’ascolto torna a essere bloccato. In quel momento, l’exe del nuovo percorso è trattato come «app senza regola», quindi in un ambiente in cui le notifiche sono abilitate la finestra del capitolo 3 ricompare, e se un utente ordinario la tocca si brucia una regola di blocco. In un ambiente in cui, come raccomandato nel capitolo 3, le notifiche sono disabilitate, fallisce in silenzio senza nemmeno la finestra. È un incidente particolarmente facile in un modo di collocare in una cartella con numero di versione, o in un modo in cui l’auto-aggiornamento muove il posto di collocare.

Se un aggiornamento cambia il percorso dell'exe la regola perde il bersaglioUna regola con designazione per programma fissa il percorso completo, quindi se cambia il posto di collocare perde il bersaglio, e a seconda delle notifiche la finestra ricompare o si blocca in silenzioabilitatedisabilitatecontromisuraSi introduce v1.0la regola punta all'exe della cartella v1.0L'aggiornamento colloca in una cartella v1.1il percorso dell'exe eseguito cambiaLa regola del vecchio percorso perde il bersaglio(la regola resta ma non ha effetto)Le notifiche in ingressosono abilitate?La finestra ricomparese un utente ordinario la tocca, regola di bloccoSenza nemmeno la finestrablocco in silenzioFissare il percorso attraverso gli aggiornamentioppure nel trattamento di aggiornamento eliminare la vecchia regola e registrarla di nuovo

Figura 3: Se un aggiornamento cambia il percorso dell’exe la vecchia regola perde il bersaglio; fissate il percorso o registratela di nuovo all’aggiornamento.

La contromisura è semplice, e è una di queste.

  • Fissare la cartella di installazione e fare in modo che il percorso completo dell’exe non cambi attraverso gli aggiornamenti
  • In un aggiornamento che cambia il percorso, far sì che l’updater elimini la vecchia regola e la registri di nuovo con il nuovo percorso (eseguire i comandi di 5.2/5.3 anche nel trattamento di aggiornamento)

Con MSI, la registrazione della regola si incorpora come custom action eseguita dopo il collocare dei file (in disinstallazione, la custom action lato eliminazione): è la prassi. Toolset come WiX hanno anche estensioni che descrivono in modo dichiarativo le regole del firewall. Il posto di implementazione cambia a seconda del modo di distribuzione scelto, quindi si veda anche «Scegliere un metodo di distribuzione per app Windows». Un altro incidente classico in distribuzione dal cliente, i falsi positivi dell’antivirus, è trattato in «Gestire i falsi positivi di Microsoft Defender».

6. Risoluzione dei problemi — Il flusso di triage di «non si comunica»

Fissiamo in ordine la procedura quando arriva una richiesta. Il flusso complessivo è il seguente.

Triage di «non si comunica»Si confermano in ordine l'ascolto del server, la raggiungibilità del client, la corrispondenza del profilo, le regole di ActiveStore e i DROP nel registronon è in ascoltoè LISTENINGTcpTestSucceeded=TrueFalsenon corrisponde al bersaglio della regolacorrisponde«Dal client non si comunica»Lato server: netstat -anoProblema precedente al firewallindagare lato app o servizioLato client: Test-NetConnectionLa raggiungibilità è normaleindagare lo strato app (autenticazione, protocollo)Lato server: Get-NetConnectionProfileconfermare il profilo in applicazioneRivedere la designazione di profilo della regolaGet-NetFirewallRule -PolicyStore ActiveStoreconfermare presenza di regole di consenso e mescolanza di regole di bloccoMisurare gli scarti (DROP) in pfirewall.log

Figura 4: Isolamento meccanico: netstat → Test-NetConnection → profilo → regole di ActiveStore → pfirewall.log.

Passo Comando/operazione Cosa confermare
1. Conferma dell’ascolto (lato server) netstat -ano Se la porta di destinazione è LISTENING. Se non è nemmeno in ascolto, è un problema precedente al firewall
2. Conferma della raggiungibilità (lato client) Test-NetConnection -ComputerName sv01 -Port 50051 Se TcpTestSucceeded è True4
3. Conferma del profilo (lato server) Get-NetConnectionProfile Se il profilo in applicazione corrisponde al profilo su cui avete abilitato la regola1
4. Conferma delle regole effettive (lato server) Get-NetFirewallRule -PolicyStore ActiveStore Se tra le regole «che hanno davvero effetto», comprese quelle da GPO, c’è la regola di consenso voluta. Se non è mescolata una regola di blocco nata dalla finestra5
5. Conferma nel registro (lato server) pfirewall.log Se i pacchetti verso la porta di destinazione vengono scartati (DROP)6

Una nota al passo 4. Le condizioni di porta e programma non stanno sul corpo della regola ma sull’oggetto filtro, quindi per risalire dalla porta alla regola si interroga via filtro.57

# Risalire alle regole relative alla porta 50051
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 50051 } | Get-NetFirewallRule

# Tracciare la provenienza della regola (locale o GPO)
Get-NetFirewallRule -PolicyStore ActiveStore -TracePolicyStore |
    Select-Object Name, DisplayName, PolicyStoreSourceType, PolicyStoreSource

Il registro del firewall del passo 5 (pfirewall.log) per default non registra nulla. Il percorso predefinito è %windir%\system32\logfiles\firewall\pfirewall.log, la dimensione massima predefinita è 4.096 KB, e viene scritto solo quando si abilita «Registra i pacchetti scartati» o «Registra le connessioni riuscite».6 Su una macchina singola si abilita così.6

netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable

Il registro è un file di testo: per ogni riga si registra se è scarto (DROP) o consenso (ALLOW), protocollo, IP e porta di sorgente/destinazione, quindi qui si chiude se il SYN dal client è arrivato e è stato scartato, o se non è nemmeno arrivato. In un ambiente in cui il registro è configurato per policy, può succedere che il file non si crei per mancanza di permesso di scrittura sulla cartella del registro (FullControl del servizio mpssvc); in quel caso servono la creazione della cartella e la concessione ACL.6

Per scavare ancora, abilitando il criterio di controllo «Scarto pacchetti della piattaforma di filtro» si registra l’evento di sicurezza 5152 a ogni scarto. La quantità di eventi è però enorme, e Microsoft raccomanda di usare l’evento 5157 (connessione della piattaforma di filtro), registrato per connessione. Non è uno strumento da uso quotidiano: lo si abilita solo per il tempo del triage.9

Infine, chiariamo il triage da non fare. La disabilitazione in blocco fermando il servizio del firewall (MpsSvc) non è supportata e provoca problemi lato sistema operativo, come il menu Start che non funziona o l’aggiornamento delle app dello Store che fallisce. Se proprio volete disabilitare per verificare, lasciate il servizio in esecuzione, disabilitate i profili con Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False e appena confermato tornate indietro.17 E una volta chiuso che la causa è il firewall, la correzione non è rendere permanente la disabilitazione ma aggiungere una regola corretta.

7. Punti di attenzione sotto gestione organizzativa — Ambienti in cui le regole locali non hanno effetto, e il modo di fare richiesta

Anche se registrate la regola dall’installer, ci sono ambienti in cui non ha effetto. Nelle organizzazioni che gestiscono il firewall in modo centralizzato con GPO o Intune (CSP), si può disabilitare per profilo l’«unione dei criteri locali» (AllowLocalPolicyMerge). Se questa impostazione è disabilitata, una regola creata da un amministratore locale (installer compreso) non viene applicata, e le regole delle app che hanno bisogno di connessioni in ingresso devono essere distribuite in modo centralizzato da GPO/CSP.2

Se l'unione dei criteri locali è disabilitata la registrazione dell'installer non ha effettoIn un ambiente in cui AllowLocalPolicyMerge è disabilitata la regola locale esiste ma non viene applicata, e si passa alla distribuzione centralizzata con GPO o CSPabilitata (predefinito)disabilitataRegole distribuite con GPO/IntuneInsieme delle regole che hanno davvero effetto(ActiveStore)Regole create in locale(inclusa la registrazione dell'installer)Unione dei criteri locali(AllowLocalPolicyMerge)La regola esiste ma non viene applicata→ passare alla distribuzione centralizzata con GPO/CSP

Figura 5: Se l’unione dei criteri locali è disabilitata le regole dell’installer non si applicano; serve la distribuzione centralizzata con GPO/CSP.

La preparazione realistica lato sviluppo e lato introduzione è la seguente.

  • La registrazione della regola dell’installer va progettata perché «non fallisca» (la registrazione in sé riesce, quindi non si rileva con un errore. Includete nella procedura una conferma di comunicazione dopo l’introduzione)
  • Con il passo 4 del capitolo 6 (-TracePolicyStore) confermate se la provenienza della regola che ha effetto è locale o GPO5
  • Se capite che le regole locali non hanno effetto, passate alla richiesta di distribuzione della regola al reparto sistemi informativi

Nella richiesta consegnate insieme le informazioni seguenti. Una regola del firewall si può creare solo quando direzione, programma, porta e ambito sono allineati, quindi questa tabella diventa così com’è la «specifica di rete dell’app aziendale».

Voce Esempio di compilazione
Nome della regola (identificatore) MyCompany-OrderServer-In
Direzione In ingresso
Percorso del programma C:\Program Files\MyCompany\OrderServer\OrderServer.exe
Protocollo/porta TCP 50051
Intervallo IP remoto 172.16.10.0/24 (segmento di collocare dei client di ricezione ordini)
Profilo Solo dominio
Uso e fondamento Accettazione delle connessioni dai client di inserimento ordini (nome del sistema aziendale)
Condizione di abolizione Eliminare alla rimozione di questo sistema

Anche dal lato sistemi informativi, la quantità di lavoro tra una richiesta con questa tabella e una senza è del tutto diversa. Al contrario, un «aprite, per favore» solo con il numero di porta tende, come si è visto nel capitolo 4, a un consenso eccessivo. I requisiti di comunicazione intorno a condivisione file e autenticazione in un ambiente di dominio stanno cambiando anche per un’altra stretta, distinta dal firewall (obbligo di firma ecc.). Si veda insieme «SMB signing e LDAP channel binding».

8. Conclusione

  • Il predefinito del firewall di Windows è blocco in ingresso e consenso in uscita. Una regola in ingresso serve solo alle app di tipo server in ascolto; se ci si collega solo come client, di regola non serve.
  • Le regole si applicano per profilo (dominio / privato / pubblico). Il primo sospettato di «la regola c’è ma non passa» è la mancata corrispondenza del profilo.
  • La finestra di «avviso importante», con Annulla o con l’operazione di un utente senza privilegi, crea una regola di blocco e da allora non ricompare. Non affidate l’operazione di produzione a questa finestra.
  • Le regole in ingresso delle app aziendali si registrano dall’installer — questo è l’unico principio. La registrazione è con privilegi di amministratore, e si implementa fissando -Name fino all’eliminazione.
  • Le regole si restringono con asse programma + protocollo + porta, profilo e IP remoto. Se un aggiornamento cambia il percorso dell’exe, non dimenticate di registrare di nuovo la regola.
  • Il triage è meccanico, nell’ordine netstat → Test-NetConnection → conferma del profilo → Get-NetFirewallRule (ActiveStore) → pfirewall.log. La disabilitazione fermando il servizio non è supportata.
  • Sotto gestione GPO/Intune l’unione dei criteri locali può essere disabilitata. In quel caso si fa richiesta di distribuzione ai sistemi informativi, allineando nome della regola, direzione, programma, porta, IP remoto e profilo.

Articoli correlati

Aree di consulenza correlate

KomuraSoft LLC si occupa della progettazione dell’installer di app aziendali di tipo server (inclusa la registrazione e l’eliminazione delle regole del firewall), dell’indagine della causa di «non si comunica» nell’ambiente del cliente, e dell’organizzazione dei requisiti di rete in vista della distribuzione sotto gestione GPO. Si può partire dal triage di «sulla macchina di sviluppo funziona, dal cliente no».

Riferimenti

  1. Microsoft Learn, Windows Firewall overview. Sul fatto che il firewall di Windows è un firewall host abilitato per default in tutte le edizioni; sul comportamento predefinito «in ingresso bloccato se non è risposta a una richiesta o corrispondenza a una regola, in uscita consentito se non corrisponde a una regola»; sui tre profili (dominio = applicazione automatica al rilevamento di un controller di dominio, impostazione manuale non possibile; privato = impostazione manuale dell’amministratore; pubblico = predefinito delle reti non identificate); sulla conferma e il cambio della categoria di rete con Get-NetConnectionProfile / Set-NetConnectionProfile; sul fatto che la disabilitazione fermando il servizio del firewall (MpsSvc) non è supportata e provoca il fermo del menu Start, il fallimento dell’aggiornamento delle app dello Store ecc.; sul fatto che il modo corretto di disabilitare è lasciare il servizio in esecuzione e disabilitare i profili.  2 3 4 5 6 7 8 9

  2. Microsoft Learn, Windows Firewall rules. Sull’ordine di priorità delle regole (il consenso esplicito ha priorità sul blocco predefinito, il blocco esplicito ha priorità sul consenso, la regola più specifica ha priorità, non c’è un ordine con pesi); sul fatto che all’inizio dell’ascolto di un’app, se non c’è una regola, viene mostrata una finestra; sul fatto che se un utente amministratore sceglie «No» o Annulla viene creata una regola di blocco (di solito due, TCP/UDP); sul fatto che per un utente che non è amministratore locale, qualunque scelta, viene creata una regola di blocco; sul fatto che finché non si elimina la regola creata la finestra non ricompare e la comunicazione resta bloccata; sul fatto che è comune che l’app o l’installer stesso aggiunga la regola; sulla raccomandazione di collocare le regole prima del primo avvio e di disabilitare le notifiche in ingresso; sul fatto che nelle regole per programma non si possono usare caratteri jolly (C:*\teams.exe ecc.) e si specifica solo il percorso completo; sul fatto che si può disabilitare per profilo l’unione dei criteri locali (AllowLocalPolicyMerge) e, se disabilitata, è obbligatoria la distribuzione centralizzata delle regole delle app che hanno bisogno di connessioni in ingresso; sulla raccomandazione di rendere le regole in ingresso il più specifiche possibile e, per reti domestiche e di piccola scala, di limitare l’indirizzo remoto a LocalSubnet; sul fatto che il blocco predefinito in uscita è un’opzione degli ambienti ad alta sicurezza, ma il predefinito in ingresso non va cambiato in consenso.  2 3 4 5 6 7 8 9 10 11 12 13

  3. Microsoft Learn, New-NetFirewallRule (NetSecurity). Sul fatto che -DisplayName è obbligatorio alla creazione della regola; sul fatto che -Name è un identificatore univoco, per default un valore casuale, e negli script è indicato di usare -Name; sulla specifica di ciascun parametro -Direction (Inbound/Outbound), -Action (Allow/Block), -Program (percorso completo), -Protocol (TCP/UDP/ICMPv4/ICMPv6/numero), -LocalPort, -RemoteAddress (IP/subnet/intervallo/parole chiave come LocalSubnet), -Service, -Profile (Any/Domain/Private/Public, più valori separati da virgola senza spazi); sull’esempio di creazione di una regola che combina designazione per programma + protocollo + porta.  2 3 4 5

  4. Microsoft Learn, Test-NetConnection (NetTCPIP). Sul fatto che Test-NetConnection è un cmdlet che mostra informazioni di diagnosi di ping, connessione TCP e percorso; sul fatto che con -ComputerName e -Port si prova la connessione TCP alla porta specificata e il risultato torna come TcpTestSucceeded.  2

  5. Microsoft Learn, Get-NetFirewallRule (NetSecurity). Sul fatto che con -PolicyStore ActiveStore si ottengono le regole di tutti gli store di criteri in applicazione (insieme risultante di criteri, comprese le derivazioni da GPO); sul fatto che le condizioni di porta, indirizzo ecc. non stanno sul corpo della regola ma sull’oggetto filtro e si interrogano via Get-NetFirewallPortFilter / Get-NetFirewallApplicationFilter; sul fatto che con -TracePolicyStore si conferma la provenienza della regola (PolicyStoreSource / PolicyStoreSourceType Local/GroupPolicy).  2 3 4

  6. Microsoft Learn, Configure Windows Firewall logging. Sul fatto che il percorso predefinito del registro è %windir%\system32\logfiles\firewall\pfirewall.log; sul fatto che la dimensione massima predefinita è 4.096 KB e al raggiungimento del tetto si eliminano le voci più vecchie; sul fatto che il registro non viene scritto finché non si abilita «pacchetti scartati» o «connessioni riuscite»; sull’abilitazione con netsh advfirewall set allprofiles logging droppedconnections/allowedconnections enable; sul fatto che se la cartella del registro non ha il permesso FullControl del servizio mpssvc il file di registro può non essere creato, e in quel caso servono la creazione manuale della cartella e la concessione ACL.  2 3 4 5

  7. Microsoft Learn, Manage Windows Firewall with the command line. Sulla configurazione del comportamento predefinito, delle notifiche (-NotifyOnListen False) e del registro con Set-NetFirewallProfile; sull’esempio di creazione di una regola per programma con New-NetFirewallRule e sugli esempi di eliminazione con Remove-NetFirewallRule / netsh advfirewall firewall delete rule; sul pattern che sopprime l’errore se la regola non esiste con -ErrorAction SilentlyContinue; sull’esempio di query che risale alla regola dalla condizione di porta con Get-NetFirewallPortFilter; sul fatto che disabilitare il profilo con Set-NetFirewallProfile -Enabled False è il mezzo corretto di disabilitazione.  2 3

  8. Microsoft Learn, Use netsh advfirewall firewall context to control Windows Firewall behavior (KB947709). Sulla sintassi di netsh advfirewall firewall add rule (name= / dir=in / action=allow / program= / enable=yes / remoteip= / profile= / protocol= / localport=) e sugli esempi di aggiunta di regole per programma e per porta; sull’esempio di eliminazione con delete rule; sul fatto che un membro del gruppo Administrators, in un ambiente con UAC abilitato, deve eseguire da un prompt dei comandi elevato; sull’impostazione del registro con netsh advfirewall set currentprofile logging.  2 3

  9. Microsoft Learn, Audit Filtering Platform Packet Drop. Sul fatto che abilitando la sottocategoria di controllo «Scarto pacchetti della piattaforma di filtro» si registrano gli eventi 5152 (e 5153) quando Windows Filtering Platform scarta un pacchetto; sul fatto che la quantità di eventi di questa sottocategoria è enorme, e per il monitoraggio delle connessioni bloccate è raccomandato usare l’evento 5157, registrato per connessione e non per pacchetto. 

Articoli recenti con gli stessi tag per approfondire argomenti vicini.

Queste pagine collocano l’argomento in un contesto più ampio di servizi e decisioni.

L’articolo è direttamente collegato ai servizi seguenti.

Domande frequenti

Domande che ricorrono nelle consulenze sull’argomento dell’articolo.

Un'app che si collega al server solo come client ha bisogno di una regola del firewall?
Di regola no. Il predefinito del firewall di Windows è «blocca in ingresso, consenti in uscita», quindi un'app client che avvia solo connessioni verso l'esterno comunica bene con i predefiniti. Una regola in ingresso serve solo al lato che apre una porta e attende le connessioni — cioè alle app di tipo server. Ci sono però due eccezioni. Negli ambienti ad alta sicurezza anche il predefinito in uscita può essere stato cambiato in blocco, e in quel caso serve anche una richiesta di regola in uscita. E anche un'app «client», se è progettata per mettersi in ascolto su una porta per ricevere notifiche di risultato, ha bisogno di una regola in ingresso per quella parte.
Non basta premere «Consenti accesso» sulla finestra «Avviso di sicurezza di Windows»?
In quel momento sì, ma non ci si può affidare per l'operazione di produzione. Se un utente con privilegi di amministratore annulla questa finestra, viene creata una regola di blocco. Peggio: se l'utente non ha privilegi di amministratore, una regola di blocco viene creata qualunque pulsante si prema. Finché non si elimina la regola creata, la finestra non ricompare più e la comunicazione continua a fallire. Nelle app aziendali in cui chi opera sul PC in campo è un utente ordinario, è banale finire in uno stato in cui «qualcuno ha annullato una volta, e da allora non si collega più». Microsoft stessa raccomanda di collocare la regola prima del primo avvio dell'app, proprio per evitarlo.
Una regola in ingresso va costruita intorno alla porta o intorno al programma?
La base è combinarle, non usarle da sole. La designazione per programma restringe il bersaglio con il percorso completo dell'exe, ma se un aggiornamento cambia il percorso la regola perde il bersaglio (i caratteri jolly non si possono usare). La designazione per porta rende chiara la richiesta ai sistemi informativi, ma fa passare anche un altro processo in ascolto sulla stessa porta. Nelle app aziendali di produzione l'asse è «programma + protocollo + porta», si limita il profilo a dominio/privato e si restringe l'IP remoto alla subnet in cui stanno i client: è il modello del privilegio minimo. La designazione per programma da sola si usa solo se la porta è dinamica.
La regola registrata dall'installer sul PC del cliente sembra non avere effetto. Perché?
È molto probabile che il firewall del cliente sia gestito in modo centralizzato con GPO o Intune, e che l'«unione dei criteri locali» (AllowLocalPolicyMerge) sia disabilitata. Se questa impostazione è disabilitata, una regola creata in locale esiste sul profilo ma non viene applicata, e non resta che distribuire la regola in modo centralizzato dal lato GPO/CSP. Confermate l'insieme delle regole effettive con Get-NetFirewallRule -PolicyStore ActiveStore e fate richiesta di distribuzione della regola al reparto sistemi informativi. Se nella richiesta consegnate insieme nome della regola, direzione, percorso del programma, protocollo e porta, intervallo IP remoto e profilo, passa al primo colpo.
Per il triage della comunicazione, si può disabilitare temporaneamente il firewall?
Evitate assolutamente la disabilitazione fermando il servizio (MpsSvc). È un'operazione non supportata da Microsoft e provoca problemi lato sistema operativo, come il menu Start che non funziona o l'aggiornamento delle app dello Store che fallisce. Se proprio volete disabilitare per il triage, il modo corretto è lasciare il servizio in esecuzione e disabilitare i profili con Set-NetFirewallProfile -Enabled False. Limitate però anche questo all'uso di verificare in pochi minuti se la causa è il firewall, e appena confermato tornate indietro. Lasciare disabilitato in operazione è scambiare un problema che si risolve aggiungendo una regola con l'indifesa dell'intero PC.

Profilo dell’autore

Pagina di presentazione dell’autore dell’articolo.

Go Komura

Rappresentante di KomuraSoft LLC

Specializzato nello sviluppo di software Windows, nella consulenza tecnica e nell’analisi dei malfunzionamenti, soprattutto nei progetti con sistemi esistenti e guasti difficili da riprodurre.

Torna al blog