Gestire la sicurezza di un server Linux può sembrare complesso, ma strumenti come firewall-cmd (il client per il demone firewalld) rendono la configurazione delle regole di rete accessibile anche ai meno esperti. Una delle caratteristiche importanti di firewalld è che permette di applicare modifiche senza interrompere le connessioni attive.
Vedremo i comandi essenziali validi su distribuzioni come AlmaLinux, Rocky Linux, RHEL, CentOS o Fedora.
Il concetto di Zone
firewalld organizza il traffico in zone, ovvero set di regole predefiniti basati sul livello di fiducia della rete a cui sei connesso e sono memorizzate in /usr/lib/firewalld/zones/
- drop: livello di fiducia minimo. Tutti i pacchetti in entrata vengono scartati senza risposta
- block: simile a drop, ma il mittente riceve un messaggio di errore (ICMP host-prohibited)
- public: la zona predefinita per la maggior parte dei sistemi. Si presuppone che la rete sia insicura e solo i servizi selezionati sono ammessi
- external: usata per i router. Abilita il mascheramento IP (NAT) per permettere a una rete locale di uscire su internet
- dmz: per server accessibili pubblicamente ma isolati dal resto della rete interna
- work / home: per reti in cui ti fidi della maggior parte degli altri utenti. Permettono più servizi rispetto a public
- internal: per reti private interne
- trusted: fiducia massima, tutto il traffico in entrata è accettato
Verifica dello stato e comandi di base
Per verificare che il servizio sia attivo si utilizza il comando
$ sudo systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: active (running) since Sat 2026-02-07 14:07:46 CET; 5s ago
Docs: man:firewalld(1)
Process: 70382 ExecStartPost=/usr/bin/firewall-cmd --state (code=exited, status=0/SUCCESS)
Main PID: 70381 (firewalld)
Tasks: 2 (limit: 23112)
Memory: 27.3M (peak: 48.7M)
CPU: 489ms
Per verificare la zona predefinita e quella attiva
$ sudo firewall-cmd --get-default-zone
public
$ sudo firewall-cmd --get-active-zones
public
interfaces: ens33Di seguito vedremo alcuni comandi per configurare firewalld. Nei comandi utilizzeremo sempre il flag –permanent che permette di mantenere la configurazione anche a seguito del riavvio del sistema. Togliendolo le regole sono temporanee e verranno perse a seguito di un riavvio.
Possiamo abilitare il traffico per un servizio specifico (es. SSH, HTTP)
$ sudo firewall-cmd --permanent --add-service=httpo per una singola porta TCP / UDP
$ sudo firewall-cmd --permanent --add-port=8080/tcpo per un intervallo di porte
$ sudo firewall-cmd --permanent --add-port=4000-4005/udpPer rendere attive le regole che abbiamo impostato dobbiamo ricaricare la configurazione
$ sudo firewall-cmd --reloadPer visualizzare le regole attive con firewall-cmd, il comando principale è –list-all
$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client http ssh
ports: 8080/tcp 4000-4005/udp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:in questo modo vengono visualizzate le configurazioni della zona attiva. Possiamo specificare nel comando una zona precisa (ad esempio “work”)
$ sudo firewall-cmd --zone=work --list-allo tutte le zone contemporaneamente
$ sudo firewall-cmd --list-all-zonesSe invece, volessimo revocare l’accesso a un servizio
$ sudo firewall-cmd --permanent --remove-service=httpo ad una porta
$ sudo firewall-cmd --permanent --remove-port=8080/tcpLa gestione dei log
Per impostazione predefinita, firewalld non registra log delle azioni effettuate sul traffico. Possiamo attivare questa funzione con il comando
$ sudo firewall-cmd --set-log-denied=allin questo caso avremo tutte le azioni di blocco inviate al kernel e si possono visualizzare tramite journalctl o dmesg
# Per vedere solo i log di firewalld e seguirli in tempo reale
$ sudo journalctl -u firewalld -f
# Per filtrare specificamente i pacchetti rifiutati
$ sudo journalctl -x -f | grep -i -E 'REJECT|DROP'Conclusione
Imparare ad utilizzare firewall-cmd è un passo fondamentale per garantire la sicurezza del tuo sistema operativo. Grazie alla sua struttura basata su zone e alla capacità di applicare modifiche in tempo reale senza interruzioni, questo strumento rappresenta il perfetto equilibrio tra potenza e semplicità d’uso. Ricorda sempre di verificare le tue regole con il comando –list-all e di rendere permanenti solo le configurazioni di cui sei sicuro. Una corretta gestione del firewall non è solo una buona pratica tecnica, ma la prima linea di difesa per proteggere i tuoi dati e i tuoi servizi da accessi non autorizzati.
