Configurare UFW su Ubuntu 24.04 senza perdere l'accesso SSH

Guida pratica alla configurazione di UFW su Ubuntu 24.04: proteggere il server, mantenere attivo l'accesso SSH, limitare le sorgenti autorizzate e verificare le regole senza rischiare di restare bloccati fuori dal sistema.

Configurare UFW su Ubuntu 24.04 senza perdere l'accesso SSH

Attivare un firewall su un server remoto richiede una precauzione fondamentale: autorizzare la connessione SSH prima di abilitare il firewall. In caso contrario, la sessione corrente potrebbe interrompersi e il server diventare irraggiungibile. In questa guida configureremo UFW su Ubuntu 24.04 LTS con un metodo prudente, verificabile e facilmente reversibile.

Che cos'è UFW

UFW, acronimo di Uncomplicated Firewall, è l'interfaccia semplificata con cui Ubuntu permette di gestire il firewall Linux. Consente di impostare politiche predefinite, aprire soltanto i servizi necessari, limitare l'accesso in base all'indirizzo IP e consultare regole numerate senza dover scrivere direttamente configurazioni complesse.

UFW è adatto alla maggior parte dei server singoli. Non sostituisce la corretta configurazione dei servizi, l'installazione degli aggiornamenti di sicurezza o l'autenticazione SSH tramite chiave: costituisce un ulteriore livello di difesa.

Prerequisiti e precauzioni

  • Ubuntu Server 24.04 LTS e un account con privilegi sudo;
  • accesso SSH funzionante;
  • conoscenza della porta sulla quale ascolta SSH;
  • preferibilmente, accesso alla console del provider o alla console fisica per il recupero d'emergenza.

Prima di procedere, apri una seconda sessione SSH e lasciala connessa. La prima servirà per applicare le modifiche; la seconda permetterà di verificare che l'accesso continui a funzionare. Evita di chiudere entrambe le sessioni finché il test non è terminato.

1. Verificare la porta SSH effettiva

Non dare per scontato che SSH utilizzi la porta 22. Controlla prima le porte in ascolto:

sudo ss -lntp | grep sshd

Puoi anche interrogare la configurazione finale calcolata da OpenSSH:

sudo sshd -T | grep '^port '

Se il comando restituisce port 22, negli esempi successivi puoi usare il profilo OpenSSH o la porta 22/tcp. Se compare, per esempio, port 2222, sostituisci 22 con 2222 in tutte le regole.

2. Installare UFW e controllarne lo stato

sudo apt update
sudo apt install ufw
sudo ufw status verbose

Su una nuova installazione è normale leggere Status: inactive. Prima di abilitarlo, controlla anche i profili applicativi disponibili:

sudo ufw app list
sudo ufw app info OpenSSH

Il profilo OpenSSH normalmente autorizza la porta TCP 22. Se hai modificato la porta di SSH, crea invece una regola esplicita sulla porta effettiva.

3. Impostare le politiche predefinite

Per un server esposto a Internet, una base ragionevole consiste nel negare le nuove connessioni in ingresso e consentire quelle in uscita:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Queste politiche non vanno ancora applicate attivando UFW: manca la regola che tutela l'accesso amministrativo.

4. Autorizzare SSH prima di abilitare il firewall

Con SSH sulla porta standard puoi usare il profilo applicativo:

sudo ufw allow OpenSSH comment 'Accesso amministrativo SSH'

In alternativa, specifica porta e protocollo:

sudo ufw allow 22/tcp comment 'Accesso amministrativo SSH'

Se il servizio ascolta sulla porta 2222:

sudo ufw allow 2222/tcp comment 'SSH porta personalizzata'

Controlla la regola appena aggiunta:

sudo ufw show added

Questo passaggio è il più importante dell'intera procedura. La documentazione di UFW raccomanda espressamente di aggiungere la regola SSH prima di eseguire ufw enable, perché l'attivazione ricostruisce le catene del firewall e può interferire con connessioni remote esistenti.

5. Restringere SSH a un indirizzo o a una rete

Se disponi di un indirizzo IP pubblico statico, puoi ridurre ulteriormente l'esposizione. Supponendo che l'IP autorizzato sia 203.0.113.10:

sudo ufw allow proto tcp from 203.0.113.10 to any port 22 comment 'SSH da IP amministratore'

Per autorizzare una rete aziendale:

sudo ufw allow proto tcp from 203.0.113.0/24 to any port 22 comment 'SSH rete aziendale'

Attenzione: non applicare questa restrizione se il tuo provider assegna un IP dinamico, se amministri il server da reti diverse o se non sei certo dell'indirizzo sorgente visto dal server. Inizia con la regola generale, verifica l'accesso e restringila soltanto dopo.

6. Abilitare UFW in sicurezza

Mantenendo aperta la sessione corrente, attiva il firewall:

sudo ufw enable

Conferma quando richiesto e verifica immediatamente:

sudo ufw status verbose
sudo ufw status numbered

Ora apri una nuova sessione SSH da un altro terminale. Esegui un comando innocuo, ad esempio hostnamectl, per confermare che la connessione sia pienamente operativa. Non chiudere la sessione originale finché questo controllo non è riuscito.

7. Aprire solamente i servizi necessari

Un web server pubblico richiede normalmente HTTP e HTTPS:

sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

Se sono presenti profili Nginx, puoi ispezionarli prima di usarli:

sudo ufw app list
sudo ufw app info 'Nginx Full'
sudo ufw allow 'Nginx Full'

Apri una porta soltanto se il servizio corrispondente è realmente necessario. Database come MySQL non dovrebbero essere esposti indiscriminatamente a Internet. Se un'applicazione su un host specifico deve raggiungere MySQL, limita la sorgente:

sudo ufw allow proto tcp from 10.10.0.25 to any port 3306 comment 'MySQL da application server'

8. Limitare i tentativi ripetuti verso SSH

UFW offre l'azione limit, pensata per attenuare tentativi di connessione troppo frequenti:

sudo ufw limit 22/tcp comment 'Limita tentativi SSH'

Prima di aggiungerla, elimina l'eventuale regola generale duplicata oppure controlla attentamente l'ordine: viene applicata la prima regola corrispondente. Visualizza le regole numerate:

sudo ufw status numbered

Per rimuovere, ad esempio, la regola numero 3:

sudo ufw delete 3

La limitazione UFW non sostituisce l'autenticazione con chiave, la disabilitazione del login root e strumenti come Fail2ban. Inoltre può risultare inadatta quando molti utenti legittimi arrivano dallo stesso NAT.

9. Gestire IPv6 correttamente

Controlla l'impostazione:

grep '^IPV6=' /etc/default/ufw

Con IPV6=yes, una regola generica come ufw allow 22/tcp viene normalmente applicata sia a IPv4 sia a IPv6. Se il server possiede connettività IPv6 pubblica, non ignorarla: disabilitare le regole IPv6 senza disabilitare correttamente IPv6 sul sistema può lasciare un percorso non protetto o creare malfunzionamenti difficili da diagnosticare.

10. Logging e diagnostica

Abilita un livello di log moderato:

sudo ufw logging low

Consulta gli eventi tramite il journal:

sudo journalctl -k --grep='UFW' --since '30 minutes ago'

Su sistemi configurati con rsyslog potresti trovare anche /var/log/ufw.log. Evita livelli elevati su server trafficati: possono produrre molti dati e consumare rapidamente spazio su disco.

Per confrontare servizi in ascolto e regole del firewall:

sudo ss -lntup
sudo ufw status numbered
sudo ufw show listening

Ricorda che una porta in ascolto non è necessariamente raggiungibile dall'esterno; allo stesso modo, una porta consentita dal firewall non risponde se nessun servizio è in ascolto.

11. Modificare o eliminare le regole

Le regole possono essere eliminate ripetendo la sintassi originale:

sudo ufw delete allow 80/tcp

Oppure usando il numero mostrato da status numbered. Dopo ogni modifica verifica sempre lo stato:

sudo ufw status verbose

Per applicare modifiche ai file di configurazione usa:

sudo ufw reload

Non eseguire ufw reset alla leggera: il comando disabilita il firewall e ripristina le impostazioni iniziali, eliminando le regole definite.

Procedura di recupero se SSH non risponde

Se una nuova sessione SSH non riesce a collegarsi, mantieni aperta quella esistente e controlla porta, servizio e regole:

sudo systemctl status ssh --no-pager
sudo ss -lntp | grep sshd
sudo ufw status numbered

Se individui una regola errata, eliminala e aggiungi quella corretta. Come misura temporanea, soltanto mentre hai ancora una console affidabile:

sudo ufw disable

Se tutte le sessioni sono già chiuse, utilizza la console web o di emergenza offerta dal provider. Per questo è essenziale verificarne la disponibilità prima dell'intervento.

Checklist finale

  • la porta SSH effettiva è stata verificata;
  • la regola SSH è stata aggiunta prima di abilitare UFW;
  • una seconda connessione SSH è stata testata con successo;
  • le politiche predefinite negano l'ingresso e consentono l'uscita;
  • sono aperte soltanto le porte dei servizi necessari;
  • IPv4 e IPv6 sono gestiti in modo coerente;
  • logging e spazio su disco vengono controllati;
  • è disponibile una console di recupero.

Conclusione

Una buona configurazione UFW non consiste nell'aggiungere molte regole, ma nel definire una superficie di rete minima e comprensibile. Su un server Ubuntu 24.04 remoto, l'ordine corretto è: verificare SSH, autorizzarlo, impostare le politiche, abilitare il firewall e provare una seconda connessione. Questo semplice metodo riduce drasticamente il rischio di perdere l'accesso durante la messa in sicurezza.

Share

What's Your Reaction?

Like Like 0
Cancella like Cancella like 0
Amore Amore 0
Buffo Buffo 0
arrabbiato arrabbiato 0
Sad Sad 0
Wow Wow 0