Configurare il firewall di Windows Server su un VPS
5 passaggi per proteggere il firewall del tuo VPS Windows
Controllare lo stato :
Get-NetFirewallProfile | Select Name, Enabledin PowerShell.Attivare sui 3 profili :
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True.Creare una regola in entrata tramite l'interfaccia
wf.mscoNew-NetFirewallRulein PowerShell.Limitare RDP (3389) solo al tuo IP sorgente.
Attivare i log per auditare le connessioni bloccate.
🛡️ Perché il firewall di Windows Server è critico su un VPS
Un VPS Windows è esposto direttamente su Internet. Senza un firewall configurato correttamente, chiunque può tentare di connettersi alle tue porte aperte.
Firewall di rete vs firewall OS: due livelli distinti.
Presso OuiHeberg, il tuo VPS Windows dispone di un firewall di rete a livello di infrastruttura. Ma questo firewall non sostituisce Windows Defender Firewall: opera a livello di OS, regola per regola, programma per programma. Entrambi devono essere attivi.
Rischi se il firewall di Windows è disattivato:
RDP (porta 3389) esposto a tutti i bot di scansione: attacchi brute-force continui.
SQL Server (1433), WinRM (5985/5986) accessibili senza restrizioni.
Nessuna visibilità sul traffico bloccato (nessun log).
I 3 profili di rete: quale si applica su un VPS?
Profilo | Quando si attiva | Su un VPS |
|---|---|---|
Dominio | Macchina unita a un dominio AD | Raramente attivo |
Privato | Rete di fiducia (LAN) | Possibile a seconda della configurazione di rete |
Pubblico | Rete sconosciuta / Internet | Attivo per impostazione predefinita su un VPS |
Su un VPS standalone, si applica il profilo Pubblico. Attiva le regole su tutti e 3 i profili per non lasciare nulla al caso.
🔍 Controllare lo stato del firewall prima di iniziare
Inizia sempre con un'analisi della situazione. Connettiti in RDP, apri PowerShell come amministratore.
Via PowerShell: stato completo dei 3 profili :
Get-NetFirewallProfile | Select Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Risultato atteso:
Enabled = Truesu tutti e 3 i profili. Se uno è aFalse, attivalo immediatamente.
Via l'interfaccia grafica :
Pannello di controllo → Sistema e sicurezza → Firewall di Windows Defender → controlla che ogni profilo mostri "Attivato".
Attivare il firewall se disattivato :
Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True
Controllare le azioni predefinite (consigliato) :
Set-NetFirewallProfile -Profile Domain,Private,Public `
-DefaultInboundAction Block `
-DefaultOutboundAction Allow
Blocca tutto il traffico in entrata per impostazione predefinita e consenti solo ciò che definisci esplicitamente: questa è la corretta postura di sicurezza.
🖱️ Creare una regola del firewall (metodo GUI)
🖥️ Accedere all'interfaccia Windows Defender Firewall con Sicurezza Avanzata
Due percorsi possibili :
Tasto Windows → digitare
wf.msc→ Invio.Pannello di controllo → Sistema e sicurezza → Firewall di Windows Defender → Impostazioni avanzate.
L'interfaccia mostra 3 sezioni: Regole di traffico in entrata, Regole di traffico in uscita, Regole di sicurezza della connessione.
➡️ Creare una regola in entrata (inbound)
Clic destro su Regole di traffico in entrata → Nuova regola.
Scegliere il tipo: Porta, Programma, Predefinita o Personalizzata.
Specificare il protocollo (TCP/UDP) e il numero di porta.
Azioni: Consenti la connessione o Blocca.
Selezionare i profili interessati (Dominio, Privato, Pubblico).
Dare un nome esplicito alla regola (es.:
Allow-HTTP-80-Inbound).
⬅️ Creare una regola in uscita (outbound)
La maggior parte delle guide si ferma alle regole in entrata. È un errore.
Clic destro su Regole di traffico in uscita → Nuova regola.
Stesso processo di una regola in entrata.
Utile per bloccare un processo o un IP di destinazione specifico.
Esempio concreto: bloccare le connessioni in uscita verso una porta o un IP sospetto senza toccare il resto del traffico.
🔧 Definire il tipo di regola
Tipo | Uso |
|---|---|
Porta | Aprire/bloccare una porta TCP o UDP specifica |
Programma | Consentire/bloccare un eseguibile (.exe) |
Predefinita | Attivare un gruppo di regole Windows integrate (RDP, condivisione file…) |
Personalizzata | Controllo totale: porta + programma + indirizzo IP sorgente/destinazione |
⚡ Creare una regola del firewall (metodo PowerShell)
PowerShell è il metodo da preferire su un VPS: scriptabile, riproducibile, auditabile. Tutti i comandi qui sotto richiedono una sessione PowerShell elevata (amministratore).
💻 Comandi essenziali New-NetFirewallRule
Struttura di base:
New-NetFirewallRule `
-DisplayName "Nome descrittivo" `
-Direction Inbound ` # o Outbound
-Protocol TCP `
-LocalPort 80 `
-Action Allow ` # o Block
-Profile Public,Private,Domain `
-Enabled True
🔒 Sicurezza RDP (porta 3389): limitare a un IP
Non lasciare mai RDP aperto a tutto Internet. Limitare al tuo IP fisso o al tuo range VPN.
# Bloccare RDP per tutti
New-NetFirewallRule `
-DisplayName "Block-RDP-All" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 3389 `
-Action Block `
-Profile Any
# Consentire RDP solo dal tuo IP
New-NetFirewallRule `
-DisplayName "Allow-RDP-MyIP" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 3389 `
-RemoteAddress "203.0.113.10" `
-Action Allow `
-Profile Any
⚠️ Ordine di applicazione: crea prima la regola Allow con il tuo IP, poi la regola Block. In caso di dubbio, testa da un'altra sessione RDP aperta prima di chiudere la prima.
🌐 Aprire HTTP/HTTPS (porte 80 e 443)
New-NetFirewallRule `
-DisplayName "Allow-HTTP-HTTPS-Inbound" `
-Direction Inbound `
-Protocol TCP `
-LocalPort @(80, 443) `
-Action Allow `
-Profile Any
🗄️ Aprire SQL Server (porta 1433): limitare a una subnet
SQL Server non deve mai essere esposto a Internet. Limitare alla tua subnet applicativa.
New-NetFirewallRule `
-DisplayName "Allow-SQLServer-LAN" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 1433 `
-RemoteAddress "10.0.0.0/24" `
-Action Allow `
-Profile Any
🔌 Aprire WinRM (5985/5986) per la gestione remota
WinRM consente la gestione PowerShell remota. Da limitare assolutamente a un IP di gestione.
# WinRM HTTP (5985) e HTTPS (5986)
New-NetFirewallRule `
-DisplayName "Allow-WinRM-Management" `
-Direction Inbound `
-Protocol TCP `
-LocalPort @(5985, 5986) `
-RemoteAddress "203.0.113.10" `
-Action Allow `
-Profile Any
🚫 Bloccare una porta o un IP specifico
# Bloccare una porta in entrata
New-NetFirewallRule `
-DisplayName "Block-Port-8080-Inbound" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 8080 `
-Action Block `
-Profile Any
# Bloccare un IP sorgente specifico (in entrata)
New-NetFirewallRule `
-DisplayName "Block-IP-Suspect" `
-Direction Inbound `
-RemoteAddress "198.51.100.42" `
-Action Block `
-Profile Any
# Bloccare una connessione in uscita verso un IP
New-NetFirewallRule `
-DisplayName "Block-Outbound-IP" `
-Direction Outbound `
-RemoteAddress "198.51.100.42" `
-Action Block `
-Profile Any
📋 Regole predefinite di Windows Server da conoscere
Windows Server include gruppi di regole pronte all'uso. Attivali per gruppo piuttosto che regola per regola.
Gruppi utili:
Gruppo | Uso |
|---|---|
| Consentire le connessioni RDP |
| Condivisione rete SMB |
| Gestione WMI remota |
| PowerShell Remoting / WinRM |
| Traffico di rete fondamentale (DNS, DHCP, ICMP) |
| Scoperta di rete |
Attivare un gruppo intero con netsh :
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
netsh advfirewall firewall set rule group="Windows Remote Management" new enable=Yes
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
Attivare un gruppo con PowerShell :
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
Enable-NetFirewallRule -DisplayGroup "Windows Remote Management"
📝 Attivare la registrazione del firewall
Senze log, è impossibile diagnosticare un blocco o rilevare un tentativo di intrusione.
Perché registrare:
Identificare quale regola blocca una connessione legittima.
Rilevare scansioni di porte o tentativi di brute-force.
Soddisfare i requisiti di audit di sicurezza.
Attivare i log tramite PowerShell (tutti i profili) :
Set-NetFirewallProfile -Profile Domain,Private,Public `
-LogFileName "%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log" `
-LogMaxSizeKilobytes 4096 `
-LogAllowed True `
-LogBlocked True
Attivare tramite netsh :
netsh advfirewall set allprofiles logging filename "%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log"
netsh advfirewall set allprofiles logging maxfilesize 4096
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable
Dove trovare i log:
Percorso predefinito: C:\Windows\System32\LogFiles\Firewall\pfirewall.log
Leggere i log: formato delle colonne chiave:
Colonna | Significato |
|---|---|
| Timestamp dell'evento |
|
|
| IP sorgente |
| IP di destinazione |
| Porta sorgente |
| Porta di destinazione |
| Direzione: |
Per leggere rapidamente le connessioni bloccate in PowerShell:
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
Where-Object { $_ -match "DROP" } |
Select-Object -Last 50
🔎 Auditare e gestire le regole esistenti
Questa è la sezione che non troverai da OVH o Amen. Gestire le regole esistenti è altrettanto importante quanto crearne di nuove.
Elencare tutte le regole attive:
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
Select-Object DisplayName, Direction, Action, Profile |
Sort-Object Direction
Elencare le regole attive con le porte associate:
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
ForEach-Object {
$rule = $_
$portFilter = $rule | Get-NetFirewallPortFilter
[PSCustomObject]@{
Name = $rule.DisplayName
Direction = $rule.Direction
Action = $rule.Action
Protocol = $portFilter.Protocol
LocalPort = $portFilter.LocalPort
}
} | Format-Table -AutoSize
Disattivare una regola senza eliminarla:
Disable-NetFirewallRule -DisplayName "Nome della regola"
Riattivare una regola:
Enable-NetFirewallRule -DisplayName "Nome della regola"
Eliminare una regola definitivamente:
Remove-NetFirewallRule -DisplayName "Nome della regola"
Esportare tutte le regole (backup):
netsh advfirewall export "C:\Backup\firewall-backup.wfw"
Importare le regole da un backup:
netsh advfirewall import "C:\Backup\firewall-backup.wfw"
💡 Buona pratica: esporta le tue regole prima di qualsiasi modifica importante. In caso di problemi, il ripristino richiede 10 secondi.
🚨 Risoluzione dei problemi: connessione rifiutata nonostante una regola attiva
La tua regola esiste, è attivata, ma la connessione fallisce comunque. Ecco i 5 scenari più frequenti.
🔍 Controllare se la porta è effettivamente aperta localmente
# Testare dal server stesso
[Upload...]
# Testare da una postazione esterna (sostituire l'IP)
Test-NetConnection -ComputerName 203.0.113.50 -Port 443 -InformationLevel DetailedSe TcpTestSucceeded : False → la porta non è accessibile. Se True → il problema proviene da un'altra parte (applicazione, DNS, ecc.).
⚠️ Conflitto tra regola in entrata e regola in uscita
Windows applica le regole Block con priorità su Allow. Se esiste una regola Block più generica, essa sovrascrive la tua regola Allow specifica.
Controlla le regole in conflitto:
# Regole Block attive in entrata
Get-NetFirewallRule -Direction Inbound -Action Block -Enabled True |
Select-Object DisplayName, Profile
📡 Profilo di rete errato (Pubblico vs Privato)
La tua regola è creata per il profilo Privato, ma il tuo VPS è in profilo Pubblico? Non si applica.
Controlla il profilo attivo:
Get-NetConnectionProfile | Select-Object Name, NetworkCategory
Correggi il profilo se necessario:
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private
🏗️ Firewall di rete OuiHeberg vs firewall di Windows: quale blocca?
Se Test-NetConnection dal server stesso ha successo ma fallisce dall'esterno, il blocco proviene dal firewall di rete OuiHeberg, non da Windows Defender Firewall.
Diagnosi rapida:
Dal VPS:
Test-NetConnection -ComputerName localhost -Port XXXX→ successo = Windows OK.Dal tuo computer:
Test-NetConnection -ComputerName <IP_VPS> -Port XXXX→ fallimento = firewall di rete.
In questo caso, controlla le regole del tuo firewall di rete nell'area clienti di OuiHeberg.
📋 Controllare i log per identificare la regola bloccante
# Cercare i DROP su una porta specifica (es. 8080)
Get-Content "C:\Windows\System32\LogFiles\Firewall\pfirewall.log" |
Where-Object { $_ -match "DROP" -and $_ -match "8080" }
La colonna path indica RECEIVE (in entrata) o SEND (in uscita). Questo conferma la direzione del blocco.
✅ Buone pratiche di sicurezza del firewall su VPS Windows
Principio del minimo privilegio: bloccare tutto per impostazione predefinita.
Inizia con DefaultInboundAction Block e apri solo le porte strettamente necessarie. Ogni porta aperta è una superficie di attacco.
Cambiare la porta RDP (3389 → porta personalizzata).
Cambiare la porta non sostituisce una buona regola di firewall, ma riduce il rumore delle scansioni automatizzate. Modifica la chiave di registro, poi crea la regola del firewall corrispondente:
# Esempio: RDP su porta 54321
New-NetFirewallRule `
-DisplayName "Allow-RDP-Custom-Port" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 54321 `
-RemoteAddress "203.0.113.10" `
-Action Allow `
-Profile Any
Consulta la nostra guida alla connessione RDP per la procedura completa di cambio porta.
Limitare RDP a un IP o a un intervallo di IP.
Se hai un IP fisso, questa è la misura più efficace. Se il tuo IP cambia, utilizza una VPN e consenti solo l'intervallo VPN.
Disattivare le regole non utilizzate.
Non eliminare: disattiva. Potrai riattivarle se necessario. Audita le regole attive ogni trimestre.
Audit regolare delle regole.
# Esportazione mensile delle regole attive
Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" } |
Export-Csv "C:\Audit\firewall-rules-$(Get-Date -Format 'yyyy-MM').csv" -NoTypeInformation
📊 Riepilogo: checklist firewall VPS Windows
Azioni | Comando PowerShell / Posizione GUI |
|---|---|
Controllare lo stato dei profili |
|
Attivare il firewall (3 profili) |
|
Bloccare tutto il traffico in entrata per impostazione predefinita |
|
Creare una regola in entrata (porta) |
|
Creare una regola in uscita (porta) |
|
Limitare RDP a un IP |
|
Attivare i log |
|
Elencare le regole attive |
|
Disattivare una regola |
|
Eliminare una regola |
|
Esportare le regole (backup) |
|
Testare una porta |
|
❓ FAQ
Qual è la differenza tra Windows Defender Firewall e un firewall di rete?
Il firewall di rete (livello infrastruttura, presso OuiHeberg) filtra il traffico prima che raggiunga il tuo VPS. Windows Defender Firewall opera a livello di OS: controlla le connessioni programma per programma, porta per porta, con regole per profilo di rete. Entrambi sono complementari: uno non sostituisce l'altro.
Come aprire una porta su un VPS Windows Server?
In PowerShell (amministratore):
New-NetFirewallRule -DisplayName "Allow-Port-XXXX" -Direction Inbound -Protocol TCP -LocalPort XXXX -Action Allow -Profile Any
Sostituisci XXXX con il numero di porta. Se la porta rimane inaccessibile dall'esterno, controlla anche il firewall di rete OuiHeberg nel tuo spazio clienti.
La mia applicazione non risponde nonostante una regola aperta: cosa fare?
Controlla in quest'ordine:
Test-NetConnection -ComputerName localhost -Port XXXX: la porta è in ascolto?Il profilo di rete attivo corrisponde al profilo della regola?
Una regola Block più generica non sovrascrive la tua regola Allow?
Il blocco proviene dal firewall di rete OuiHeberg (test dall'esterno)?
Controlla i log:
Get-Content pfirewall.log | Where-Object { $_ -match "DROP" }
È necessario attivare il firewall su tutti i profili (Dominio, Privato, Pubblico)?
Sì, sempre. Su un VPS, il profilo Pubblico è generalmente attivo. Ma se la configurazione di rete cambia (aggiunta di un'interfaccia, collegamento a un dominio), un altro profilo può attivarsi. Attivare i 3 profili garantisce una protezione continua qualunque sia la situazione.
Come salvare le mie regole del firewall di Windows Server?
netsh advfirewall export "C:\Backup\firewall-backup.wfw"
Per ripristinare:
netsh advfirewall import "C:\Backup\firewall-backup.wfw"
Pianifica questa esportazione in un'attività pianificata di Windows prima di ogni manutenzione.
Quale porta utilizza RDP per impostazione predefinita e come cambiarla?
RDP utilizza la porta TCP 3389 per impostazione predefinita. Per cambiarla:
Modifica la chiave di registro:
HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp→ valorePortNumber.Crea una nuova regola del firewall che consenta la nuova porta dal tuo IP.
Disattiva (o elimina) la regola sulla porta 3389.
Riavvia il servizio
TermService.
Consulta la nostra guida alla connessione RDP per la procedura dettagliata.



