Come configurare il Firewall di Windows Server
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:
- La regola è disattivata → Attivala
- Protocollo errato → Controlla TCP vs UDP
- Profilo errato → Controlla che il profilo corretto sia attivo
- Il servizio non sta ascoltando → Avvia l'applicazione
- 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:
- Mantieni il firewall attivato — Sempre
- Apri solo il necessario — Principio del minimo privilegio
- Utilizza PowerShell — Più veloce e scriptabile
- Documenta le tue regole — Per facilitare la manutenzione
- 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