Come installare ed inizializzare il firewall ufw in un sistema Debian GNU Linux ed Ubuntu per proteggere l’installazione da attacchi informatici ed accessi indesiderati.
Il firewall standard di Debian, ma anche di Ubuntu e di molte altre distribuzioni derivate, risponde al nome di ufw.
Ufw sta per Uncomplicated FireWall (traducibile in qualcosa di simile a “Firewall senza complicazioni”). È un’interfaccia di gestione ad alto livello ed estremamente semplificata per il filtraggio del traffico di rete in ingresso ed in uscita.
Questo software mira cioè ad eliminare la complicazione introdotta dai complessi strumenti espressamente progettati per il pacchetti filtering a basso livello, come iptables e nftables. Tali strumenti, pur essendo software molto sofisticati sono oggetti difficili da manipolare e gestire dall’utente medio.
Ufw può essere dunque inteso come un valido strumento da implementare nei server e nei client GNU Linux laddove non è richiesta la complessa gestione necessaria nei casi di grandi firewall aziendali o degli UTM (Unified Thread Management).
Questi ultimi sono sicuramente gli strumenti più adatti per garantire l’elevato livello di sicurezza richiesto in una rete aziendale chiamata a mantenere sempre alta la guardia per il traffico di rete potenzialmente pericoloso.
Ad ogni modo ufw rimane uno strumento comunque molto utile per proteggere un sistema GNU Linux da attacchi informatici talvolta devastanti.
In questo tutorial sulla Cyber Security abbiamo utilizzato una distribuzione Debian GNU/Linux 11 (bullseye). In questa distribuzione Linux, ufw non viene installato automaticamente durante installazione di default del sistema operativo.
Che cosa è ufw ?
Ufw è un software scritto in python e rilasciato con licenza libera da Canonical Ltd, l’azienda che sta dietro ad Ubuntu Linux; tant’è che all’inizio l’acronimo ufw qualcuno lo declinava come “Ubuntu Firewall”. L’interfaccia anche qui esclusivamente a riga di comando, ma semplificava non poco la gestione della sicurezza del sistema, soprattutto per gli utenti in mobilità.
Questo strumento nasce dall’esigenza di proteggere laptop, workstation e server della famiglia Debian (da cui deriva Ubuntu) in modo che sia di semplice utilizzo anche per l’utente normale. Negli anni ufw è diventato talmente popolare che qualche tempo fa è stata rilasciato l’interfaccia grafica per la gestione ancor più semplificata del firewall: gufw.
Gufw di fatto il front-end di ufw. Ha un’interfaccia grafica semplice e pulita con alcune regole di base già preimpostate per filtrare il traffico dei servizi più comuni. Questo che lo rende uno strumento molto interessante e versatile per l’utente medio.
È comunque doveroso qui sottolineare che ufw, pur rimanendo uno strumento indubbiamente valido, non riuscirebbe a garantire l’elevato livello di sicurezza richiesto da un server esposto su internet.
Non dispone ad esempio degli strumenti di IDS (Intrusion Detection System) e IPS (Intrusion Prevention System), essenziali in un firewall. Né dispone di altri sofisticati meccanismi per il tracciamento delle sessioni, l’analisi dettagliata del traffico. Nessun sistema di Shield Protection automatico ed in tempo reale, o altre sofisticate estensioni software tipiche dei firewall propriamente detti.
Come già accennato, ufw nasce in seno ad Ubuntu e rilasciato sotto licenza libera, questo ha permesso, in poco tempo, di diventare disponibile per molte altre derivate Debian. Fatta la doverosa premessa introduttiva iniziale, entriamo nel vivo dell’installazione e del setup di ufw, senza porre ulteriori indugi
Installazione del software ufw
Iniziamo subito con l’aggiornamento dei repository
$ sudo apt update
Successivamente procediamo con l’installazione del pacchetto ufw con il comando:
$ sudo apt install ufw
E questo è l’output completo del comando di installazione.
$ sudo apt install ufw
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
ufw
0 upgraded, 1 newly installed, 0 to remove and 145 not upgraded.
Need to get 167 kB of archives.
After this operation, 857 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main amd64 ufw all 0.36-7.1 [167 kB]
Fetched 167 kB in 0s (1,118 kB/s)
Preconfiguring packages ...
Selecting previously unselected package ufw.
(Reading database ... 196249 files and directories currently installed.)
Preparing to unpack .../archives/ufw_0.36-7.1_all.deb ...
Unpacking ufw (0.36-7.1) ...
Setting up ufw (0.36-7.1) ...
Creating config file /etc/ufw/before.rules with new version
Creating config file /etc/ufw/before6.rules with new version
Creating config file /etc/ufw/after.rules with new version
Creating config file /etc/ufw/after6.rules with new version
Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service → /lib/systemd/system/ufw.service.
Processing triggers for rsyslog (8.2102.0-2+deb11u1) ...
Processing triggers for man-db (2.9.4-2) ...
$
Ora che il pacchetto è stato installato, possiamo andare al passaggio successivo.
Configurazione generale di ufw
Prima di poter utilizzare UFW è comunque consigliabile un minimo di configurazione di base del software mirata alla impostazione delle modalità preferite di utilizzo.
Questa configurazione a basso livello è distribuita in 2 file di configurazione di ufw:
- il file
/etc/ufw/ufw.conf
; - il file
/etc/default/ufw
.
Il file /etc/ufw/ufw.conf
contiene pochissime righe di configurazione utilizzate per stabilire se il il firewall deve essere avviato al boot del sistema (ENABLED=yes
) ed il livello di log che si desidera (LOGLEVEL=low
).
Di contro, il file /etc/default/ufw
è un file ben più “corposo” e contiene molti parametri di configurazione. La descrizione di tutti i parametri di configurazione contenuti in questo file è al di la dello scopo del presente turorial. Per una descrizione dettagliata di tutti i parametri di configurazione si rimanda alle man-page.
Tuttavia, menzioneremo qui almeno une dei parametri di configurazione che vale la pena di verificare che sia impostato correttamente:
IPV6=yes
Perché IPV6 deve essere impostato a ‘yes’ ? Semplice. Perché moltissimi software moderni tendono ad utilizzare intensamente IPv6 (il protocollo IP versione 6, appunto.) e sarebbe utile fare in modo che tutte le regole che andremo a stabilire da ora in avanti siano implementate parallelamente sia per IPv4 che per IPv6.
Non a caso la documentazione recita:
IPv6 is enabled by default. When disabled, all incoming, outgoing and forwarded packets are dropped, with the exception of traffic on the loopback interface. To adjust this behavior, set IPV6 to ‘yes’ in /etc/default/ufw. See the ufw manual page for details.
IPv6 è abilitato per default. Quando disabilitato, tutti i pacchetti in ingresso, in uscita e ruotati saranno droppati, con l’eccezione del traffico sulla interfaccia di loopback. Per fissare questo comportamento, impostare il falore a ‘yes’ file /etc/default/ufw,
Appena verificato che le modifiche suggerite per il file siano corrette: salvare quindi i file e chiudere l’editor.
Prima attivazione del firewall
Una volta installato il pacchetto ufw ed applicate le configurazioni minimali viste sopra, tutto è pronto per passare al setup delle prime regole del firewall. Quelle regole minime iniziali che permetteranno di poter attivare ufw in tutta sicurezza.
Notare che in questa fase, il firewall non è ancora realmente attivo. Questo può essere verificato con il comando:
$ sudo ufw status
Di cui questo è l’output completo:
$ sudo ufw status
Status: inactive
È qui utile sottolineare la filosofia che sta alla base del firewall (che li accomuna un po tutti, a dire il vero) la quale stabilisce che “Ciò che non è espressamente permesso, è bloccato o scartato”. Secondo questa linea di ragionamento, un firewall senza regole non permette nessun traffico. Né in ingresso, né in uscita.
Gli sviluppatori di ufw hanno tenuto conto di questo ed hanno pensato bene di non attivare il firewall, automaticamente all’installazione. Questo avrebbe però significato un firewall privo di regole che avrebbe certamente bloccato chiunque fuori dal sistema senza nessuna speranza di poter entrare.
In conseguenza di ciò, prima di attivare il firewall ed iniziare a filtrare il traffico di rete, sarà indispensabile impostare alcune regole minimali di accesso. Regole che tengano anche conto della sicurezza per gli accessi non autorizzati.
Nella fattispecie: A) Inizialmente abiliteremo tutto il traffico in uscita senza restrizioni. B) Mentre tutto il traffico in ingresso sarà inizialmente bloccato. C) Ad eccezione della porta 22/tcp per permettere di continuare a gestire il sistema, ed il firewall stesso, tramite una connessione SSH.
Nel breve elenco di comandi che segue, corredato di commenti, imposteremo le regole appena citate, prima dell’attivazione:
$ sudo ufw default deny incoming comment "Blocca tutto il traffico in ingresso"
$ sudo ufw default deny incoming comment "Blocca tutto il traffico in ingresso"
$ sudo ufw insert 1 allow ssh comment "Permetti in ingresso solo il protocollo ssh"
Ora che non c’è più rischio di rimanere chiusi fuori dal sistema, possiamo finalmente abilitare il firewall:
$ sudo ufw enable
Questo è l’output completo del comando di abilitazione di ufw:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Notare che il software si preoccupa di informarci del rischio di non poter più accedere al sistema.
Ora che il firewall è finalmente attivato, è possibile ispezionare le regole correntemente attive con il comando
$ sudo ufw status verbose
Di cui questo è l’output completo
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere # Permetti in ingresso solo il protocollo ssh
22/tcp (v6) ALLOW IN Anywhere (v6) # Permetti in ingresso solo il protocollo ssh
Notare che sono presenti esclusivamente tutte le regole che che abbiamo inserito noi stessi poco fa.
Con questo si conclude la parte della installazione ed inizializzazione del firewall di Debian o Ubuntu.
Ora ufw è definitivamente pronto all’uso: manca solo il setup delle regole personalizzare per filtrare il traffico di rete secondo le proprie esigenze.
Conclusioni
In questo tutorial ci siamo focalizzati sulla installazione e prima attivazione di ufw. Abbiamo inoltre impostato le regole basilari di filtraggio del traffico di rete che permettono al sysadmin di poter operare pur mantenendo chiuse tutte le porte di acceso al sistema, ad eccezione della porta 22/ssh.
Per approfondire l’argomento delle possibili regole di filtraggio del traffico di rete e di come gestirle, abbiamo preparato uno specifico post che ti guiderà su come eseguire il setu di ufw, corredato di utili esempi.
Disclaimer
Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.