Come configurare il Firewall di Windows Server

Come configurare il Firewall di Windows Server

A
Admin
18 min read

Introduzione

Il firewall di Windows (Windows Defender Firewall) è la prima linea di difesa del tuo server. Controlla il traffico di rete in entrata e in uscita autorizzando o bloccando le connessioni in base a regole definite.

Perché configurare il firewall?

  • Sicurezza — Bloccare gli accessi non autorizzati
  • Controllo — Definire precisamente quali servizi sono accessibili
  • Protezione — Ridurre la superficie di attacco del server
  • Conformità — Rispettare le buone pratiche di sicurezza

Ciò che imparerai

  • Accedere e navigare nel firewall di Windows
  • Aprire e chiudere porte
  • Creare regole personalizzate
  • Configurare tramite interfaccia grafica e PowerShell
  • Applicare le buone pratiche di sicurezza


Accedere al Firewall di Windows

Vari metodi per accedere al firewall di Windows Server:

Metodo 1: Ricerca di Windows (Veloce)

1. Premi il tasto Windows
2. Digita "Firewall di Windows Defender con funzionalità avanzate"
3. Clicca sul risultato

Oppure digita semplicemente: wf.msc

Metodo 2: Esegui (Win + R)

1. Premi Windows + R
2. Digita: wf.msc
3. Premi Invio

Metodo 3: Pannello di controllo

1. Pannello di controllo
2. Sistema e sicurezza
3. Firewall di Windows Defender
4. Impostazioni avanzate (colonna di sinistra)

Metodo 4: Server Manager

1. Apri Server Manager
2. Strumenti (Tools)
3. Firewall di Windows Defender con funzionalità avanzate di sicurezza

Metodo 5: PowerShell

# Aprire l'interfaccia grafica
wf.msc

# Oppure gestire direttamente da linea di comando
Get-NetFirewallRule

Comprendere l'Interfaccia

L'interfaccia del firewall di Windows è suddivisa in diverse sezioni:

┌─────────────────────────────────────────────────────────────────┐
│  Firewall di Windows Defender con funzionalità avanzate         │
├──────────────────┬──────────────────────────────────────────────┤
│                  │                                              │
│  ▼ Regole di     │   [Elenco delle regole]                     │
│    traffico      │                                              │
│    in entrata    │   Nome | Gruppo | Profilo | Attivato | Azione │
│                  │   ─────────────────────────────────────────  │
│  ▼ Regole di     │   Regola 1...                                │
│    traffico      │   Regola 2...                                │
│    in uscita     │   Regola 3...                                │
│                  │                                              │
│  ▼ Regole di     │                                              │
│    sicurezza      │                                              │
│    di connessione │                                              │
│                  │                                              │
│  ▼ Analisi       │                                              │
│                  │                                              │
└──────────────────┴──────────────────────────────────────────────┘

Sezioni Principali

Sezione Descrizione
Regole di traffico in entrata Controlla le connessioni VERSO il tuo server
Regole di traffico in uscita Controlla le connessioni DA parte del tuo server
Regole di sicurezza di connessione IPsec e autenticazione
Analisi Monitoraggio delle regole attive

Stati delle Regole

Icona Significato
✅ Verde Regola attivata - Consente il traffico
✅ Verde con cerchio Regola attivata - Blocca il traffico
⬜ Grigio Regola disattivata

Aprire una Porta (Interfaccia Grafica)

Passo dopo Passo: Aprire una Porta TCP

Esempio: Aprire la porta 25565 (Minecraft)

Passo 1: Accedere alle regole in entrata

1. Apri il firewall (wf.msc)
2. Clicca su "Regole di traffico in entrata" nel pannello a sinistra
3. Clicca su "Nuova regola..." nel pannello a destra

Passo 2: Tipo di regola

○ Programma
● Porta          ← Seleziona questa opzione
○ Predefinita
○ Personalizzata

→ Clicca su "Avanti"

Passo 3: Protocollo e porte

● TCP           ← Per la maggior parte dei servizi
○ UDP           ← Per alcuni giochi/VoIP

○ Tutte le porte locali
● Porte locali specifiche: 25565

→ Clicca su "Avanti"

Passo 4: Azione

● Consenti la connessione      ← Seleziona questa opzione
○ Consenti se sicura
○ Blocca la connessione

→ Clicca su "Avanti"

Passo 5: Profili

☑ Dominio       ← Rete aziendale (Active Directory)
☑ Privato       ← Rete di fiducia
☑ Pubblico      ← Internet / Rete non affidabile

→ Seleziona tutti e tre per un server
→ Clicca su "Avanti"

Passo 6: Nome della regola

Nome: Server Minecraft (TCP 25565)
Descrizione: Consente le connessioni al server Minecraft

→ Clicca su "Fine"

La porta 25565 TCP è ora aperta!

Aprire una Porta UDP

Stessa procedura, ma seleziona UDP al passo 3.

Esempio: Aprire la porta 19132 UDP (Minecraft Bedrock)

Passo 3:
○ TCP
● UDP           ← Seleziona UDP

Porte locali specifiche: 19132

Aprire un Intervallo di Porte

Per aprire più porte consecutive:

Passo 3:
Porte locali specifiche: 27015-27030

→ Apre tutte le porte da 27015 a 27030

Aprire più Porte Non Consecutive

Passo 3:
Porte locali specifiche: 80, 443, 8080

→ Apre le porte 80, 443 e 8080

Chiudere una Porta

Metodo 1: Disattivare una Regola Esistente

1. Apri il firewall (wf.msc)
2. Regole di traffico in entrata
3. Trova la regola interessata
4. Clic destro → "Disattiva regola"

Metodo 2: Eliminare una Regola

1. Apri il firewall (wf.msc)
2. Regole di traffico in entrata
3. Trova la regola interessata
4. Clic destro → "Elimina"
5. Conferma l'eliminazione

Metodo 3: Creare una Regola di Blocco

Per bloccare esplicitamente una porta:

1. Nuova regola → Porta
2. TCP o UDP → Numero della porta
3. ● Blocca la connessione    ← Seleziona questa opzione
4. Tutti i profili
5. Nomina: "Blocca Porta XXXX"

⚠️ Nota: Per impostazione predefinita, Windows blocca tutto ciò che non è esplicitamente autorizzato (in modalità entrante). Eliminare una regola di autorizzazione è generalmente sufficiente.


Configurazione con PowerShell

PowerShell offre una gestione più rapida e scriptabile del firewall.

Comandi di Base

Visualizzare lo stato del firewall

# Stato generale
Get-NetFirewallProfile

# Stato per profilo
Get-NetFirewallProfile -Profile Domain,Public,Private | Format-Table Name, Enabled

Attivare / Disattivare il firewall

# Disattivare il firewall (NON RACCOMANDATO)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

# Attivare il firewall
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

Aprire una Porta con PowerShell

Sintassi di base

New-NetFirewallRule -DisplayName "NOME" -Direction Inbound -Protocol TCP -LocalPort PORT -Action Allow

Esempi concreti

# Aprire la porta 80 (HTTP)
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow

# Aprire la porta 443 (HTTPS)
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

# Aprire la porta 25565 TCP (Minecraft Java)
New-NetFirewallRule -DisplayName "Minecraft Java" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow

# Aprire la porta 19132 UDP (Minecraft Bedrock)
New-NetFirewallRule -DisplayName "Minecraft Bedrock" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow

# Aprire un intervallo di porte
New-NetFirewallRule -DisplayName "Game Ports" -Direction Inbound -Protocol UDP -LocalPort 27015-27030 -Action Allow

# Aprire più porte
New-NetFirewallRule -DisplayName "Web Ports" -Direction Inbound -Protocol TCP -LocalPort 80,443,8080 -Action Allow

Aprire TCP e UDP contemporaneamente

# Porta 7777 TCP e UDP (ARK, ecc.)
New-NetFirewallRule -DisplayName "ARK Server TCP" -Direction Inbound -Protocol TCP -LocalPort 7777 -Action Allow
New-NetFirewallRule -DisplayName "ARK Server UDP" -Direction Inbound -Protocol UDP -LocalPort 7777 -Action Allow

Chiudere / Eliminare una Regola

# Eliminare per nome
Remove-NetFirewallRule -DisplayName "Minecraft Java"

# Disattivare una regola (senza eliminare)
Disable-NetFirewallRule -DisplayName "Minecraft Java"

# Riattivare una regola
Enable-NetFirewallRule -DisplayName "Minecraft Java"

Elencare le Regole

# Tutte le regole in entrata
Get-NetFirewallRule -Direction Inbound | Format-Table DisplayName, Enabled, Action

# Solo regole attive
Get-NetFirewallRule -Direction Inbound -Enabled True | Format-Table DisplayName, Action

# Cercare una regola per nome
Get-NetFirewallRule -DisplayName "*Minecraft*"

# Visualizzare i dettagli di una regola
Get-NetFirewallRule -DisplayName "Minecraft Java" | Get-NetFirewallPortFilter

Bloccare una Porta

# Bloccare la porta 23 (Telnet)
New-NetFirewallRule -DisplayName "Block Telnet" -Direction Inbound -Protocol TCP -LocalPort 23 -Action Block

Limitare per IP

# Consentire solo un IP specifico
New-NetFirewallRule -DisplayName "RDP Restricted" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 86.123.45.67 -Action Allow

# Consentire un intervallo di IP
New-NetFirewallRule -DisplayName "Office Network" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 192.168.1.0/24 -Action Allow

# Consentire più IP
New-NetFirewallRule -DisplayName "Admins Only" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress 86.123.45.67,91.234.56.78 -Action Allow

Script Completo: Configurazione Server Web

# Script di configurazione firewall per server web
# Da eseguire come Amministratore

Write-Host "Configurazione del firewall per server web..." -ForegroundColor Green

# HTTP
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
Write-Host "✓ Porta 80 (HTTP) aperta" -ForegroundColor Cyan

# HTTPS
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Write-Host "✓ Porta 443 (HTTPS) aperta" -ForegroundColor Cyan

# FTP (opzionale)
New-NetFirewallRule -DisplayName "FTP (21)" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow
New-NetFirewallRule -DisplayName "FTP Passive" -Direction Inbound -Protocol TCP -LocalPort 50000-50100 -Action Allow
Write-Host "✓ Porte FTP aperte" -ForegroundColor Cyan

# MySQL (solo locale - sicurezza)
New-NetFirewallRule -DisplayName "MySQL Local" -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 127.0.0.1 -Action Allow
Write-Host "✓ MySQL (solo locale)" -ForegroundColor Cyan

Write-Host "`nConfigurazione completata!" -ForegroundColor Green

Configurazione con CMD (netsh)

Per chi preferisce il prompt dei comandi classico.

Sintassi di Base

netsh advfirewall firewall add rule name="NOME" dir=in action=allow protocol=TCP localport=PORT

Aprire una Porta

:: Aprire la porta 80 TCP
netsh advfirewall firewall add rule name="HTTP" dir=in action=allow protocol=TCP localport=80

:: Aprire la porta 443 TCP
netsh advfirewall firewall add rule name="HTTPS" dir=in action=allow protocol=TCP localport=443

:: Aprire la porta 25565 TCP (Minecraft)
netsh advfirewall firewall add rule name="Minecraft" dir=in action=allow protocol=TCP localport=25565

:: Aprire la porta 19132 UDP
netsh advfirewall firewall add rule name="Minecraft Bedrock" dir=in action=allow protocol=UDP localport=19132

:: Aprire un intervallo di porte
netsh advfirewall firewall add rule name="Game Ports" dir=in action=allow protocol=UDP localport=27015-27030

Chiudere / Eliminare una Regola

:: Eliminare una regola per nome
netsh advfirewall firewall delete rule name="Minecraft"

:: Eliminare per porta
netsh advfirewall firewall delete rule name=all protocol=TCP localport=25565

Elencare le Regole

:: Tutte le regole
netsh advfirewall firewall show rule name=all

:: Solo regole in entrata
netsh advfirewall firewall show rule name=all dir=in

:: Cercare una regola
netsh advfirewall firewall show rule name="Minecraft"

Attivare / Disattivare il Firewall

:: Disattivare (NON RACCOMANDATO)
netsh advfirewall set allprofiles state off

:: Attivare
netsh advfirewall set allprofiles state on

:: Attivare solo il profilo Pubblico
netsh advfirewall set publicprofile state on

Limitare per IP

:: Consentire solo un IP
netsh advfirewall firewall add rule name="RDP Restricted" dir=in action=allow protocol=TCP localport=3389 remoteip=86.123.45.67

Regole per Applicazioni

Puoi autorizzare un'applicazione piuttosto che una porta.

Via l'Interfaccia Grafica

1. Nuova regola
2. ● Programma     ← Seleziona questa opzione
3. Sfoglia → Seleziona l'eseguibile
   Esempio: C:\Minecraft\server.jar
4. Consenti la connessione
5. Tutti i profili
6. Nomina la regola

Via PowerShell

# Consentire un'applicazione
New-NetFirewallRule -DisplayName "Minecraft Server" -Direction Inbound -Program "C:\Minecraft\server.jar" -Action Allow

# Consentire Java (per tutti i server Java)
New-NetFirewallRule -DisplayName "Java" -Direction Inbound -Program "C:\Program Files\Java\jdk-21\bin\java.exe" -Action Allow

Via CMD

netsh advfirewall firewall add rule name="Minecraft Server" dir=in action=allow program="C:\Minecraft\server.jar"

Porte Comuni da Configurare

Tabella di Riferimento Rapido

Servizi Web

Servizio Porta Protocollo Comando PowerShell
HTTP 80 TCP New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
HTTPS 443 TCP New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
HTTP Alt 8080 TCP New-NetFirewallRule -DisplayName "HTTP Alt" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

Accesso Remoto

Servizio Porta Protocollo Comando PowerShell
RDP 3389 TCP New-NetFirewallRule -DisplayName "RDP" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow
SSH 22 TCP New-NetFirewallRule -DisplayName "SSH" -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
VNC 5900 TCP New-NetFirewallRule -DisplayName "VNC" -Direction Inbound -Protocol TCP -LocalPort 5900 -Action Allow

Trasferimento di File

Servizio Porta Protocollo Comando PowerShell
FTP 21 TCP New-NetFirewallRule -DisplayName "FTP" -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow
FTP Passivo 50000-50100 TCP New-NetFirewallRule -DisplayName "FTP Passive" -Direction Inbound -Protocol TCP -LocalPort 50000-50100 -Action Allow
SFTP 22 TCP (Stesso di SSH)
FTPS 990 TCP New-NetFirewallRule -DisplayName "FTPS" -Direction Inbound -Protocol TCP -LocalPort 990 -Action Allow

Basi di Dati

Servizio Porta Protocollo Comando PowerShell
MySQL 3306 TCP New-NetFirewallRule -DisplayName "MySQL" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow
PostgreSQL 5432 TCP New-NetFirewallRule -DisplayName "PostgreSQL" -Direction Inbound -Protocol TCP -LocalPort 5432 -Action Allow
SQL Server 1433 TCP New-NetFirewallRule -DisplayName "SQL Server" -Direction Inbound -Protocol TCP -LocalPort 1433 -Action Allow
MongoDB 27017 TCP New-NetFirewallRule -DisplayName "MongoDB" -Direction Inbound -Protocol TCP -LocalPort 27017 -Action Allow
Redis 6379 TCP New-NetFirewallRule -DisplayName "Redis" -Direction Inbound -Protocol TCP -LocalPort 6379 -Action Allow

Server di Giochi

Gioco Porta(e) Protocollo Comando PowerShell
Minecraft Java 25565 TCP New-NetFirewallRule -DisplayName "Minecraft" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow
Minecraft Bedrock 19132 UDP New-NetFirewallRule -DisplayName "Minecraft Bedrock" -Direction Inbound -Protocol UDP -LocalPort 19132 -Action Allow
FiveM (GTA) 30120 TCP/UDP Vedi script qui sotto
Rust 28015 TCP/UDP Vedi script qui sotto
ARK 7777-7778 TCP/UDP Vedi script qui sotto
Valheim 2456-2458 UDP New-NetFirewallRule -DisplayName "Valheim" -Direction Inbound -Protocol UDP -LocalPort 2456-2458 -Action Allow
CS2 27015 TCP/UDP Vedi script qui sotto
Palworld 8211 UDP New-NetFirewallRule -DisplayName "Palworld" -Direction Inbound -Protocol UDP -LocalPort 8211 -Action Allow
Terraria 7777 TCP New-NetFirewallRule -DisplayName "Terraria" -Direction Inbound -Protocol TCP -LocalPort 7777 -Action Allow

Script Pronti all'Uso

Script: Server Minecraft Java

# Minecraft Java Edition
New-NetFirewallRule -DisplayName "Minecraft Java TCP" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow
New-NetFirewallRule -DisplayName "Minecraft Java UDP" -Direction Inbound -Protocol UDP -LocalPort 25565 -Action Allow
New-NetFirewallRule -DisplayName "Minecraft RCON" -Direction Inbound -Protocol TCP -LocalPort 25575 -Action Allow
New-NetFirewallRule -DisplayName "Minecraft Query" -Direction Inbound -Protocol UDP -LocalPort 25565 -Action Allow
Write-Host "Porte Minecraft aperte: 25565 (TCP/UDP), 25575 (RCON)" -ForegroundColor Green

Script: Server FiveM (GTA RP)

# Server FiveM
New-NetFirewallRule -DisplayName "FiveM TCP" -Direction Inbound -Protocol TCP -LocalPort 30120 -Action Allow
New-NetFirewallRule -DisplayName "FiveM UDP" -Direction Inbound -Protocol UDP -LocalPort 30120 -Action Allow
New-NetFirewallRule -DisplayName "FiveM HTTP" -Direction Inbound -Protocol TCP -LocalPort 40120 -Action Allow
Write-Host "Porte FiveM aperte: 30120 (TCP/UDP), 40120 (HTTP)" -ForegroundColor Green

Script: Server Rust

# Server Rust Dedicato
New-NetFirewallRule -DisplayName "Rust Game TCP" -Direction Inbound -Protocol TCP -LocalPort 28015 -Action Allow
New-NetFirewallRule -DisplayName "Rust Game UDP" -Direction Inbound -Protocol UDP -LocalPort 28015 -Action Allow
New-NetFirewallRule -DisplayName "Rust RCON" -Direction Inbound -Protocol TCP -LocalPort 28016 -Action Allow
New-NetFirewallRule -DisplayName "Rust App" -Direction Inbound -Protocol TCP -LocalPort 28082 -Action Allow
Write-Host "Porte Rust aperte: 28015, 28016 (RCON), 28082 (App)" -ForegroundColor Green

Script: Server ARK

# ARK: Survival Evolved
New-NetFirewallRule -DisplayName "ARK Game UDP" -Direction Inbound -Protocol UDP -LocalPort 7777-7778 -Action Allow
New-NetFirewallRule -DisplayName "ARK Query UDP" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "ARK RCON TCP" -Direction Inbound -Protocol TCP -LocalPort 27020 -Action Allow
Write-Host "Porte ARK aperte: 7777-7778, 27015, 27020" -ForegroundColor Green

Script: Server CS2 / CSGO

# Counter-Strike 2
New-NetFirewallRule -DisplayName "CS2 Game TCP" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "CS2 Game UDP" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "CS2 RCON" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "CS2 Steam" -Direction Inbound -Protocol UDP -LocalPort 27020 -Action Allow
Write-Host "Porte CS2 aperte: 27015 (TCP/UDP), 27020" -ForegroundColor Green

Profili di Firewall

Windows utilizza tre profili di firewall a seconda del tipo di rete.

I Tre Profili

Profilo Descrizione Utilizzo
Dominio Rete con Active Directory Azienda
Privato Rete di fiducia Casa, ufficio
Pubblico Rete non affidabile Internet, Wi-Fi pubblico

Quale Profilo per un Server?

Per un VPS o server dedicato accessibile da Internet:

→ Usa il profilo "Pubblico" o "Tutti i profili"

Configurare una Regola per Profilo

Interfaccia Grafica

Durante la creazione della regola (passo 5):
☐ Dominio
☐ Privato
☑ Pubblico     ← Per un server Internet

PowerShell

# Regola solo per il profilo Pubblico
New-NetFirewallRule -DisplayName "Web Server" -Direction Inbound -Protocol TCP -LocalPort 80 -Profile Public -Action Allow

# Regola per tutti i profili
New-NetFirewallRule -DisplayName "Web Server" -Direction Inbound -Protocol TCP -LocalPort 80 -Profile Any -Action Allow

Visualizzare il Profilo Attivo

# Visualizzare quale profilo è attivo
Get-NetConnectionProfile

# Esempio di risultato:
# Name             : Network
# NetworkCategory  : Public    ← Profilo attivo

Cambiare il Profilo di una Connessione

# Passare al profilo Privato
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private

# Passare al profilo Pubblico
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Public

Buone Pratiche di Sicurezza

✅ Da Fare

Pratica Descrizione
Principio del minimo privilegio Apri solo le porte strettamente necessarie
Nominare chiaramente le regole "Server Minecraft TCP 25565" piuttosto che "Regola1"
Documentare le regole Tieni traccia di ciò che è aperto e perché
Limitare per IP se possibile Limita l'accesso RDP al tuo IP fisso
Utilizzare porte non standard Cambia la porta RDP da 3389 a un'altra
Auditare regolarmente Controlla le regole attive periodicamente
Mantenere il firewall attivato Mai "disattivare per testare" permanentemente

❌ Da Evitare

Cattiva pratica Rischio
Disattivare il firewall Server esposto a tutti gli attacchi
Aprire tutte le porte Superficie di attacco massima
Regole troppo permissive Accessi non autorizzati
Ignorare le regole in uscita Possibile esfiltrazione di dati
Nessuna documentazione Impossibile mantenere la sicurezza

Configurazione Sicura Raccomandata

# 1. Assicurarsi che il firewall sia attivato
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

# 2. Politica predefinita: bloccare in entrata, consentire in uscita
Set-NetFirewallProfile -Profile Domain,Public,Private -DefaultInboundAction Block
Set-NetFirewallProfile -Profile Domain,Public,Private -DefaultOutboundAction Allow

# 3. Attivare i log
Set-NetFirewallProfile -Profile Domain,Public,Private -LogBlocked True -LogAllowed False -LogFileName %SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

# 4. RDP limitato per IP (sostituisci con il tuo IP)
Remove-NetFirewallRule -DisplayName "Remote Desktop*" -ErrorAction SilentlyContinue
New-NetFirewallRule -DisplayName "RDP Restricted" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress IL.TUO.IP.PUBBLICO -Action Allow

Audit delle Regole Attive

# Esportare tutte le regole attive
Get-NetFirewallRule -Enabled True -Direction Inbound | 
    Select-Object DisplayName, Profile, Action | 
    Export-Csv -Path "C:\firewall_rules.csv" -NoTypeInformation

# Visualizzare le regole che consentono tutto
Get-NetFirewallRule -Enabled True -Direction Inbound -Action Allow | 
    Where-Object { $_.Profile -eq "Any" } |
    Format-Table DisplayName, Profile

Risoluzione dei Problemi

Problema: La porta sembra chiusa nonostante la regola

Verifiche:

# 1. Verifica che la regola esista ed è attiva
Get-NetFirewallRule -DisplayName "*NomeDellaRegola*" | Format-Table DisplayName, Enabled, Action

# 2. Verifica la porta associata
Get-NetFirewallRule -DisplayName "NomeDellaRegola" | Get-NetFirewallPortFilter

# 3. Verifica che il servizio stia ascoltando sulla porta
netstat -an | findstr "25565"

# 4. Testare localmente
Test-NetConnection -ComputerName localhost -Port 25565

Soluzioni comuni:

  1. La regola è disattivata → Attivala
  2. Protocollo errato → Controlla TCP vs UDP
  3. Profilo errato → Controlla che il profilo corretto sia attivo
  4. Il servizio non sta ascoltando → Avvia l'applicazione
  5. Firewall del provider → Controlla il firewall del pannello del provider

Problema: "Accesso negato" durante la creazione della regola

Soluzione:

Esegui PowerShell o CMD come Amministratore:
1. Clic destro su PowerShell
2. "Esegui come amministratore"

Problema: Troppe regole, difficile da gestire

Soluzione: Esportare e pulire

# Esportare tutte le regole
netsh advfirewall export "C:\firewall_backup.wfw"

# Visualizzare le regole disattivate (candidati all'eliminazione)
Get-NetFirewallRule -Enabled False | Format-Table DisplayName

# Eliminare le regole disattivate
Get-NetFirewallRule -Enabled False | Remove-NetFirewallRule

Problema: Ripristinare la configurazione predefinita

# Ripristinare il firewall (ATTENZIONE: elimina tutte le regole personalizzate)
netsh advfirewall reset

# Oppure tramite l'interfaccia:
# Firewall di Windows → "Ripristina le impostazioni predefinite"

Testare se una Porta è Aperta

Da un altro computer:

# PowerShell
Test-NetConnection -ComputerName IP_DEL_SERVER -Port 25565

# Risultato atteso:
# TcpTestSucceeded : True    ← Porta aperta
# TcpTestSucceeded : False   ← Porta chiusa

Da Internet:

Utilizza uno strumento online come:

Log del Firewall

Attivare i log:

# Attivare la registrazione
Set-NetFirewallProfile -Profile Domain,Public,Private -LogBlocked True -LogMaxSizeKilobytes 4096

# Posizione dei log
%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log

Analizzare i log:

# Visualizzare le ultime voci bloccate
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" -Tail 50 | Where-Object { $_ -match "DROP" }

Promemoria Veloce

Comandi PowerShell Essenziali

# Aprire una porta TCP
New-NetFirewallRule -DisplayName "NOME" -Direction Inbound -Protocol TCP -LocalPort PORT -Action Allow

# Aprire una porta UDP
New-NetFirewallRule -DisplayName "NOME" -Direction Inbound -Protocol UDP -LocalPort PORT -Action Allow

# Eliminare una regola
Remove-NetFirewallRule -DisplayName "NOME"

# Elencare le regole attive
Get-NetFirewallRule -Enabled True -Direction Inbound | Format-Table DisplayName, Action

# Disattivare una regola
Disable-NetFirewallRule -DisplayName "NOME"

# Attivare una regola
Enable-NetFirewallRule -DisplayName "NOME"

Comandi CMD Essenziali

:: Aprire una porta
netsh advfirewall firewall add rule name="NOME" dir=in action=allow protocol=TCP localport=PORT

:: Eliminare una regola
netsh advfirewall firewall delete rule name="NOME"

:: Elencare le regole
netsh advfirewall firewall show rule name=all dir=in

:: Attivare il firewall
netsh advfirewall set allprofiles state on

Conclusione

Il firewall di Windows Server è uno strumento potente per proteggere il tuo server. Punti chiave da ricordare:

  1. Mantieni il firewall attivato — Sempre
  2. Apri solo il necessario — Principio del minimo privilegio
  3. Utilizza PowerShell — Più veloce e scriptabile
  4. Documenta le tue regole — Per facilitare la manutenzione
  5. Auditare regolarmente — Controlla le regole attive

Prossimi passi raccomandati:

  • Proteggere l'accesso RDP (cambiare la porta, limitare per IP)
  • Configurare i log del firewall
  • Creare uno script di configurazione per i tuoi server
  • Implementare una politica di revisione periodica