Firewalld in breve


Negli ultimi decenni, la sicurezza informatica è diventata una priorità assoluta per chiunque gestisca reti, server o anche semplicemente un computer connesso a Internet. Tra le tante tecnologie che aiutano a proteggere i nostri dispositivi e dati, uno dei componenti fondamentali è il firewall, uno strumento che filtra e controlla il traffico di rete. Nel panorama di Linux, un tool moderno e versatile per la gestione del firewall è Firewalld.

Un po’ di storia

Fino a non molti anni fa, uno dei firewall più utilizzati in ambiente Linux era iptables, un potente sistema che permetteva di configurare in modo molto dettagliato le regole per gestire il traffico di rete. Tuttavia, configurare iptables richiedeva una buona conoscenza tecnica e una certa esperienza. Nel 2011, il progetto Firewalld è stato introdotto per rendere la gestione del firewall più semplice e accessibile, soprattutto in ambienti con server o desktop. Firewalld fornisce un’interfaccia dinamica che consente di applicare modifiche senza dover riavviare i servizi di rete, cosa che con iptables non era così immediata.

Cosa offre Firewalld?

Firewalld è uno strumento di gestione del firewall che si basa su un approccio a “zone”, permettendo di definire regole diverse a seconda del livello di fiducia che si ha per una determinata connessione. È anche dinamico, il che significa che è possibile modificare le regole del firewall senza disconnettere o interrompere le connessioni attive.

Le sue principali caratteristiche sono:

  • Gestione delle zone: permette di separare le reti in differenti zone con livelli di sicurezza variabili.
  • Supporto IPv4, IPv6, ponti (bridge) e configurazioni con NAT.
  • Modifiche dinamiche: non c’è bisogno di riavviare il firewall o disconnettere gli utenti per applicare nuove regole.
  • Interfaccia user-friendly: oltre ai classici comandi da terminale, offre anche un’interfaccia grafica (firewall-config) per chi preferisce una gestione visuale.
  • Compatibile con iptables: pur utilizzando tecnologie più moderne, Firewalld permette di usare iptables come backend.

Zone e profili

Le zone sono il cuore di Firewalld. Ogni zona rappresenta un contesto di sicurezza che si applica a un’interfaccia di rete o a un determinato tipo di connessione. Ad esempio, potresti avere il tuo Wi-Fi di casa configurato su una zona “trusted” (fidata), mentre una connessione VPN su una zona “public” (pubblica) con regole di sicurezza più restrittive. Le zone possono essere assegnate in base a dove ti trovi, che tipo di rete stai usando o che servizi desideri rendere disponibili.

Le zone principali predefinite includono:

  • drop: tutto il traffico in entrata è bloccato, non si risponde nemmeno ai pacchetti.
  • block: simile a drop, ma risponde con “ICMP host proibito”.
  • public: pensata per reti pubbliche non fidate, ma con possibilità di abilitare alcuni servizi.
  • external: usata in configurazioni di router o gateway, con NAT abilitato.
  • internal: per reti interne fidate, dove si desidera maggiore apertura ai servizi.
  • trusted: qui tutto è permesso, senza restrizioni.

Puoi assegnare zone specifiche alle interfacce di rete e gestire quali servizi sono abilitati o bloccati per ciascuna di esse. Ad esempio, potresti voler aprire la porta per SSH solo nella zona interna, mentre mantenerla chiusa per quella pubblica.

Installazione di Firewalld

In molte distribuzioni moderne di Linux, Firewalld è preinstallato (ad esempio in Fedora e RHEL/CentOS), ma in altre distribuzioni potrebbe essere necessario installarlo manualmente.

Per installarlo su distribuzioni basate su Debian (come Ubuntu), esegui:

sudo apt update
sudo apt install firewalld

Su distribuzioni RHEL/CentOS o Fedora:

sudo dnf install firewalld

Una volta installato, abilita e avvia il servizio con:

sudo systemctl enable firewalld
sudo systemctl start firewalld

I comandi di base

Ora che Firewalld è attivo e funzionante, vediamo i comandi più utili per iniziare a usarlo e configurarlo:

  1. Controllare lo stato di Firewalld:
   sudo firewall-cmd --state

Questo comando ti dirà se Firewalld è attivo o no.

  1. Visualizzare la zona predefinita:
   sudo firewall-cmd --get-default-zone
  1. Elencare tutte le zone disponibili:
   sudo firewall-cmd --get-zones
  1. Elencare le regole di una zona specifica (es. public):
   sudo firewall-cmd --zone=public --list-all
  1. Cambiare la zona predefinita:
   sudo firewall-cmd --set-default-zone=home
  1. Aggiungere un servizio (es. HTTP) a una zona specifica:
   sudo firewall-cmd --zone=public --add-service=http

Se desideri che questa modifica sia persistente anche dopo un riavvio, aggiungi l’opzione --permanent:

   sudo firewall-cmd --zone=public --add-service=http --permanent
  1. Rimuovere un servizio:
   sudo firewall-cmd --zone=public --remove-service=http --permanent
  1. Riavviare Firewalld (utile se hai fatto modifiche manuali ai file di configurazione):
   sudo firewall-cmd --reload
  1. Aggiungere una porta specifica: Se desideri aprire una porta specifica (ad esempio la porta 8080), puoi usare il seguente comando:
   sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  1. Assegnare una zona a un’interfaccia di rete:
   sudo firewall-cmd --zone=home --change-interface=eth0

Riferimenti alla documentazione ufficiale

Per chi desidera approfondire ulteriormente, qui ci sono alcuni link utili alla documentazione ufficiale di Firewalld e altre risorse tecniche: