Tutorial > Come installare e configurare UFW Firewall su Ubuntu 20.04

Come installare e configurare UFW Firewall su Ubuntu 20.04

Pubblicato il: 17 maggio 2021

Firewall Sicurezza Ubuntu UFW

Introduzione

Alla base di qualsiasi Cloud Server vi è sempre uno strumento di protezione che, affidandosi ad alcune regole, permette la comunicazione del server da e verso l’esterno. Questo componente software prende il nome di Firewall e rappresenta la prima barriera di sicurezza per prevenire l’accesso al tuo server da parte di utenti non autorizzati o semplicemente per assicurarsi che un determinato servizio non sia raggiungibile dall’esterno della propria macchina. 

UFW, acronimo di Uncomplicated Firewall, è uno dei software più utilizzati per gestire un firewall su Linux, da linea di comando, in maniera semplice e intuitiva.

In questo tutorial imparerai a installare e configurare correttamente UFW sul tuo server Ubuntu 20.04.

Per iniziare dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installare UFW Firewall su Ubuntu 20.04

UFW è un software preinstallato nella maggior parte delle distribuzioni Linux. Qualora non dovesse essere già installato sul tuo server Ubuntu 20.04, puoi comunque installarlo digitando il comando:

 sudo apt-get install ufw 

UFW può lavorare gestendo sia indirizzi IPV4, abilitati di default, sia IPV6 qualora necessario. Se dovessi aver bisogno di abilitare anche gli IPV6, puoi modificare questa opzione dal file “/etc/default/ufw”. 

Per poter apportare questa modifica apri il file con l'editor nano:

 sudo nano /etc/default/ufw 

Imposta quindi su “yes” la voce “IPV6”. 

Abilitare IPV6

Al termine della modifica, salva e chiudi il documento (CTRL + X / Y / Invio).

La modifica avrà effetto dal prossimo riavvio di UFW. Per riavviare subito il firewall e rendere operative le modifiche, puoi digitare:

 sudo ufw reload 

Configurazione base del Firewall

In una fase iniziale è buona norma bloccare ogni tipo di comunicazione dall'esterno verso il server cloud. In questa maniera sarà più facile sbloccare in seguito le comunicazioni con altre macchine, identificate mediante il loro IP, o su determinate porte o servizi.

Allo stesso modo bisogna abilitare il traffico uscente per il server, per accertarsi che le applicazioni, che girano sul proprio server, possano interrogare servizi esterni.

Per bloccare ogni forma di comunicazione VERSO il server digita:

 sudo ufw default deny incoming 

Per consentire ogni forma di comunicazione in uscita DAL server digita:

  sudo ufw default allow outgoing
Impostazioni iniziale del firewall

Consentire la comunicazione SSH

Spesso l’interazione con il proprio server avviene mediante una connessione SSH. Questa tuttavia rientra tra le connessioni in entrata che sono state bloccate, proprio perchè vi è un tentativo di comunicazione VERSO il Server.

È necessario quindi aggiungere questa tipologia di connessione tra le regole di UFW, che permettono di sovrascrivere le politiche standard definite in precedenza per il firewall.

Per consentire quindi le connessioni SSH al server, si può digitare uno dei due comandi:

sudo ufw allow ssh
sudo ufw allow 22

Il fatto che si possano utilizzare due diversi comandi per poter ottenere lo stesso identico effetto è dato dal fatto che in un file di configurazione di UFW è presente un'associazione tra la parola “ssh” e la sua relativa porta (22). Aprendo il file “/etc/services” è possibile infatti visualizzare l'elenco di tutte queste associazioni.

nano /etc/services
Associazione servizi e porte

Abilitare una porta o connessione da un IP

Non esiste un servizio associato di default a ogni porta. Di conseguenza, qualora si volesse consentire il traffico su una porta diversa da quelle standard, basterà digitare:

sudo ufw allow port_number

N.B. Sostituisci chiaramente “port_number” con il numero della porta che vuoi sbloccare.

Potresti inoltre voler abilitare il traffico TRA il tuo server e un’altra macchina (comunicazione bidirezionale) aggiungendo una regola ad hoc.

Per accettare tutto il traffico proveniente da un indirizzo IP, indipendentemente dalla porta sulla quale esso voglia comunicare, ti basterà digitare:

sudo ufw allow from ip_address 

Qualora volessi limitare la comunicazione di quella macchina a una sola porta del tuo server, potrai usare il seguente comando:

sudo ufw allow from ip_address to any port port_number

N.B. Sostituisci il parametro “ip_address” con l’IP della macchina da voler autorizzare e “port_number” con la porta da voler ‘sbloccare’.

Ad esempio, se volessi abilitare una macchina con IP “87.197.5.125” per la connessione SSH al tuo server, dovresti digitare:

sudo ufw allow from 87.197.5.125 to any port 22 

Per abilitare un intervallo di porte, definendone inoltre la tipologia di comunicazione (TCP oppure UDP), il comando da eseguire rispetta la seguente sintassi:

sudo ufw allow start_port:end_port/tcp
sudo ufw allow start_port:end_port/udp 

N.B. Sostituisci “start_port” con il numero della porta con la quale far partire l’intervallo ed “end_port” con il numero dell’ultima porta concessa.

Se tutto è andato a buon fine, UFW notificherà l’avvenuta aggiunta della regola mediante un messaggio.

Aggiunta intervallo porte

Abilitare UFW Firewall all'avvio

Proprio perchè si tratta del primo strumento di sicurezza tra il tuo Server e il resto della rete Internet, è importante che UFW venga eseguito sempre all’avvio del sistema.

Per abilitare l'esecuzione automatica del firewall ti basterà eseguire il comando:

sudo ufw enable

N.B. Questo comando potrebbe causare una temporanea disconnessione SSH, quindi prima di eseguirlo assicurati di aver consentito la connessione SSH tra le regole del firewall, come illustrato in precedenza. 

Una volta eseguito il comando, ti verrà notificato quanto segnalato mediante un messaggio. Digita comunque “y” e premi "Invio".

Abilitazione UFW

Consentire richieste HTTP, HTTPS e FTP

HTTP e HTTPS sono dei protocolli che comunicano su delle porte precise: così come SSH necessita della porta 22, HTTP utilizza la porta 80 mentre HTTPS la porta 443.

Per consentire la comunicazione HTTP puoi digitare uno dei due comandi:

sudo ufw allow http
sudo ufw allow 80

Analogamente, per HTTPS invece devi digitare:

sudo ufw allow https
sudo ufw allow 443

FTP è invece un protocollo di trasferimento file che si basa sulla porta 21. Per abilitare questo tipo di comunicazione, puoi eseguire indistintamente uno dei seguenti comandi:

sudo ufw allow ftp
sudo ufw allow 21/tcp

Negare una connessione esistente

Se, come consigliato all'inizio della guida, hai negato tutte le connessioni verso il tuo server, arrivato a questo punto sarà possibile comunicare con il tuo Server solo tramite le porte specifiche aggiunte tra le regole.

A volte può comunque servire negare connessioni specifiche su una determinata porta o basate su un indirizzo IP, perché magari il tuo server viene attaccato da lì. In questo caso puoi utilizzare la stessa sintassi che hai utilizzato per abilitare una comunicazione, sostituendo però l’opzione allow con deny.

Ipotizzando che tu voglia ad esempio negare la connessione HTTP, ti basterà digitare il comando:

sudo ufw deny http
Esempio cancellazione regole

Analogamente, per non permettere la comunicazione da parte di una determinata macchina, ti basterà negarle l’accesso mediante:

sudo ufw deny from ip_address

N.B. Sostituisci “ip_address” con l’IP della macchina da voler bloccare.

Visualizzare le regole esistenti e cancellarle

Qualora volessi visualizzare un riepilogo delle regole definite per UFW sul tuo Server, ti basterà richiamare il comando:

sudo ufw status numbered 
Lista Regole

Tramite questo comando ti viene mostrato l’elenco delle regole create per il tuo firewall, ciascuna identificata da un numero univoco.

Qualora volessi rimuovere una regola, ti basterà utilizzare il comando delete.

Supponendo di voler cancellare la regola per la comunicazione HTTPS (la numero 2), il comando da dover eseguire sarebbe il seguente:

sudo ufw delete 2 

Ti verrà chiesto conferma prima che venga cancellata. Se ne sei sicuro digita “y” e poi "Invio". Qualora avessi sbagliato, puoi sempre digitare “n” per annullare l'operazione.

Questa operazione cancellerà la comunicazione HTTPS per IPV4, ma non quella per IPV6 (che nel precedente screenshot è rappresentata dalla regola numero 6). Infatti tutte le regole precedentemente create sono state generate sia per IPV4 sia per IPV6: laddove leggi “(v6)” si tratta regole per IPV6.

Per cancellare anche la regola per IPV6, consulta nuovamente l’elenco delle regole esistenti poiché il suo codice identificativo sarà cambiato.

Abilitare, disabilitare o ripristinare UFW

Precedentemente è stato mostrato come abilitare UFW all’avvio del Server mediante il comando:

sudo ufw ufw enable 

Per rimuoverlo dall’avvio automatico basterà invece utilizzare il comando disable:

sudo ufw ufw disable

Qualora necessitassi di resettare le impostazioni di UFW e rimuovere quindi ogni regola e politica di accettazione/negazione di connessione, puoi farlo mediante il comando reset

sudo ufw ufw reset

Log di UFW Firewall

Per questione di sicurezza potrebbe essere necessario abilitare il log dei dati di UFW, così da controllare quali connessioni siano state effettuate verso il tuo Server e verificare la giusta definizione delle regole.

Per abilitare il logging dei dati, il comando da dover eseguire è:

sudo ufw logging on

Al contrario, per disabilitare il logging digita:

sudo ufw logging off

I log di UFW sono consultabili dal file “/var/log/ufw.log”

nano /var/log/ufw.log 

Conclusione

Il Firewall è un componente molto importante quando si tratta di gestire e mettere in sicurezza il tuo Cloud Server. Abilitando UFW, tutte le comunicazioni da e verso il tuo server Linux Ubuntu 20.04, transitano attraverso questo strumento, che può pertanto proteggerti da attacchi indesiderati e tentativi di connessione da parte di utenti non autorizzati.

Si consiglia di prestare particolare attenzione alla configurazione del Firewall UFW poiché dalle regole impostate può dipendere sia la sicurezza del server che il corretto funzionamento dei propri servizi.