LINUX

Come configurare Firewall con FirewallD

Firewalld è uno strumento di gestione del firewall che funge da front-end per il framework netfilter del kernel Linux. È un potente firewall basato su zone che monitora il traffico di rete e applica una serie di regole definite per controllare il traffico in entrata/uscita.

Firewalld è scritto in Python e fa parte di systemd. Supporta entrambe le reti IPv4 e IPv6.

Il vantaggio principale è che le modifiche possono essere apportate senza riavviare il servizio e le configurazioni con l’interfaccia D-Bus possono essere facilmente gestite.

In questo tutorial impariamo come configurare Firewalld su Linux e i suoi concetti di base.

iniziare

Firewalld è costituito da due strati chiamati ca nucleo e D-Bus strato. Il livello di base gestisce la configurazione e il backend. Il livello D-Bus è responsabile della modifica e della creazione della configurazione del firewall.

Supporta firewalld le zone e Servizi. Le zone sono un insieme di regole predefinite che regolano il tipo di traffico consentito al server in base al livello di attendibilità delle interfacce di rete collegate al server. Ciò significa che è possibile assegnare un’interfaccia di rete a una zona. I servizi consentono di configurare porte, moduli e indirizzi di destinazione.

firewall-cmd è lo strumento a riga di comando utilizzato per gestire le configurazioni in esecuzione e permanenti.

Zone firewall predefinite

Il aree predefinite sono conservati nella directory denominata /usr/lib/firewalld/zones/. Di seguito sono riportate alcune delle zone predefinite fornite da Firewalld in base a diversi livelli di attendibilità, da attendibile a non attendibile.

Affidabile: questa zona accetta tutte le connessioni e considera attendibili tutti i computer della rete.

Pubblico: Impiegato in aree pubbliche diffidenti. L’attendibilità è minima su altri computer, ma le connessioni in entrata selezionate potrebbero essere ancora consentite.

caduta improvvisa: Tutto il traffico in entrata o in uscita viene interrotto. È consentito solo il traffico in uscita.

Esterno: implementato su reti esterne quando il sistema funge da router con mascheramento NAT abilitato. Sono consentite solo le connessioni di ingresso selezionate.

Interno: Implementato solo su reti interne con il tuo sistema che funge da router con NAT masquerading abilitato. Altri computer sono attendibili e solo a poche connessioni in entrata selezionate viene concesso l’accesso.

bloccare: Block zone rifiuta tutte le connessioni in entrata con un messaggio icmp-host-prohibited per IPv4 e icmp6-adm-prohibited per IPv6n. Qui sono consentite solo connessioni in uscita.

dmz: Utilizzato per sistemi o PC in una zona demilitarizzata (DMZ) con accesso limitato al resto dei sistemi sulla rete di computer. Per impostazione predefinita, consente solo il traffico SSH.

il lavoro: Workspace è implementato per sistemi di lavoro o PC. Esiste un livello generale di attendibilità per tutti gli altri computer della rete e sono consentite solo connessioni in entrata selezionate.

La casa: La zona home viene utilizzata dai sistemi domestici e, come la zona di lavoro, tutti i PC sono generalmente considerati attendibili e sono consentite solo connessioni in entrata selezionate.

Runtime del firewall e impostazioni permanenti

La configurazione in esecuzione effettiva è la configurazione in esecuzione. È transitorio e non sopravvive a un riavvio. Al riavvio del server, Firewalld carica la configurazione permanente, che successivamente diventa la configurazione in esecuzione.

Quando vengono apportate modifiche alla configurazione di Firewalld, vengono applicate direttamente alla configurazione in esecuzione. Per rendere persistenti le modifiche, invocare --permanent opzione.

Installazione e abilitazione di Firewalld

Firewalld è disponibile per impostazione predefinita su Red Hat, CentOS, Fedora, Suse Linux. Su Debian/Ubuntu è disponibile nel repository dei pacchetti.

RedHat/CentOS

Se firewalld non è installato, installalo eseguendo il seguente comando:

$ sudo yum install firewalld

Debian/Ubuntu

$ sudo apt install firewalld

Una volta installato, puoi controllare lo stato:

$ sudo systemctl status firewalld

L’output indicherà attivo (in esecuzione) se Firewalld è attivo e in esecuzione.

In alternativa, puoi confermare lo stato di funzionamento tramite:

$ sudo firewall-cmd state

Una volta installato, avvia e abilita Firewalld eseguendo i seguenti comandi:

$ sudo systemctl start firewalld

Abilita Firewalld all’avvio del sistema, digita:

$ sudo systemctl enable firewalld

Per arrestare temporaneamente Firewalld, digitare:

$ sudo systemctl stop firewalld

Per disabilitare Firewalld all’avvio, digitare:

$ sudo systemctl disable firewalld

Gestione delle zone Firewall

Vediamo come gestire le zone Firewalld.

1. Per impostazione predefinita, la zona pubblica è la zona predefinita di Firewalld. Per confermare ciò, esegui il comando:

$ sudo firewall-cmd --get-default-zone

Produzione:

public

2. Per ottenere una panoramica di tutte le zone, eseguire il comando:

$ sudo firewall-cmd --get-zones

Questo elencherà tutte le aree.

Produzione:

block dmz drop external home internal public trusted work

3. Le interfacce di rete, per impostazione predefinita, sono generalmente collegate alla zona predefinita. Per verificare le zone utilizzate dalle interfacce di rete, eseguire il seguente comando.

$ sudo firewall-cmd --get-active-zones

In questo caso, ho un’interfaccia di rete attiva – enp0s3 – che è assegnato alla zona predefinita.

Elenca le zone firewalld assegnate a un'interfaccia
Elenca le zone firewalld assegnate a un’interfaccia

4. Per visualizzare l’intera configurazione di una zona,

Per visualizzare la configurazione della zona pubblica, digitare:

$ sudo firewall-cmd --zone=public --list-all

Per visualizzare una panoramica della zona predefinita, digitare:

$ sudo firewall-cmd --list-all

5. Per elencare la configurazione di tutte le zone Firewalld, digitare:

$ sudo firewall-cmd  --list-all-zones

Cambia la zona predefinita

La zona predefinita assegnata a tutte le interfacce di rete è public. Puoi impostarlo in un’area diversa.

6. Per cambiare la zona predefinita in un’altra zona, digitare:

$ sudo firewall-cmd --set-default-zone=trusted

Qui, ho cambiato la zona predefinita in trusted la zona.

Modificare la zona assegnata a un’interfaccia

Per modificare la zona di un’interfaccia di rete in un’altra zona, utilizzare --zone opzione.

7. Per modificare l’area dell’interfaccia enp0s3 a trustedgenere:

$ sudo firewall-cmd --zone=home --change-interface=enp0s3

Servizi firewall

I file del servizio Firewalld si trovano nel file /usr/lib/firewalld/services percorso in formato file xml. Ce ne sono centinaia e usa il comando ls per elencare.

$ ls /usr/lib/firewalld/services

Ad esempio, il file del servizio MongoDB vorrebbe:

$ sudo vim /usr/lib/firewalld/services/mongodb.xml
File di servizio MongoDB xml
File di servizio MongoDB xml

Per impostazione predefinita, i servizi dhcp-client e ssh sono consentiti sul firewall. Dall’output, si noti che è stato consentito anche https.

Per creare un nuovo servizio Firewalld, copia semplicemente un file di servizio esistente e assegnagli un nuovo nome di servizio. Quindi definisci quel file xml.

Una delle funzionalità più utilizzate del firewall è quella di aprire le porte e consentire l’accesso al server. Firewalld ha servizi predefiniti.

8. Per visualizzare tutti i servizi digitare:

$ sudo firewall-cmd --get-services

9. Consenti traffico in entrata

Per consentire il traffico in entrata per il servizio mssql, digitare:

$ sudo firewall-cmd --zone=public --add-service=mssql

10. Per controllare i servizi aggiunti:

$ sudo firewall-cmd --zone=public --list-services

Produzione:

dhcpv6-client mssql ssh

11. Per mantenere la modifica anche dopo un riavvio, invocare --permanent opzione come segue.

$ sudo firewall-cmd --zone=public --add-service=https --permanent

12. Per rendere effettive le modifiche, ricaricare firewalld

$ sudo firewall-cmd --reload

13. Per rimuovere un servizio dal firewall, utilizzare --remove opzione

$ sudo firewall-cmd --zone=public --remove-service=https --permanent
Rimuovi un servizio dalla configurazione di Firewalld
Rimuovi un servizio dalla configurazione di Firewalld

Il comando precedente rimuove definitivamente i servizi HTTPS dall’area pubblica.

14. Per aprire la porta su firewalld

Ad esempio, il servizio Xrdp, che consente a un utente di connettersi in remoto al desktop di un sistema remoto, è associato alla porta TCP 3389.

Per aprire la porta nell’area pubblica, digitare:

$ sudo firewall-cmd --zone=public --add-port=3389/tcp
Consenti una porta nella configurazione Firewalld
Apri una porta

Ricordati di ricaricare Firewalld per rendere effettive le modifiche.

Port forwarding con Firewalld

15. Per abilitare il mascheramento per l’area pubblica

Per inoltrare il traffico da una porta a un’altra o a un indirizzo, innanzitutto avviare o abilitare il mascheramento per la zona preferita invocando --add-masquerade opzione.

$ sudo firewall-cmd --zone=public --add-masquerade

16. Inoltra il traffico da una porta all’altra sullo stesso server

Per configurare Firewalld in modo che il traffico in entrata che arriva a una porta specifica venga reindirizzato a un’altra porta sullo stesso server.

Per inoltrare il traffico in arrivo sulla porta 80 alla porta 6000 nell’area pubblica, digitare:

$ sudo firewall-cmd --zone=public--add-forward-port=port=80:proto=tcp:toport=6000

17. Inoltra il traffico a un’altra porta su un altro server

In alternativa, il traffico che passa da una porta può essere inoltrato a un’altra porta situata su un altro server.

Per far passare il traffico attraverso la porta 80 viene inoltrato alla porta 8080 su un altro server il cui indirizzo IP è 192.168.10.10, digitare:

$ sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.10.10

Imposta regole per gestire il traffico in entrata

Per consentire il traffico in entrata da un’origine di utilizzo specifica --add-source opzione.

Per consentire tutto il traffico in entrata da 192.168.10.0/24 nella zona attendibile, digitare:

$ sudo firewall-cmd  --zone=trusted --add-source=192.168.10.0/24 --permanent

Crea una nuova area

Puoi creare le tue zone e aggiungere una serie di regole. Nella maggior parte dei casi, le aree predefinite sono sufficienti. Ci consente di creare una nuova zona per un server Web e consentire determinati servizi/interfacce.

Crea una nuova zona chiamata webzone:

$ sudo firewall-cmd --permanent --new-zone=webzone

Controlla elencando le zone permanenti, digita:

$ sudo firewall-cmd --permanent --get-zones

Produzione:

block dmz drop external home internal public trusted webzone work

Per diventare efficiente nella configurazione attiva, digitare:

$ sudo firewall-cmd --reload

Per aprire il servizio ssh, http, https e assegnare l’interfaccia alla zona Web, eseguire i seguenti comandi:

$ sudo firewall-cmd --zone=webzone --add-service=ssh
$ sudo firewall-cmd --zone=webzone --add-service=http
$ sudo firewall-cmd --zone=webzone --add-service=https
$ sudo firewall-cmd --zone=webzone --add-interface=eth0

Per visualizzare la configurazione della web zone digitare:

$ sudo firewall-cmd --zone=webzone --list-all

Produzione:

webzone
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: http https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Regole ricche

La regola ricca aiuta a impostare regole firewall più complesse.

Ad esempio, per abilitare l’accesso per l’indirizzo IP, l’indirizzo di origine e la porta specifici, digitare:

$ sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="23.92.31.51/32" port port=21 protocol="tcp" accept"

riepilogo

In questo tutorial abbiamo imparato come configurare Firewalld su Linux e i suoi concetti di base.

Se hai feedback e suggerimenti, commenta di seguito.

Articoli Correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Pulsante per tornare all'inizio