Come iniziare con firewalld su Linux
Pubblicato: 2022-07-08 Se stai cercando un firewall moderno e potente per Linux che sia facile da configurare sulla riga di comando o con la sua interfaccia GUI, allora firewalld
è probabilmente quello che stai cercando.
La necessità di firewall
Le connessioni di rete hanno un'origine e una destinazione. Il software all'origine richiede la connessione e il software a destinazione lo accetta o lo rifiuta. Se viene accettato, i pacchetti di dati, generalmente chiamati traffico di rete, possono passare in entrambe le direzioni attraverso la connessione. Questo è vero sia che tu stia condividendo in tutta la stanza della tua casa, connettendoti in remoto al lavoro dal tuo ufficio di casa o utilizzando una risorsa remota basata su cloud.
Una buona pratica di sicurezza dice che dovresti limitare e controllare le connessioni al tuo computer. Questo è ciò che fanno i firewall. Filtrano il traffico di rete per indirizzo IP, porta o protocollo e rifiutano le connessioni che non soddisfano un insieme predefinito di criteri, le regole del firewall , che hai configurato. Sono come il personale di sicurezza a un evento esclusivo. Se il tuo nome non è nell'elenco, non entrerai.
Ovviamente, non vuoi che le regole del firewall siano così restrittive da limitare le tue normali attività. Più è semplice configurare il firewall, minori sono le possibilità di impostare inavvertitamente regole in conflitto o draconiane. Spesso sentiamo utenti che affermano di non utilizzare un firewall perché è troppo complicato da capire o la sintassi dei comandi è troppo opaca.
Il firewalld
firewall è potente ma semplice da configurare, sia sulla riga di comando che tramite l'applicazione GUI dedicata. Sotto il cofano, i firewall Linux si basano su netfilter
, il framework di filtraggio di rete lato kernel. Qui nella terra degli utenti, abbiamo una scelta di strumenti per interagire con netfilter
, come iptables
, ufw
il firewall semplice e firewalld
.
A nostro avviso, firewalld
offre il miglior equilibrio tra funzionalità, granularità e semplicità.
Installazione di firewalld
Ci sono due parti per firewalld
. C'è firewalld
, il processo daemon che fornisce la funzionalità del firewall, e c'è firewall-config
. Questa è la GUI opzionale per firewalld
. Nota che non c'è "d" in firewall-config
.
L'installazione di firewalld
su Ubuntu, Fedora e Manjaro è semplice in tutti i casi, sebbene ognuno abbia la propria opinione su ciò che è preinstallato e ciò che è in bundle.
Per installare su Ubuntu, dobbiamo installare firewalld
e firewall-config
.
sudo apt install firewalld
sudo apt install firewall-config
Su Fedora, firewalld
è già installato. Abbiamo solo bisogno di aggiungere firewall-config
.
sudo dnf install firewall-config
Su Manjaro, nessuno dei due componenti è preinstallato, ma sono raggruppati in un unico pacchetto in modo che possiamo installarli entrambi con un unico comando.
sudo pacman -Sy firewalld
È necessario abilitare il demone firewalld
per consentirne l'esecuzione ogni volta che il computer si avvia.
sudo systemctl abilita firewalld
E dobbiamo avviare il demone in modo che sia in esecuzione ora.
sudo systemctl start firewalld
Possiamo usare systemctl
per verificare che firewalld
sia stato avviato e funzioni senza problemi:
sudo systemctl status firewalld
Possiamo anche usare firewalld
per verificare se è in esecuzione. Questo utilizza il comando firewall-cmd
con l'opzione --state
. Nota che non c'è "d" in firewall-cmd
:
sudo firewall-cmd --state
Ora che il firewall è installato e funzionante, possiamo passare alla configurazione.
Il concetto di zone
Il firewalld
firewall è basato su zone . Le zone sono raccolte di regole del firewall e una connessione di rete associata. Ciò ti consente di personalizzare diverse zone e un diverso insieme di limitazioni di sicurezza in base alle quali puoi operare. Ad esempio, potresti avere una zona definita per la corsa regolare e quotidiana, un'altra zona per una corsa più sicura e una zona di blocco completo "niente dentro, niente fuori".
Per spostarti da una zona all'altra, ed effettivamente da un livello di sicurezza a un altro, devi spostare la tua connessione di rete dalla zona in cui si trova, alla zona in cui desideri correre.
Ciò rende molto veloce il passaggio da un insieme definito di regole del firewall a un altro. Un altro modo per utilizzare le zone sarebbe fare in modo che il tuo laptop utilizzi una zona quando sei a casa e un'altra quando sei fuori e utilizzi il Wi-Fi pubblico.
firewalld
viene fornito con nove zone preconfigurate. Questi possono essere modificati e più zone aggiunte o rimosse.
- drop : tutti i pacchetti in arrivo vengono eliminati. È consentito il traffico in uscita. Questa è l'impostazione più paranoica.
- block : tutti i pacchetti in entrata vengono eliminati e un messaggio
icmp-host-prohibited
viene inviato all'originatore. È consentito il traffico in uscita. - attendibile : tutte le connessioni di rete sono accettate e gli altri sistemi sono attendibili. Questa è l'impostazione più affidabile e dovrebbe essere limitata ad ambienti molto sicuri come le reti di test captive o la tua casa.
- public : questa zona è per l'uso su reti pubbliche o di altro tipo in cui nessuno degli altri computer può essere considerato attendibile. Viene accettata una piccola selezione di richieste di connessione comuni e generalmente sicure.
- external : questa zona è per l'uso su reti esterne con NAT masquerading (port forwarding) abilitato. Il tuo firewall funge da router che inoltra il traffico alla tua rete privata che rimane raggiungibile, ma comunque privata.
- interna : questa zona deve essere utilizzata su reti interne quando il sistema funge da gateway o router. Gli altri sistemi su questa rete sono generalmente affidabili.
- dmz : questa zona è per i computer situati nella "zona demilitarizzata" al di fuori delle tue difese perimetrali e con accesso limitato alla tua rete.
- lavoro : Questa zona è per macchine da lavoro. Gli altri computer su questa rete sono generalmente attendibili.
- casa : Questa zona è per le macchine domestiche. Gli altri computer su questa rete sono generalmente attendibili.
Le zone casa, lavoro e interne hanno funzioni molto simili, ma separarle in zone diverse consente di mettere a punto una zona a proprio piacimento, racchiudendo un insieme di regole per uno scenario particolare.
Un buon punto di partenza è scoprire qual è la zona predefinita. Questa è l'area a cui vengono aggiunte le interfacce di rete quando viene installato firewalld
.
sudo firewall-cmd --get-default-zone
La nostra zona predefinita è la zona pubblica. Per visualizzare i dettagli di configurazione di una zona, utilizzare l'opzione --list-all
. Questo elenca tutto ciò che è stato aggiunto o abilitato per una zona.
sudo firewall-cmd --zone=public --list-all
Possiamo vedere che questa zona è associata alla connessione di rete enp0s3 e consente il traffico relativo a DHCP, mDNS e SSH. Poiché almeno un'interfaccia è stata aggiunta a questa zona, questa zona è attiva.
firewalld
ti consente di aggiungere servizi da cui vorresti accettare il traffico verso una zona. Quella zona consente quindi il passaggio di quel tipo di traffico. Questo è più facile che ricordare che mDNS, ad esempio, utilizza la porta 5353 e il protocollo UDP e aggiungere manualmente questi dettagli alla zona. Anche se puoi farlo anche tu.
Se eseguiamo il comando precedente su un laptop con una connessione ethernet e una scheda Wi-Fi, vedremo qualcosa di simile, ma con due interfacce.
sudo firewall-cmd --zone=public --list-all
Entrambe le nostre interfacce di rete sono state aggiunte alla zona predefinita. La zona ha regole per gli stessi tre servizi del primo esempio, ma DHCP e SSH sono stati aggiunti come servizi denominati, mentre mDNS è stato aggiunto come accoppiamento di porta e protocollo.
Per elencare tutte le zone usa l'opzione --get-zones
.
sudo firewall-cmd --get-zones
Per vedere la configurazione di tutte le zone contemporaneamente, utilizzare l'opzione --list-all-zones
. Ti consigliamo di convogliare questo in less
.
sudo firewall-cmd --list-all-zones | meno
Ciò è utile perché è possibile scorrere l'elenco o utilizzare la funzione di ricerca per cercare numeri di porta, protocolli e servizi.
Sul nostro laptop, sposteremo la nostra connessione Ethernet dalla zona pubblica alla zona domestica. Possiamo farlo con le --zone
e --change-interface
.
sudo firewall-cmd --zone=home --change-interface=enp3s0
Diamo un'occhiata alla zona di casa e vediamo se la nostra modifica è stata apportata.
sudo firewall-cmd --zone=home --list-all
E lo ha. La nostra connessione Ethernet viene aggiunta alla zona di casa.
Tuttavia, questo non è un cambiamento permanente. Abbiamo modificato la configurazione in esecuzione del firewall, non la sua configurazione memorizzata . Se riavviamo o utilizziamo l'opzione --reload
, torneremo alle nostre impostazioni precedenti.
Per rendere permanente una modifica, dobbiamo usare l'opzione --permanent
opportunamente denominata.
Ciò significa che possiamo modificare il firewall per requisiti una tantum senza alterare la configurazione memorizzata del firewall. Possiamo anche testare le modifiche prima di inviarle alla configurazione. Per rendere permanente la nostra modifica, il formato che dovremmo utilizzare è:
sudo firewall-cmd --zone=home --change-interface=enp3s0 --permanent
Se apporti alcune modifiche ma dimentichi di usare --permanent
su alcune di esse, puoi scrivere le impostazioni della sessione corrente in esecuzione del firewall nella configurazione usando l' --runtime-to-permanent
.
sudo firewall-cmd --runtime-to-permanent
CORRELATI: Che cos'è DHCP (Dynamic Host Configuration Protocol)?
Aggiunta e rimozione di servizi
firewalld
conosce molti servizi. Puoi elencarli usando l'opzione --get-services
.
sudo firewall-cmd --get-services
La nostra versione di firewalld
elencava 192 servizi. Per abilitare un servizio in una zona, utilizzare l'opzione --add-service
.
Possiamo aggiungere un servizio a una zona usando l'opzione --add-service
.
sudo firewall-cmd --zone=public --add-service=http
Il nome del servizio deve corrispondere alla sua voce nell'elenco dei servizi da firewalld
.
Per rimuovere un servizio, sostituisci --add-service
con --remove-service
Aggiunta e rimozione di porte e protocolli
Se preferisci scegliere quali porte e protocolli aggiungere, puoi farlo anche tu. Dovrai conoscere il numero di porta e il protocollo per il tipo di traffico che stai aggiungendo.
Aggiungiamo il traffico HTTPS alla zona pubblica. Che utilizza la porta 443 ed è una forma di traffico TCP.
sudo firewall-cmd --zone=public --add-port=443/tcp
Potresti fornire una gamma di porte fornendo la prima e l'ultima porta con un trattino " -
" tra di loro, come "400-450".
Per rimuovere una porta, sostituisci --add-port
con --remove-port
.
CORRELATI: Qual è la differenza tra TCP e UDP?
Utilizzo della GUI
Premi il tasto "Super" e inizia a digitare "firewall". Vedrai l'icona del muro di mattoni per l'applicazione firewall-config
.
Fare clic sull'icona per avviare l'applicazione.
Aggiungere un servizio a firewalld
utilizzando la GUI è facile come selezionare una zona dall'elenco delle zone e selezionare il servizio dall'elenco dei servizi.
Puoi scegliere di modificare la sessione in esecuzione o la configurazione permanente selezionando “Runtime” o “Permanente” dal menu a tendina “Configurazione”.
Per apportare modifiche alla sessione in esecuzione e confermare le modifiche solo dopo averne verificato il funzionamento, imposta il menu "Configurazione" su "Runtime". Apporta le tue modifiche. Quando sei felice che stiano facendo quello che vuoi, usa l'opzione di menu Opzioni > Da runtime a permanente.
Per aggiungere una porta e una voce di protocollo a una zona, selezionare la zona dall'elenco delle zone e fare clic su "Porte". Facendo clic sul pulsante Aggiungi è possibile fornire il numero di porta e selezionare il protocollo da un menu.
Per aggiungere un protocollo, fai clic su "Protocolli", fai clic sul pulsante "Aggiungi" e seleziona il protocollo dal menu a comparsa.
Per spostare un'interfaccia da una zona all'altra, fare doppio clic sull'interfaccia nell'elenco "Connessioni", quindi selezionare la zona dal menu a comparsa.
La punta dell'iceberg
C'è molto di più che puoi fare con firewalld
, ma questo è sufficiente per farti funzionare. Con le informazioni che ti abbiamo fornito, sarai in grado di creare regole significative nelle tue zone.