UFW Uncomplicated Firewall Ubuntu

Come installare e configurare UFW su Ubuntu 20.04

Ubuntu è una distribuzione Linux che non ha certo bisogno di presentazioni: lanciata nell’ormai lontano 2004, si è dimostrata una distribuzione solida, robusta e facile da usare, riuscendo a ritagliarsi uno spazio di assoluto rilievo in ambito desktop e anche in ambito server.

Che gestisce server che ospitano siti web sa bene quanto problematica sia la sicurezza: un passo fondamentale per garantire la stabilità e l’integrità del sistema è fare un buon uso del firewall.

Per fortuna il mondo UNIX/Linux ha decisamente fatto sempre molto bene sotto questo aspetto: basti ricordare che i principali sistemi software del genere sono nati e/o derivati in ambiente UNIX/BSD e Linux.

Nel mondo Linux in particolare si utilizza un ottimo prodotto chiama UFW, acronimo di Uncomplicated Firewall. Intendiamoci: un corretto uso e configurazione del firewall ovviamente non vi metterà mai al riparo da tutti i problemi di sicurezza che oggi affliggono le comunicazioni, tuttavia per chi tiene in piedi un server web, saper mettere le mani sul firewall è un punto di partenza assolutamente irrinunciabile.

In questo articolo vedremo come utilizzarlo al meglio su Ubuntu 20.04 Server.

Verificare che UFW sia in esecuzione

UFW è installato di default su Ubuntu, ma non è detto che sia automaticamente attivo, anzi di default è disattivato: la cosa, infatti, dipende essenzialmente da chi e come ha fatto l’installazione del sistema. Per accertarci che UFW sia installato e che sia necessario attivarlo digitiamo il seguente comando:

sudo ufw status

dopo il quale potremmo ricevere il seguente output:

Status: inactive

Come previsto, UFW è correttamente installato ma inattivo. Procediamo quindi alla sua attivazione e, come da prassi, partiamo intanto chiudendo TUTTO quanto non è strettamente necessario al corretto funzionamento del sistema: potremo sempre aprire le porte necessarie all’occorrenza, quando magari il nostro server avrà nuovi servizi e nuove funzionalità da erogare.

Questo splendido strumento ha il grande pregio di riconosce automaticamente le applicazioni Linux installate che hanno bisogno di porte particolari per funzionare, come ad esempio i web server, e quindi permette di configurare le relative regole con grande facilità.

Partiamo quindi bloccando tutte le connessioni in entrata (tranne ovviamente quella sulla porta 22, indispensabile a concederci l’accesso via SSH) e consentiamo per adesso solo le connessioni in uscita.

sudo ufw allow ssh

Con il comando precedente abbiamo abilitato espressamente la porta 22 per il protocollo SSH.
Bene, adesso possiamo procedere a chiudere tutto il resto:

ufw default deny incoming
ufw default allow outgoing

NOTA: se abbiamo la buona abitudine di connetterci per le nostre sessioni di amministrazione sempre dalla stessa postazione, con IP statico, possiamo ulteriormente incrementare il livello di sicurezza del nostro server impostando la regola che consente le connessioni SSH solo a determinati indirizzi IP. Quindi se avete un indirizzo IP statico, ad esempio 200.100.200.100, mentre il vostro server si trova all’indirizzo 220.100.200.050, potete impostare la seguente regola, che impedirà qualsiasi accesso SSH da indirizzi IP differenti da quello impostato:

sudo ufw allow proto tcp from 202.54.2.5 to 172.24.13.45 port 22

Ovviamente gli indirizzi IP dovranno essere cambiati con quelli della vostra connessione e del vostro server. Se non avete un indirizzo IP statico invece lasciate perdere il comando precedente e procedete pure. Inutile ricordarvi che è sempre bene impostare una password MOLTO complicata per l’accesso al vostro server: non si sa mai…

Sei preoccupato per la sicurezza dei tuoi dati?

Scopri cosa possiamo fare per te.

Avviare il firewall

Contrariamente a quanto possiamo pensare, nonostante siano già state impostate diverse regole, UFW non è ancora in esecuzione come servizio (demone). Per proteggere il nostro sistema sarà quindi necessario abilitarlo, con il seguente comando:

sudo ufw enable

l’output ci avviserà che UFW è stato correttamente abilitato. Verifichiamo lanciando lo stesso comando descritto all’inizio di questa guida, ovvero

sudo ufw status

dopo il quale, a differenza di quanto avvenuto prima, riceveremo il seguente output:

Status: active

Una volta che UFW è stato esplicitamente abilitato, esso continuerà a funzionare come demone anche in seguito ad eventuali riavvi del sistema. Assicuriamoci di questa condizione facendo una verifica con il comando systemctl:

sudo systemctl status ufw.service

Ovviamente, qualora per qualsiasi motivo volessimo disabilitare UFW, magari perché ne stiamo usando un altro o perché il nostro server è protetto a monte da un altro sistema firewall, possiamo digitare il seguente comando:

sudo ufw disable

in seguito al quale riceveremo in output un messaggio del genere:

Firewall stopped and disabled on system startup

Ovviamente nel seguito daremo per scontate che vogliate continuare ad utilizzarlo 😊

Aprire porte specifiche

È molto probabile che, per uso server, la nostra distribuzione si occuperà di ospitare siti o applicazioni web e quindi ospiterà uno o più webserver, come Apache o NGinx. Assicuriamoci quindi di garantire a questi strumenti la piena raggiungibilità dall’esterno, aprendo le porte 80 (HTTP) e 443 (HTTPS):

sudo ufw allow 80/tcp comment 'accept Apache'
sudo ufw allow 443/tcp comment 'accept HTTPS connections'

Aprire intervalli di porte

Se avessi bisogno di aprire un intervallo (o range) abbastanza esteso di porte, ad esempio tutte quelle che vanno da 20000 a 21000, ovviamente non sarà necessario lanciare 1000 volte il comando “allow”, ma useremo la seguente sintassi:

sudo ufw allow 20000:21000/tcp
sudo ufw allow 20000:21000/udp

In questo tutorial ovviamente i comandi hanno scopo puramente didattico, ma come sempre, per motivi di sicurezza, non smetteremo mai di raccomandare che bisogna aprire SOLO le porte assolutamente indispensabili ad offrire i servizi del nostro server, e che quindi la loro apertura va sempre fatta con parsimonia.
Abilitare connessioni da indirizzi specifici

Come visto prima, nel caso in cui la nostra postazione di lavoro sia dotata di un IP statico, è buona norma utilizzare la funzionalità che consente a UFW di abilitare la connessione verso determinate porte solo da un certo indirizzo IP, ad esempio:

sudo ufw allow from 200.100.200.100

possiamo impostare ad esempio anche una regola che ci consente di abilitare un determinato indirizzo IP ad accedere attraverso una determinata porta:

sudo ufw allow from 200.100.200.100 to any port 25 proto tcp

Bloccare connessioni in ingresso da determinati IP o su determinate porte

Cosi come possiamo concedere l’accesso ad indirizzi specifici e su porte specifiche, possiamo anche negare l’accesso a determinati indirizzi IP, magari perché ci siamo resi conto, dai log del nostro server, che un determinato indirizzo ha tentato numerosi accessi, e quindi probabilmente si è trattato di un tentativo di attacco.

Con il seguente comando impediamo all’indirizzo 200.10.20.30 qualsiasi accesso

sudo ufw deny from 200.10.20.30

Con il seguente comando impediamo l’accesso da IP/subnet specifici:

sudo ufw deny from 200.10.20.30/29

possiamo anche impedire un accesso da un determinato indirizzo verso una determinata porta e su uno specifico protocollo:

sudo ufw deny from 1.1.1.2 to any port 22 proto tcp

Hai bisogno di rafforzare la sicurezza informatica della tua azienda?

Scopri cosa possiamo fare per te.

Verificare lo stato del firewall e le regole attive

Nel caso in cui avessimo dimenticato (gravissimo!) quali porte sono aperte sul nostro firewall, possiamo verificare facilmente con il consueto comando sudo ufw status, che ci restituirà un output del genere:

Status: active
 
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                   # accept Apache
443/tcp                    ALLOW       Anywhere                   # accept HTTPS connections
20000:21000/tcp            ALLOW       Anywhere                  
20000:21000/udp            ALLOW       Anywhere                  
Anywhere                   ALLOW       200.100.200.100             
25/tcp                     ALLOW       200.100.200.100             
222.222.222.222 25/tcp     ALLOW       200.100.200.100             
Anywhere                   DENY        200.10.20.30                
Anywhere                   DENY        200.10.20.30/29            
22/tcp                     DENY        1.1.1.2       

Cancellare delle regole su UFW

Ovviamente, così come sono state impostate, le regole possono anche essere cancellate. Un sistema comodo per farlo e utilizzare l’output con la numerazione. Se infatti lanciate il comando

sudo ufw status numbered

avrete un output simile a quello visto prima, ma con in più un numero, espresso tra parentesi quadre, che vi indicherà quale numero è stato assegnato ad una determinata regola. Con questo sistema cancellare una o più regole sarà estremamente facile. Ad esempio lanciamo:

sudo ufw status numbered

e come output avremo

Status: active
 
To                         Action      From
--                         ------      ----
[ 1] 22/tcp                     ALLOW       Anywhere                  
[ 2] 80/tcp                     ALLOW       Anywhere                   # accept Apache
[ 3] 443/tcp                    ALLOW       Anywhere                   # accept HTTPS connections
[ 4] 20000:21000/tcp            ALLOW       Anywhere                  
[ 5] 20000:21000/udp            ALLOW       Anywhere                  
[ 6] Anywhere                   ALLOW       200.100.200.100             
[ 7] 25/tcp                     ALLOW       200.100.200.100             
[ 8] 222.222.222.222 25/tcp     ALLOW       200.100.200.100             
[ 9] Anywhere                   DENY        200.10.20.30                
[10] Anywhere                   DENY        200.10.20.30/29            
[11] 22/tcp                     DENY        1.1.1.2 

Se volessimo cancellare le regole che impediscono le connessioni proveniente dall’indirizzo 200.10.20.30 basterà lanciare in seguenti comandi:

sudo ufw delete 9
sudo ufw delete 10

Altri comandi utili di UFW

Qualora se ne presentasse la necessità, è possibile fare tabula rasa di tutto quanto abbiamo impostato con il comando:

sudo ufw reset

che ovviamente vi invitiamo ad utilizzare con estrema attenzione.

UFW inoltre registra ogni attività nei suoi file di logo, reperibili alla seguente posizione

/var/log/ufw.log

Se avete bisogno di dare un’occhiata potete quindi aprire il file con il vostro editor preferito, o meglio con un log analyzer.

Bene, abbiamo dato una panoramica abbastanza veloce ma tutto sommato abbastanza completa circa le potenzialità di questo ottimo strumento gratuito presente di default in molte distribuzioni Linux. Ovviamente la sua configurazione avanzata è tutt’altro che banale e non si ferma certo ai pochi comandi visti prima. Con UFW è infatti possibile effettuare molte altre operazioni più avanzate, come il mascheramento dell’IP, il routing tra diverse schede di rete, oltre ad applicare numerosi filtri ai pacchetti in ingresso verso la nostra macchina. Per usi più avanzati ovviamente si consiglia di studiare con attenzione la documentazione presente sul sito ufficiale. Intanto accontentatavi di aver appreso le sue basi.

Alla prossima!

| | | | | |

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna su