Linux24 luglio 2026 5 visualizzazioni

UFW : configurare il firewall del vostro VPS Linux (Ubuntu/Debian)

UFW : configurare il firewall del vostro VPS Linux (Ubuntu/Debian)

Un server ben configurato espone solo i servizi strettamente necessari. Tutto il resto deve essere chiuso ed è precisamente il ruolo di un firewall. Su Linux, il filtraggio della rete si basa su netfilter, storicamente gestito da iptables, una sintassi potente ma nota per essere arida. UFW (Uncomplicated Firewall) è il layer ufficiale di Ubuntu che rende questo filtraggio accessibile: bastano pochi comandi leggibili per bloccare la tua macchina.

Questa guida ti accompagna passo dopo passo per installare e configurare UFW su un VPS Linux sotto Ubuntu o Debian: politiche predefinite, autorizzazione di SSH senza rischiare di bloccarti fuori, apertura delle porte web, regole avanzate, registrazione e il noto problema del bypass di UFW da parte di Docker.

Che cos'è UFW e perché usarlo?

UFW non è un firewall completo: è un'interfaccia semplificata sopra iptables/nftables. Dove iptables richiede righe complesse, UFW si accontenta di istruzioni del tipo ufw allow 443. Gestisce entrambe le direzioni del traffico in entrata (incoming) e in uscita (outgoing) e consente di filtrare per porta, per protocollo, per servizio nominato o per indirizzo sorgente.

Il principio di un buon firewall si riassume in una frase: bloccare tutto per impostazione predefinita, poi aprire solo il necessario. In pratica, si rifiutano tutte le connessioni in entrata, si autorizzano tutte le connessioni in uscita, poi si aggiunge un'eccezione per ogni servizio che si desidera rendere accessibile (SSH, HTTP, HTTPS…).

Requisiti

  • Un VPS sotto Ubuntu 22.04/24.04 o Debian 11/12 con accesso root o un utente sudo.
  • Un accesso SSH funzionante e soprattutto, la conoscenza della porta SSH utilizzata (22 per impostazione predefinita).
  • Un avviso da leggere prima di tutto: configurare male un firewall su un server remoto è il modo migliore per bloccarsi fuori. Segui l'ordine dei passaggi qui sotto alla lettera: si autorizza SSH prima di attivare UFW, mai il contrario.

Installare UFW su Ubuntu e Debian

Su Ubuntu, UFW è generalmente preinstallato. Su Debian, è necessario aggiungerlo. In entrambi i casi:

sudo apt update
sudo apt install -y ufw

Controlla lo stato del servizio. All'inizio, UFW è inattivo:

sudo ufw status

La risposta Status: inactive è normale: prima imposteremo le regole, poi lo attiveremo.

Definire le politiche predefinite

Iniziamo con la regola di base: rifiutare tutto ciò che entra, autorizzare tutto ciò che esce. È la base di un server sicuro.

sudo ufw default deny incoming
sudo ufw default allow outgoing

A questo punto, se attivassi UFW immediatamente, perderesti la tua connessione SSH. È per questo che il passaggio successivo è imperativo prima dell'attivazione.

Autorizzare SSH (da fare PRIMA di attivare UFW)

Autorizza il servizio SSH per non interrompere l'accesso:

sudo ufw allow OpenSSH

OpenSSH è un profilo applicativo predefinito che apre la porta 22. Puoi anche specificare direttamente la porta:

sudo ufw allow 22/tcp

Hai cambiato la porta SSH? È una buona pratica di sicurezza. In tal caso, sostituisci 22 con la tua porta reale, ad esempio sudo ufw allow 2222/tcp. Controlla la tua porta in /etc/ssh/sshd_config (direttiva Port) prima di attivare il firewall. Per approfondire il rafforzamento dell'accesso, consulta il percorso di sicurezza alla fine dell'articolo.

Attivare UFW

Una volta autorizzato SSH, attiva il firewall:

sudo ufw enable

UFW visualizza un avviso che indica che il comando potrebbe interrompere le connessioni SSH esistenti. Poiché hai autorizzato SSH poco prima, conferma con y. La tua connessione attuale rimane aperta.

Controllare lo stato e elencare le regole

Per uno stato dettagliato, inclusi le politiche predefinite e la registrazione:

sudo ufw status verbose

Per visualizzare le regole con il loro numero indispensabile per eliminarne una successivamente:

sudo ufw status numbered

Otterrai un output di questo tipo:

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

Aprire porte per i tuoi servizi

È l'uso quotidiano di UFW: aprire una porta per ogni servizio che esponi. UFW accetta diverse sintassi.

Per nome di servizio web (apre 80 e 443 in un colpo solo):

sudo ufw allow 'Nginx Full'

Questo profilo esiste non appena Nginx è installato; l'equivalente per Apache è 'Apache Full'. Se stai configurando un server web, completa con la nostra guida installare Nginx e PHP-FPM su un VPS.

Per numero di porta:

sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS
sudo ufw allow 25565/tcp   # esempio: server di gioco

Per intervallo di porte:

sudo ufw allow 6000:6007/tcp

Da un indirizzo sorgente specifico (aprire una porta solo a un'IP fidata):

sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp

Questo esempio autorizza MySQL (porta 3306) solo dall'IP 203.0.113.10, ideale per un database che non deve mai essere esposto a tutto Internet. Puoi anche mirare a un'intera sottorete in notazione CIDR (203.0.113.0/24).

I profili applicativi

UFW conosce dei "profili" che raggruppano le porte di un'applicazione, il che evita di dover ricordare i numeri. Elenca quelli disponibili sul tuo sistema:

sudo ufw app list

Troverai ad esempio OpenSSH, Nginx Full, Nginx HTTP, Nginx HTTPS, Apache Full… Per conoscere i dettagli delle porte coperte da un profilo:

sudo ufw app info 'Nginx Full'

Questi profili appaiono automaticamente non appena un software compatibile è installato. Rendono le tue regole più leggibili: sudo ufw allow 'Nginx Full' è più chiaro di sudo ufw allow 80,443/tcp.

Eliminare una regola

Due metodi. Il più sicuro passa attraverso il numero visualizzato da status numbered:

sudo ufw status numbered
sudo ufw delete 2

Puoi anche eliminare una regola riscrivendola, preceduta da delete:

sudo ufw delete allow 80/tcp

Regole avanzate: limitare le connessioni SSH

UFW offre una protezione integrata contro gli attacchi di forza bruta: la regola limit. Blocca temporaneamente un'IP che tenta troppe connessioni in un breve lasso di tempo (per impostazione predefinita, più di 6 tentativi in 30 secondi).

sudo ufw limit OpenSSH

È un complemento utile, ma volutamente basilare. Per una rilevazione fine e ban duraturi su tutti i tuoi servizi, associa UFW a Fail2ban (guida in arrivo in questo stesso percorso). I due strumenti sono perfettamente complementari: UFW decide quali porte sono aperte, Fail2ban decide quali IP meritano di essere bloccati.

Autorizzare, rifiutare o respingere: scegliere bene l'azione

UFW offre tre azioni principali per il traffico in entrata, da non confondere:

  • allow autorizza la connessione. È ciò che usi per i tuoi servizi pubblici (SSH, web).
  • deny blocca silenziosamente la connessione. Il pacchetto viene ignorato, senza risposta. L'attaccante non sa se la porta è chiusa o filtrata: questo è il comportamento raccomandato per un server esposto.
  • reject blocca la connessione ma restituisce un messaggio di rifiuto all'emittente. Utile internamente per una diagnosi rapida, meno discreto di fronte a una scansione.

Nella quasi totalità dei casi su un server pubblico, si mantiene la politica predefinita deny incoming e si aggiungono allow mirati. Il reject rimane riservato a situazioni specifiche in cui si vuole segnalare esplicitamente che una porta è chiusa.

Il grande inganno: UFW e Docker

Ecco il punto che sorprende di più gli amministratori, e una vera falla di sicurezza silenziosa. Docker bypassa UFW. Quando pubblichi una porta di contenitore (ad esempio docker run -p 8080:80), Docker scrive le proprie regole direttamente in iptables, a monte di quelle gestite da UFW. Risultato: la porta è accessibile da tutto Internet anche se ufw status afferma di bloccarla. Il tuo firewall mostra una protezione che non esiste.

La soluzione di riferimento è il progetto open source ufw-docker, che riconcilia i due. In sintesi:

  1. Aggiungi un blocco di configurazione dedicato alla fine di /etc/ufw/after.rules (il repository fornisce il contenuto esatto da copiare).
  2. Ricarica UFW: sudo ufw reload.
  3. Gestisci ora l'accesso ai contenitori con la sintassi dedicata, ad esempio:
sudo ufw route allow proto tcp from any to any port 8080

Finché questa configurazione non è in atto, considera che tutta porta pubblicata da Docker è aperta al mondo intero. Se utilizzi Docker sul tuo server, tratta questo punto come prioritario.

Registrazione

Per tracciare le connessioni rifiutate e diagnosticare un problema, attiva la registrazione:

sudo ufw logging on

Gli eventi vengono scritti in /var/log/ufw.log. Puoi regolare il livello (low, medium, high, full) a seconda del volume desiderato. Per un server in produzione, low è generalmente sufficiente e evita di saturare i log.

Disattivare o ripristinare UFW

Per disattivare temporaneamente il firewall:

sudo ufw disable

Per ripristinare tutto a zero e ripartire da una configurazione vuota (le regole vengono eliminate):

sudo ufw reset

Dopo un reset, non dimenticare di ri-autorizzare SSH prima di riattivare UFW, altrimenti ti bloccherai fuori.

Domande frequenti

UFW sostituisce iptables? No, lo pilota. UFW genera le regole iptables/nftables al tuo posto. I due non si escludono: UFW è semplicemente uno strato più leggibile.

Mi sono bloccato fuori, cosa fare? Usa la console di emergenza (KVM/VNC) fornita con il tuo VPS per connetterti al di fuori di SSH, poi correggi la regola o esegui sudo ufw disable. È proprio per evitare questa situazione che è necessario autorizzare SSH prima di attivare UFW.

È necessario aprire le porte in tcp o udp? La maggior parte dei servizi (SSH, HTTP, HTTPS) utilizza TCP. Alcuni servizi (VPN WireGuard, giochi, DNS) utilizzano UDP. Specifica il protocollo quando lo conosci: sudo ufw allow 51820/udp.

UFW protegge contro gli attacchi DDoS? Parzialmente. Filtra e può limitare le connessioni, ma un attacco volumetrico viene gestito a monte, a livello di rete. UFW rimane comunque un mattone indispensabile dell'igiene di base.

Il percorso di sicurezza del tuo server

Un firewall correttamente configurato è il secondo passo per un server ben difeso. Per completare il processo sul tuo VPS Linux, segui il percorso completo:

  1. Chiavi SSH sostituisci la password con un'autenticazione tramite chiavi (guida in arrivo).
  2. UFW chiudi tutte le porte non necessarie (sei qui).
  3. Fail2ban banna automaticamente gli attaccanti che insistono (guida in arrivo).
  4. Certbot cripta i tuoi servizi con un certificato SSL Let's Encrypt (guida in arrivo).

Trova tutti i nostri tutorial nella documentazione Linux. Con UFW in atto, il tuo server espone solo ciò che hai esplicitamente autorizzato, la base di ogni configurazione seria.