Nel corso dell'articolo Guida: come aprire le porte su Windows Firewall abbiamo visto come aprire le porte TCP/UDP su Windows Firewall tramite interfaccia grafica. Nel seguente approfondimento vedremo invece come raggiungere il medesimo risultato tramite la linea di comando: una comodità enorme per automatizzare la procedura tramite scripting e, magari, configurare molteplici computer aziendali rapidamente!

» Leggi anche: Guida a PsExec - Lanciare comandi su PC di rete senza installare nulla

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7 - windows firewall linea di comando spotlight

I comandi presentati sono compatibili con Windows 10, Windows 8.1 e Windows 7.

La trattazione è quindi incentrata su Windows. Per aprire le porte sul firewall da linea di comando in ambiente Linux, gli approfondimenti da consultare sono:

Passo 1: Aprire il Prompt dei comandi di Amministratore

Per poter modificare la configurazione di Windows Firewall è necessario agire tramite il Prompt dei comandi di Amministratore. Per aprirlo:

» Leggi: Windows 10, Prompt dei comandi: accesso negato - come aprire (sempre) il "Prompt dei comandi" di Amministratore

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7 - Prompt dei comandi accesso negato

Passo 2: Disabilitare il blocco indiscriminato delle connessioni

Per prima cosa, dobbiamo disabilitare l'eventuale blocco indiscriminato delle connessioni in ingresso: un'opzione che ignora qualsiasi regola e chiude senza possibilità di appello tutte le porte. I tre comandi da impartire sono:

netsh advfirewall set domainprofile firewallpolicy blockinbound,allowoutbound

netsh advfirewall set privateprofile firewallpolicy blockinbound,allowoutbound

netsh advfirewall set publicprofile firewallpolicy blockinbound,allowoutbound

Il risultato, visto da interfaccia grafica, è il seguente:

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Metodo 1: "Sbloccare" tutte le porte di un programma su Windows Firewall tramite linea di comando

A questo punto, possiamo sbloccare le connessioni in ingresso rivolte alle porte aperte da un determinato eseguibile tramite questo comando:

netsh advfirewall firewall add rule name="Zane - Server FTP" dir=in action=allow program="C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe" enable=yes profile="domain,private"

Dove:

  • netsh: è il nome del programma per la configurazione di Windows Firewall da linea di comando
  • advfirewall firewall add rule: sono i parametri che indicano la volontà di creare una nuova regola
  • name="Zane - Server FTP": è il nome a piacere da assegnare alla regola. Consiglio l'uso di un prefisso personalizzato per distinguere le regole create da noi nelle varie liste
  • dir=in: la regola riguarda le connessioni in ingresso
  • action=allow: il traffico deve essere permesso
  • program="C:\Program Files (x86)\FileZilla Server\FileZilla Server.exe": indica quale eseguibile "sbloccare". In questo caso, abbiamo sbloccato un server FTP
  • enable=yes: la regola è attiva
  • profile="domain,private": per quali profili attivare la regola. I valori possibili sono domain, private e/o public (separati da virgole). Omettendo del tutto il parametro, si attiva la regola su tutti i profili

Per maggiori dettagli sul significato dei vari parametri, si veda la trattazione dedicata all'apertura delle porte su Windows Firewall da interfaccia grafica.

Il risultato, visualizzato da interfaccia grafica, è il seguente:

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Metodo 2: Aprire determinate porte su Windows Firewall tramite linea di comando

In alternativa, possiamo aprire determinate porte TCP/UDP da linea di comando senza sbloccare interi eseguibili:

netsh advfirewall firewall add rule name="Zane - Server FTP" dir=in action=allow protocol=TCP localport="21,2121,2122" enable=yes profile="domain,private"

Rispetto all'esempio precedente, abbiamo semplicemente eliminato il parametro program= sostituendolo con:

  • protocol=TCP: indichiamo se vogliamo aprire una porta TCP oppure UDP (a meno di casi specifici, molto probabilmente si tratta di TCP).
  • localport="21,2121,2122": è l'elenco separato da virgole di porte che desideriamo sbloccare. Per aprire un intervallo contiguo di porte (dalla 80 alla 85, ad esempio), scriveremo invece 80-85. Possiamo combinare le due "modalità" scrivendo 21,2121,2122,80-85.

Il risultato, visualizzato da interfaccia grafica, è il seguente:

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Metodo 3: Abilitare determinati gruppi di servizio

Se invece desideriamo sbloccare determinati gruppi di servizio (un insieme articolato di regole predefinite relative ad un determinato servizio di Windows), bisogna impiegare l'argomento group= seguito dal nome del gruppo da abilitare.

Per quanto riguarda la condivisione di file e stampanti in rete locale (LAN), ad esempio, useremo:

netsh advfirewall firewall set rule group="Condivisione file e stampanti" new enable=Yes

Per Desktop remoto:

netsh advfirewall firewall set rule group="Desktop remoto" new enable=Yes

Per scoprire il nome del servizio, fare riferimento alla sezione Consenti app o funzionalità attraverso Windows Firewall dell'interfaccia grafica

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Da notare che le regole per i servizi non accettano il parametro profile (si riceve l'errore Per aggiornare le regole specificate da un gruppo, è possibile utilizzare solo il parametro enable.): il comando abilita quindi la connessione su qualsiasi profilo, compreso quello pubblico. In queste discussioni [Technet, ServerFault] sono proposte alcune (scomode) soluzioni.

Accettare la connessione solo da determinati indirizzi IP

Un parametro opzionale molto utile è remoteip=: consente di configurare Windows Firewall di modo che accetti connessioni all'eseguibile/porta in questione solamente quando la richiesta proviene da un determinato indirizzo IP "fidato".

Ad esempio: per accettare la connessione alle porte 80-81,8080-8085 da tutti gli indirizzi IP compresi fra 192.168.0.1 e 192.168.0.10, oltre che dagli specifici 192.168.0.25 e 192.168.0.30 useremo:

netsh advfirewall firewall add rule name="Zane - Server HTTP solo sviluppatori" dir=in action=allow protocol=TCP localport="80-81,8080-8085" enable=yes profile="domain,private" remoteip="192.168.0.1-192.168.0.10,192.168.0.25,192.168.0.30"

Gli indirizzi IP possono essere locali (LAN) oppure Internet.

Graficamente, il risultato è questo:

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

Se invece vogliamo accettare la connessione da tutti e soli i sistemi che fanno parte della rete locale (LAN), modificheremo il valore del parametro in questo modo:

remoteip="localsubnet"

eliminare una regola di Windows Firewall da linea di comando

Per eliminare una qualsiasi regola di Windows Firewall da linea di comando basta usare l'argomento delete seguito dal nome della regola. Ad esempio:

netsh advfirewall firewall delete rule name="Zane - Server FTP"

Guida Windows Firewall: come aprire porte linea comando Windows 10, Windows 8.1 Windows 7

In alternativa, possiamo usare name="all" e specificare i criteri della regola da eliminare.

Resettare Windows firewall da linea di comando

Per eliminare in un colpo solo l'intera configurazione personalizzata e ripristinare la situazione "pulita" originale basta impartire:

netsh advfirewall reset

Verificare che la porta sia aperta e accettare connessioni via Internet

Per verificare che la porta sia stata effettivamente aperta, le tecniche di diagnosi dei problemi e un'importante osservazione circa l'apertura delle porte su Internet, si vedano i paragrafi finali del seguente articolo:

» Leggi: Guida: come aprire le porte su Windows Firewall

Riferimenti e maggiori informazioni

Per la preparazione di questo articolo ho fatto riferimento principalmente a queste fonti, che includono anche la lista completa delle opzioni ed i comandi per modificare regole preesistenti:

  • KB947709 - Come utilizzare il contesto "netsh advfirewall firewall" anziché...

  • TechNet DD734783 - Netsh AdvFirewall Firewall Commands