Press "Enter" to skip to content

Come configurare UFW firewall su ubuntu linux

Il firewall è spesso un software che nei computer personali viene disabilitato senza pietà, spesso perché non ci fa funzionare questo o quel programma e quindi piuttosto che metterci a combattere per far funzionare tutto finiamo col disabilitarlo e così rimane.
Nel caso di un server, sopratutto se esposto direttamente su internet, diventa invece necessario configurare correttamente un firewall che ci protegga almeno un po’ da malintenzionati che vogliano prendere il controllo della nostra macchina. Vedremo quindi come configurare UFW su una macchina linux, nel nostro caso ubuntu 18.04 LTS ma è possibile utilizzarlo con molte altre distribuzioni come debian, mint ecc…

Cos’è UFW

UFW, è l’acronimo di Uncomplicated firewall, che tradotto significa firewall non complicato. Si tratta quindi di un frontend per iptables, che si pone l’obiettivo di fornire un’interfaccia da riga di comando per configurare un firewall in maniera semplice e intuitiva. Si pensa sempre che quando si parla di linux si parli di esperti amministratori di sistema o di nerd, ma negli ultimi anni con il web, i blog e l’e-commerce sempre più gente ha necessità di gestire in qualche modo una macchina linux. UFW aiuta sia i sysadmin più esperti che i principianti a configurare un firewall linux in maniera semplice e intuitiva.

Installare UFW firewall su ubuntu linux

Installare UFW su ubuntu è semplice, possiamo infatti installarlo direttamente dal gestore dei pacchetti apt con i seguenti comandi.

sudo apt-get update
sudo apt-get install ufw

Come visualizzare lo stato di UFW

Appena installato, UFW sarà in stato inactive, sarà quindi disabilitato per permettere di configurare tutti i servizi e aprire le porte che ci serviranno per offrire i servizi necessari.
Possiamo visualizzare lo stato attuale di UFW tramite il comando:

sudo ufw status

La risposta sarà la seguente:

Stato: inattivo

Configurare la strategia base di ufw

La strategia base di un firewall che sia per un server o per un desktop è solitamente quella di permettere tutto il traffico in uscita e bloccare tutto il traffico in entrata. In questo modo tutti i servizi interni che hanno bisogno di connettersi all’esterno saranno abilitati a farlo. Al contrario eventuali servizi o malintenzionati esterni che vogliano accedere alla nostra macchina non saranno disabilitati. Una volta impostata questa strategia passeremo a scegliere noi quali siano le connessioni in entrata da permettere. Procediamo a impostare queste prime due regole:

sudo ufw default allow outgoing
sudo ufw default deny incoming

Come è intuitivo la prima riga permette (allow) le connessioni verso l’esterno (outgoing) e la seconda vieta (deny) quelle in ingresso (incoming).

Aggiungere una nuova regola per permettere le connessioni ssh in entrata

Una delle prime cose che dobbiamo fare per configurare UFW su un server linux remoto, una volta bloccato il traffico in entrata, è permettere il traffico in entrata per le connessioni ssh. Questa operazione è fondamentale, ed è anche uno dei motivi per cui non abbiamo ancora abilitato UFW. Abbiamo infatti finora configurato il nostro firewall per scartare tutte le connessioni in ingresso, ma se non ci lasciamo una porta aperta da qualche parte rischiamo di non poter accedere più neanche noi, rimanendo quindi bloccati fuori dalla nostra stessa macchina.
Procediamo quindi a vedere come si crea una semplice regola che abiliti il servizio ssh.

sudo ufw allow ssh

In questo caso abbiamo utilizzato il nome del servizio ssh perché quest’ultimo è un servizio standard, possiamo specificarlo anche attraverso la porta e il protocollo:

sudo ufw allow 22/tcp

Questa istruzione è equivalente alla precedente, indichiamo cioè esplicitamente che vogliamo abilitare (allow) le connessioni sulla porta 22 tramite il protocollo tcp. Se abbiamo configurato ssh per rimanere in ascolto su una porta non standard (che non sia quindi la 22 di default) possiamo specificare senza problemi la nostra porta al posto della 22. Se abbiamo per esempio configurato ssh sulla porta 2020 scriveremo:

sudo ufw allow 2020/tcp

Nel caso il nostro server abbia più indirizzi ip (se per esempio ha un indirizzo pubblico e uno privato) possiamo restringere l’abilitazione su un solo ip.
In questo esempio assumiamo che l’indirizzo privato del nostro server sia 10.10.0.1.

sudo ufw allow proto tcp from any to 10.10.0.1 port 22

Se vogliamo restringere ancora di più l’abilitazione e fare si che la connessione ssh sia possibile solamente dalla macchina con ip 10.10.0.2 all’ip privato del server possiamo usare questa regola:

sudo ufw allow proto tcp from 10.8.0.2 to 10.8.0.1 port 22

Come aggiungere un commento a una regola UFW

Quando creiamo una regola possiamo aggiungere un commento che ci permetta di ricordare cosa fa quando rileggeremo la configurazione in un secondo momento.
Per esempio possiamo aggiungere una regola per aprire la porta https in ingresso (sulla porta tcp 443)

sudo ufw allow https/tcp comment 'Abilita traffico in ingresso https 443'

Possiamo visualizzare le regole appena create con il comando:

sudo ufw show added

Vediamo un esempio di output degli ultimi comandi eseguiti

output configurazione ufw ubuntu linux
Output configurazione UFW

Come abilitare il firewall UFW

Una volta completata la configurazione (controlliamo e ricontrolliamo di aver abilitato l’accesso ssh per non rimanere chiusi fuori) possiamo abilitare il firewall con il comando:

sudo ufw enable

Ci verrà ricordato per l’ennesima volta (non è mai troppo) che una errata configurazione potrebbe interrompere le connessioni ssh, confermiamo e avremo attivato il firewall. Una volta attivato rimarrà attivo anche dopo un riavvio del server/desktop.

Come disabilitare il firewall UFW

Se abbiamo necessità di disabilitare UFW possiamo farlo tramite il comando:

sudo ufw disable

Il comando disable permette di disabilitare il firewall in modo permanente, il firewall non sarà avviato al riavvio della macchina, potrà essere abilitato eseguendo enable.

Come controllare lo stato delle regole UFW su ubuntu

Per controllare quali regole sono abilitate sul firewall possiamo utilizzare il comando status di ufw. Ci sono diversi argomenti per il comando status che permettono di ottenere un diverso livello di dettaglio delle informazioni.

sudo ufw status
$ sudo ufw status numbered
$ sudo ufw status verbose

Come aggiungere altre regole, aprire porte su linux con UFW

Se abbiamo necessità di aprire delle porte per servizi specifici possiamo aggiungere altre regole al firewall e abilitare i servizi necessari.
Apriamo ad esempio la porta 80 per i servizi web se abbiamo un server web:

sudo ufw allow 80/tcp

Possiamo abilitare anche la porta 25 se abbiamo un server mail.

sudo ufw allow 25/tcp comment 'server email'

Se abbiamo un server openVPN probabilmente dovremmo accettare le connessioni in entrata sulla porta 1194 con protocollo UDP.

sudo ufw allow 1194/udp comment 'server openVPN'

Come abilitare un range di porte su UFW

Può essere necessario in alcuni casi di dover abilitare un range intero di porte e non una singola porta, possiamo farlo con il comando:

sudo ufw allow 4000:6000/tcp
sudo ufw allow 4000:6000/udp

In questo modo avremo abilitato tutte le porte fra la 4000 e la 6000 per entrambi i protocolli udp e tcp.

Come abilitare un singolo ip

Nel caso volessimo abilitare un singolo indirizzo ip ad accedere alla macchina possiamo farlo con il comando:

sudo ufw allow from 10.8.0.2

Come abilitare il traffico in entrata per MySql e MariaDB (aprire la porta 3306)

I servizi local come i database di solito non hanno necessità di essere raggiunti dall’esterno ma solo dai server interni che ne fanno uso. Sarà quindi in questo caso più sicuro abilitare in maniera selettiva la porta solo per il traffico in ingresso da un ip o una subnet.
Abilitare il traffico MySQL e MariaDB solo per un’intera subnet:

sudo ufw allow from 192.168.1.0/24 to any port 3306 comment 'MySQL da subnet locale'

Se invece non ci serve l’intera subnet ma ci basta in server che chiamerà direttamente il database basterà aprire la porta MySQL per il singolo ip.

sudo ufw allow from 10.8.0.1 to any port 3306 comment 'MySQL da server locale'

Come aprire la porta 5432 per il traffico PostgreSQL

Anche in questo caso come per MySQL sarà più sicuro aprire la porta 5432 solo per le sorgenti strettamente interessate dal servizio, quindi una subnet:

sudo ufw allow from 192.168.1.0/24 to any port 5432 comment 'PostgreSQL da subnet locale'

Oppure un singolo ip:

sudo ufw allow from 10.8.0.1 to any port 3306 comment 'PostgreSQL da server locale'

Come aprire le porte IMAP/IMAPS su UFW

In questo caso dovremo aprire la porta 143 e aprire la porta 993 per i servizi IMAPS e IMAP

sudo ufw allow 143
sudo ufw allow 993

Come aprire le porte POP3/POP3S su linux con UFW

in questo caso dovremo aprire la porta 110 per POP3 e aprire la porta 995 per POP3S

sudo ufw allow 110
sudo ufw allow 995

Come disabilitare l’accesso a porte o ip con UFW

Può essere necessario vietare l’accesso a una singola porta o a un singolo ip sorgente, con UFW possiamo farlo con il comando deny. In questo caso l’accesso verrà semplicemente ignorato.

sudo ufw deny 443/tcp

Possiamo specificare un ip:

sudo ufw deny from 10.8.0.250

Oppure anche in questo caso specificare un’intera subnet:

sudo ufw deny from 10.9.5.0/24

Abbiamo l’indirizzo di un Hacker che sta provando ad attaccare la connessione ssh con una serie di tentativi di login? Possiamo disabilitare la porta 22 dal suo ip:

sudo ufw deny from 1.2.3.4 to any port 22 proto tcp

Come rigettare esplicitamente connessioni in ingresso

Fino ad ora abbiamo visto come chiudere tutte le porte di accesso semplicemente vietando l’accesso con il comando deny. Con questo comando il servizio sarà semplicemente irraggiungibile, se volessimo invece mostrare esplicitamente all’utente che la porta è bloccata da un firewall dobbiamo usare il comando reject.
Vediamo alcuni esempi:

sudo ufw reject in smtp
sudo ufw reject out smtp
sudo ufw reject 1194 comment 'traffico VPN bloccato'
sudo ufw reject 23 comment 'Telnet non consentito'

In questo caso se un utente esterno provasse a connettersi al server tramite telnet riceverebbe un messaggio di “Connessione rifiutata”.

Come cancellare le regole del firewall linux UFW

Abbiamo visto a fondo come aggiungere regole, vediamo ora come è possibile eliminare regole UFW dal sistema se ci siamo sbagliati o non ci serve più una porta aperta.
Ci sono due opzioni possibili per cancellare una regola UFW, la prima specificando la regola, ad esempio se non ci serve più tenere aperta la porta 25 del server mail:

sudo ufw delete allow 25

In alternativa possiamo ottenere la lista numerata delle regole attive tramite il comando:

sudo ufw status numbered

E successivamente cancellare le regole in base al numero:

sudo ufw delete 2

Ricordiamoci che cancellare una regola con il numero provoca uno slittamento di tutte le regole. Sarà quindi meglio richiamare la lista numerata ogni volta che vogliamo cancellare una regola, quindi per cancellare la regola 3 e la 5 dovremo eseguire:

sudo ufw status numbered
sudo ufw delete 3
sudo ufw status numbered
sudo ufw delete 4

In questo esempio la regola che all’inizio aveva indice 5, in seguito alla cancellazione della regola 3 è diventata indice 4.

Come resettare il firewall UFW

Nel caso volessimo resettare la configurazione del firewall possiamo farlo attraverso il comando:

sudo ufw reset

Come riavviare il firewall UFW

Il firewall UFW può essere ricaricato con il comando:

sudo ufw reload

Ricaricare UFW è necessario ad esempio nel caso in cui modificassimo manualmente un file di configurazione come ad esempio il file /etc/ufw/before.rules

sudo vim /etc/ufw/before.rules

Come vedere i log del firewall UFW

Quando di usa per le prime volte un programma spesso viene da chiedersi “dove sono i log di UFW?” Di default i log si trovano in /var/log/ufw.log possiamo quindi seguirli con i comandi:

less /var/log/ufw.log
tail -F /far/log/ufw.log

Come vedere i report del firewall UFW

Possiamo vedere una serie di report, come ad esempio la lista delle regole aggiunte o le porte aperte sul nostro server linux

sudo ufw show added
sudo ufw show listening

Oltre questi sono disponibili diversi altri report, vediamone un breve elenco:

sudo ufw show raw
sudo ufw show builtins
sudo ufw show before-rules
sudo ufw show user-rules
sudo ufw show after-rules
sudo ufw show logging-rules

Abbiamo visto le principali opzioni e strategie per configurare e proteggere il nostro server ubuntu con il firewall UFW, se avete necessità di ulteriori informazioni potete trovare la pagina di aiuto della comunità di ubuntu (in inglese) qui.

Be First to Comment

Lascia un commento

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