Come iniziare con firewalld su Linux

Pubblicato: 2022-07-08
Schermo del laptop che mostra una riga di comando di Linux.
fatmawati achmad zaenuri/Shutterstock.com

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.

Che cosa fa effettivamente un firewall?
CORRELATI Che cosa fa effettivamente un firewall?

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 

Installazione di firewalld su Ubuntu

 sudo apt install firewall-config 

Installazione di firewall-config su Ubuntu

Su Fedora, firewalld è già installato. Abbiamo solo bisogno di aggiungere firewall-config .

sudo dnf install firewall-config

Installazione di firewall-config su Fedora

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 

Installazione di firewalld e firewall-config con un comando su Manjaro

È necessario abilitare il demone firewalld per consentirne l'esecuzione ogni volta che il computer si avvia.

 sudo systemctl abilita firewalld 

Abilitazione di firewalld all'avvio automatico all'avvio

E dobbiamo avviare il demone in modo che sia in esecuzione ora.

 sudo systemctl start firewalld 

Avvio del demone firewalld

Possiamo usare systemctl per verificare che firewalld sia stato avviato e funzioni senza problemi:

 sudo systemctl status firewalld 

Verifica dello stato di firewalld con systemctl

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 

Verifica dello stato di firewalld con il comando firewall-cmd

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 

Trovare la zona firewalld predefinita

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 

Elenco dei dettagli della zona pubblica

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 

Una zona con due interfacce al suo interno

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 

Elenco di tutte le zone firewalld

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 

Elenco dei dettagli di tutte le zone

Ciò è utile perché è possibile scorrere l'elenco o utilizzare la funzione di ricerca per cercare numeri di porta, protocolli e servizi.

I dettagli di tutte le zone visualizzate in meno

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 

Aggiunta di un'interfaccia di rete alla zona domestica

Diamo un'occhiata alla zona di casa e vediamo se la nostra modifica è stata apportata.

 sudo firewall-cmd --zone=home --list-all 

La zona domestica con un'interfaccia di rete aggiunta

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 

Ricaricare la configurazione del firewall

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 

Elencare i servizi firewalld può fare riferimento per nome

La nostra versione di firewalld elencava 192 servizi. Per abilitare un servizio in una zona, utilizzare l'opzione --add-service .

Elenco dei servizi riconosciuti

Possiamo aggiungere un servizio a una zona usando l'opzione --add-service .

 sudo firewall-cmd --zone=public --add-service=http 

Aggiunta del servizio HTTP a una zona

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 

Aggiunta di una porta e di un protocollo di associazione a una zona

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”.

Il menu a tendina di 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.

Aggiunta di un'associazione di porta e protocollo tramite la GUI di configurazione del firewall

Per aggiungere un protocollo, fai clic su "Protocolli", fai clic sul pulsante "Aggiungi" e seleziona il protocollo dal menu a comparsa.

Un protocollo nell'area pubblica, nella GUI di configurazione del firewall

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.

Spostamento di un'interfaccia di rete da una zona all'altra nella GUI di configurazione del firewall

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.