Eccoci in questa ottava, ed ultima, parte delle nostre guide riguardanti la migrazione da Windows a Linux. Questa volta tratteremo nello specifico la configurazione di UFW (Uncomplicated FireWall). Si tratta del firewall di riferimento per innumerevoli distribuzioni, i professionisti e non del settore IT interessati a passare stabilmente ai sistemi del "Pinguino" dovrebbero conoscerne almeno i comandi base.
Per semplicità anche in questa parte prenderemo come distribuzione di riferimento Linux Mint, ma UFW può essere installato e configurato anche su altri sistemi.
Configurazione base di UFW su Linux
UFW è classificabile come un front-end per iptables. Tale progetto nasce per consentire l'amministrazione delle regole firewall di iptables in modo semplice ed immediato. Di base UFW genera delle regole sia per gli indirizzi IPv4 che per gli IPv6, dunque non si avranno problemi con quest'ultima versione dell'Internet Protocol.
UFW si trova preinstallato su: Debian, Ubuntu e Linux Mint anche se non è attivato di default. Possiamo quindi verificare il suo stato aprendo bash e digitando questo comando:
sudo ufw status
come output dovremmo ricevere il messaggio "Status: inactive".
Prima di abilitare UFW è bene sapere quali porte sono aperte nel sistema. Tale dato può essere ottenuto sfruttando il pratico tool nmap:
sudo apt install nmap -y
sudo nmap IPdelcomputer
Se lo preferiamo, possiamo eseguire la scansione solo sulla rete locale con questo pratico comando:
sudo nmap localhost
Di base nmap esegue una scansione unicamente delle porte TCP. Tuttavia se necessitate di operare o di interagire anche con le porte UDP potete adottare tale opzione:
sudo nmap -sU IPdelcomputer
Se desiderate una scansione più celere potete utilizzare il tool netstat per il controllo delle porte UDP aperte:
sudo netstat -lnpu
Per scegliere quali porte aprire in base alle varie esigenze e necessità, si deve utilizzare tale sintassi:
sudo ufw allow Numeroporta/tipodiprotocollo
Ad esempio se dovete gestire un server OpenSSH vi consigliamo di aprire la porta TCP numero 22:
sudo ufw allow 22/tcp
Se non ricordate il numero di porta corretto di un programma potete anche indicare solo il nominativo:
sudo ufw allow ssh
Inoltre in qualsiasi configurazione è sicuramente utile abilitare anche il traffico sui protocolli HTTP e HTTPS per navigare su Internet tramite il browser Web:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ovviamente se conoscete già tutte le porte che vi servono potete concatenarle tutte in un unico comando:
sudo ufw allow 80,443,22/tcp
Abilitare UFW
A questo punto, dopo aver aperto le porte che servono al nostro workflow, possiamo finalmente attivare UFW. Tuttavia prima di abilitarlo è sempre bene avviare la funzione di logging, cosi da poter leggere i log del firewall in caso di necessità o malfunzionamenti:
sudo ufw logging on
Di base il log level è impostato su "low" tuttavia se preferiamo possiamo settare vari livelli di dettaglio, ad esempio ecco la modalità "medium":
sudo ufw logging medium
e il livello massimo:
sudo ufw logging high
I log sono visualizzabili recandoci direttamente nella directory /var/log/ufw.log
oppure tramite cat
:
cat /var/log/ufw.log
Adesso procediamo all'avvio di UFW:
sudo ufw enable
Per evitare conflitti con le impostazioni manuali di iptables queste verranno disabilitate non appena UFW entra in funzione.
A questo punto possiamo visualizzare tutte le porte aperte ed i vari dettagli della configurazione con tale comando:
sudo ufw status verbose
UFW è sostanzialmente un servizio animato dal gestore dei demoni systemd, quello di riferimento del panorama delle distribuzioni Linux, quindi per avviare UFW al boot del sistema possiamo sfruttare la CLI di systemd:
sudo systemctl enable ufw
Cancellare le regole di UFW
Ogni regola impostata in UFW ha un suo specifico numero, per ottenere la lista completa e numerata basta scrivere in bash:
sudo ufw status numbered
Quindi se desiderate cancellare una specifica regola del firewall bisogna utilizzare tale sintassi:
sudo ufw delete NumerodellaRegola
Ovviamente sostituite il numero della regola in base a ciò che desiderate effettivamente eliminare.
Profilo delle applicazioni di UFW
Diversi applicativi Linux vengono distribuiti con un apposito profilo per UFW. Per conoscere i profili presenti nel sistema scriviamo questo comando nella shell:
sudo ufw app list
Ad esempio, per avere maggiori dettagli su OpenSSH scriveremo:
sudo ufw app info SSH
Riceveremo in output la descrizione del software e le porte TCP o UDP associate.
Creare un blacklist di indirizzi IP tramite UFW
In alcuni casi risulta utile bloccare determinati intervalli di indirizzi IP per ragioni di sicurezza o per ottemperare a delle policy aziendali. Eseguire tale configurazione è molto semplice e può essere gestita in base alle diverse porte TCP/UDP. Ecco un esempio:
sudo ufw insert 1 deny in from IPdabloccare to any port 25 proto tcp
In questo caso abbiamo bloccato un singolo IP sulla porta 25.
Mentre se desideriamo impedire l'accesso ad un range di IP la sintassi è la seguente:
sudo ufw insert 1 deny in from IPdabloccare/24 to any port 25 proto tcp
Ovviamente tale regola può essere applicata anche a tutte le porte TCP/UDP:
sudo ufw insert 1 deny in from IPdabloccare
Creare un whitelist di indirizzi IP tramite UFW
È possibile anche l'operazione opposta, ovvero generare una whitelist di indirizzi IP. Per esempio se disponiamo di un server OpenSSH e desideriamo che solo alcuni computer, dotati quindi di specifici IP, possano connettersi ad un determinato PC possiamo operare in questo modo:
sudo ufw insert 1 allow in from IPdaautorizzare to any port 22 proto tcp
Ovviamente dopo aver generato la whitelist bisogna cancellare la precedente regola di UFW che consente a tutti l'accesso alla porta 22. Dunque richiediamo la lista delle regole al firewall:
sudo ufw status numbered
e cancelliamo quella inerente alla porta 22:
sudo ufw delete numerodellaregola
Reset delle regole di UFW
Se volete resettare completamente UFW e cancellare tutte le regole ed i setting potete usare infine questo comando:
sudo ufw reset