Server Dedicati & VPS22 maggio 2026 1 visualizzazione

Configurer il firewall di Windows Server su un VPS

Configurer il firewall di Windows Server su un VPS

Configurare il firewall di Windows Server su un VPS

5 passaggi per proteggere il firewall del tuo VPS Windows

  1. Controllare lo stato : Get-NetFirewallProfile | Select Name, Enabled in PowerShell.

  2. Attivare sui 3 profili : Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True.

  3. Creare una regola in entrata tramite l'interfaccia wf.msc o New-NetFirewallRule in PowerShell.

  4. Limitare RDP (3389) solo al tuo IP sorgente.

  5. 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
ImmagineRisultato atteso: Enabled = True su tutti e 3 i profili. Se uno è a False, 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)

Immagine🖥️ 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.

Immagine

➡️ Creare una regola in entrata (inbound)

  1. Clic destro su Regole di traffico in entrataNuova regola.

  2. Scegliere il tipo: Porta, Programma, Predefinita o Personalizzata.

  3. Specificare il protocollo (TCP/UDP) e il numero di porta.

  4. Azioni: Consenti la connessione o Blocca.

  5. Selezionare i profili interessati (Dominio, Privato, Pubblico).

  6. 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.

  1. Clic destro su Regole di traffico in uscitaNuova regola.

  2. Stesso processo di una regola in entrata.

  3. 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

Remote Desktop

Consentire le connessioni RDP

File and Printer Sharing

Condivisione rete SMB

Windows Management Instrumentation (WMI)

Gestione WMI remota

Windows Remote Management

PowerShell Remoting / WinRM

Core Networking

Traffico di rete fondamentale (DNS, DHCP, ICMP)

Network Discovery

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

date / time

Timestamp dell'evento

action

ALLOW o DROP

src-ip

IP sorgente

dst-ip

IP di destinazione

src-port

Porta sorgente

dst-port

Porta di destinazione

path

Direzione: SEND (in uscita) o RECEIVE (in entrata)

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 Detailed

Se 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:

  1. Dal VPS: Test-NetConnection -ComputerName localhost -Port XXXX → successo = Windows OK.

  2. 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

Get-NetFirewallProfile | Select Name, Enabled

Attivare il firewall (3 profili)

Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled True

Bloccare tutto il traffico in entrata per impostazione predefinita

Set-NetFirewallProfile -DefaultInboundAction Block

Creare una regola in entrata (porta)

New-NetFirewallRule -Direction Inbound -LocalPort XX -Action Allow

Creare una regola in uscita (porta)

New-NetFirewallRule -Direction Outbound -LocalPort XX -Action Block

Limitare RDP a un IP

-LocalPort 3389 -RemoteAddress "X.X.X.X" -Action Allow

Attivare i log

Set-NetFirewallProfile -LogBlocked True -LogAllowed True

Elencare le regole attive

Get-NetFirewallRule | Where-Object { $_.Enabled -eq "True" }

Disattivare una regola

Disable-NetFirewallRule -DisplayName "Nome"

Eliminare una regola

Remove-NetFirewallRule -DisplayName "Nome"

Esportare le regole (backup)

netsh advfirewall export "C:\Backup\fw.wfw"

Testare una porta

Test-NetConnection -ComputerName localhost -Port XXXX


❓ 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:

  1. Test-NetConnection -ComputerName localhost -Port XXXX: la porta è in ascolto?

  2. Il profilo di rete attivo corrisponde al profilo della regola?

  3. Una regola Block più generica non sovrascrive la tua regola Allow?

  4. Il blocco proviene dal firewall di rete OuiHeberg (test dall'esterno)?

  5. 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:

  1. Modifica la chiave di registro: HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp → valore PortNumber.

  2. Crea una nuova regola del firewall che consenta la nuova porta dal tuo IP.

  3. Disattiva (o elimina) la regola sulla porta 3389.

  4. Riavvia il servizio TermService.

Consulta la nostra guida alla connessione RDP per la procedura dettagliata.


🔗 Fonti utili