UFW sta per Uncomplicated FireWall, ed effettivamente è proprio quello che fa. In realtà sotto sotto può anche far girare iptables, ma questo UFW permette di creare e gestire in modo estremamente semplice ed efficace il firewall di un server Linux.
Di partenza UFW, installato oramai di default sulle Ubuntu e su molte altre distribuzioni, parte come spento. Per prima cosa possiamo verificare lo stato con il comando principale
sudo ufw status
Se è spento ci dirà appunto che è in questo stato. Viceversa mostrerà le regole attive. Tuttavia anche se è spento possiamo aggiungere le regole. Nonostante abbia poi la possibilità di gestire di fatto tutto lo spettro delle connessioni, il suo funzionamento di base ragiona in questo modo. Le regole che mettiamo sono sempre riferite all’ingresso, ovvero a connessione che iniziano o arrivano verso di noi. Il contrario invece risulta sempre aperto, anche se poi non è proprio così. Questo per dire che non dobbiamo preoccuparci, come invece avveniva per altri prodotti, di pensare anche alle connessioni “di ritorno”.
Non secondario, per i maggiori programmi, UFW li riconosce come tali. Ad esempio la prima regola che dobbiamo dare sarà quella di attivare la connessione SSH, altrimenti ci tagliamo fuori. Per farlo non indicheremo la porta (sebbene lo possiamo fare) ma proprio il programma.
sudo ufw allow ssh
Automaticamente verrà predisposto l’accesso in ingresso della porta 22 sia in tcp V4 che V6. Per conoscere una lista delle applicazioni riconosciute sul nostro server (quindi la lista può variare da macchina a macchina) daremo il comando:
sudo ufw app list
A questo punto possiamo attivare il firewall con il comando:
sudo ufw enable
chiaramente con disable lo stacchiamo. Un’altra peculiarità di UFW è che se ora diamo altre regole, non dobbiamo ricompilare, riavviare o quant’altro, queste saranno immediatamente attive e funzionali.
Alcuni esempi pratici
Facciamo alcuni esempi pratici. Abbiamo visto che per attivare qualcosa abbiamo dato il nome del programma, nel caso questo sia “sconosciuto” a UFW potremo dare la porta.
sudo ufw allow 22
In questo caso abbiamo però attivato la porta 22 in ingresso sia per il protocollo TCP che quello UDP e sia per il protocollo TCP/IP V4 che V6. Se volessimo restringere il campo al solo TCP daremo:
sudo ufw allow 22/TCP
Come potete vedere è possibile indicare la porta e il protocollo. Chiaramente sostituendo TCP con UDP otterremo un diverso risultato.
Sto dando per scontato che il comando allow sia chiaro, in effetti esiste il suo contrario, ovvero il deny, ma siccome UFW di fatto è esplicito per l’ingresso e implicito per l’uscita, il comando deny di fatto non si utilizza se non in casi particolari.
Il comando di cui sopra si può anche arricchire con indirizzi IP. Mettiamo che abbiamo un indirizzo IP statico e vogliamo collegare la nostra azienda al server in modo esclusivo.
sudo ufw allow from 10.0.0.1/32
Chiaramente si può combinare l’esempio sopra con quelli precedenti, ovvero circoscrivendo IP e porta e protocollo:
sudo ufw allow from 10.0.0.1/32 to any port 22 proto tcp
Cancellare le regole
Abbiamo visto come si mettono le regole, ma se vogliamo cancellarle? Esistono due strade principali, una di utilizzare il comando esplicito che abbiamo dato per la creazione, anteponendo la parola delete:
sudo ufw delete allow 22/TCP
Un secondo metodo prevede di dare uno sguardo allo status di ufw che abbiamo visto all’inizio, con ufw status, ma facendo enumerare le regole
sudo ufw status numbered
Le regole verranno mostrate con un numero all’inizio della riga, questo numero ci permetterà di cancellare la regola che desideriamo eliminare dopo averla identificata nella lista. Ad esempio la regola nr 3.
sudo ufw delete 3
In questo caso se si elimina una regola va bene, ma se dovete eliminarne più di una vi consiglio di dare il comando numbered, eliminare la regola e ridare subito di nuovo il comando numbered di nuovo. Questo perché la numerazione non è statica, ma se vogliamo eliminare le regole 3 e 4, al secondo comando la regola 4 sarà diventata 3 e rischiamo di cancellare qualcosa che non volevamo.
Infine per concludere due parole sul log. UFW crea un file di log di tutte le connessioni che blocca o permette. Questo log lo trovate sotto /var/log/ufw.log, è possibile anche spegnerlo sebbene lo sconsiglio vivamente. Infatti il sistema di rotazione di Ubuntu già si occupa di ruotare i log e comprimerli per default, quindi non dobbiamo preoccuparci di questo. Ad ogni modo se volete proprio disattivare i log, basterà dare il comando:
sudo ufw logging off
Chiaramente on se lo volete riattivare.
In realtà i comandi non sono solo questi e si può andare parecchio in dettaglio, ma per le esperienze che ho avuto io, questi sono i comandi di maggior interesse e utilizzo. E’ interessante che rispetto al vecchio Iptables, qui ci si mette pochi secondi per configurare ed attivare il firewall e poi dimenticarsi di lui perché di fatto è stato ben impostato.
E’ sotto inteso che il firewall blocca tutto quello che non abbiamo reso esplicito, ma questo significa che quello che abbiamo poi aperto debba essere configurato con giudizio, ovvero attivare le chiavi per SSH, adeguate configurazioni per il webserver, eccetera.