Oggi vi spiegherò come configurare firewalld. Esso è un software di gestione firewall disponibile per molte distribuzioni Linux, che funge da frontend per i sistemi di filtro per i pacchetti nftables iptables in-kernel di Linux.
Il servizio firewalld consente tuttavia di configurare regole e set di regole gestibili che tengono conto dell’ambiente di rete. Ti consente di passare senza soluzione di continuità tra le diverse politiche del firewall attraverso l’uso delle zone di conseguenza offre agli amministratori la possibilità di utilizzare la gestione delle porte in definizioni di servizio più amichevoli. L’acquisizione di una conoscenza pratica di questo sistema, quindi, ti consentirà di sfruttare la flessibilità e la potenza fornite da questo strumento.
In questa guida, ti mostrerò come impostare un firewall firewalld per il tuo server e tratteremo le basi della gestione del firewall con lo strumento amministrativo firewall-cmd. Firewall per Asterisk – FreePBX

Concetti di base in firewalld – Firewall per Asterisk – FreePBX

Prima di iniziare a parlare di come utilizzare effettivamente l’utilità firewall-cmd per gestire la configurazione del firewall, dovremmo acquisire familiarità soprattutto con alcuni concetti introdotti dallo strumento.

Zone

Il demone firewalld gestisce gruppi di regole usando entità chiamate zone. Le zone sono insiemi di regole che determinano il traffico che dovrebbe essere consentito in base al livello di fiducia che si ha nella rete. Le interfacce di rete sono assegnate a una zona per dettare il comportamento che il firewall dovrebbe consentire.
Per i computer che potrebbero spostarsi frequentemente tra le reti (come i laptop), questo tipo di flessibilità offre un buon metodo per modificare le regole in base al proprio ambiente. Potrebbero essere in vigore regole rigide che vietano la maggior parte del traffico quando si opera su una rete WiFi pubblica, consentendo nel contempo restrizioni più rilassate quando si è connessi alla rete domestica. Per un server, queste zone spesso non sono così importanti perché l’ambiente di rete raramente, se non mai, cambia.
Indipendentemente da quanto dinamico possa essere l’ambiente di rete, è comunque utile conoscere l’idea generale alla base di ciascuna delle zone predefinite per firewalld. Le zone predefinite all’interno di firewalld sono, in ordine dal meno attendibile al più attendibile:

  • drop: il livello più basso di fiducia. Tutte le connessioni in entrata vengono eliminate senza risposta di conseguenza sono possibili solo le connessioni in uscita.
  • block: simile al precedente, ma invece di eliminare semplicemente le connessioni, le richieste in arrivo vengono rifiutate con un messaggio icmp-host-vietato o icmp6-adm-proibito.
  • public: rappresenta reti pubbliche non attendibili. Non ti fidi di altri computer ma potresti consentire connessioni in entrata selezionate caso per caso.
  • external: reti esterne nel caso in cui si utilizzi il firewall come gateway. È configurato per il mascheramento NAT in modo che la rete interna rimanga privata ma raggiungibile.
  • internal: l’altro lato della zona esterna, utilizzato per la parte interna di un gateway. I computer sono abbastanza affidabili e sono disponibili alcuni servizi aggiuntivi.
  • dmz: utilizzato per computer situati in una DMZ (computer isolati che non avranno accesso al resto della rete). Sono consentite solo determinate connessioni in entrata.
  • work: usato per macchine da lavoro. Fidati della maggior parte dei computer nella rete. Alcuni altri servizi potrebbero essere consentiti.
  • home: un ambiente domestico. In genere implica che ti fidi della maggior parte degli altri computer e che verranno accettati alcuni altri servizi.
  • trusted: fidati di tutte le macchine della rete. La più aperta delle opzioni disponibili e dovrebbe essere usata con parsimonia.

Per utilizzare il firewall, possiamo creare regole e modificare le proprietà delle nostre zone e quindi assegnare le nostre interfacce di rete a qualsiasi zona sia più appropriata.

Permanenza delle regole

In firewalld, le regole possono essere applicate al set di regole di runtime corrente o essere rese permanenti. Quando una regola viene aggiunta o modificata, per impostazione predefinita viene modificato solo il firewall attualmente in esecuzione. Dopo il successivo riavvio o dopo aver ricaricato il servizio firewalld, come risultato rimarranno solo le regole permanenti.
La maggior parte delle operazioni firewall-cmd possono prendere un flag –permanent per indicare che le modifiche devono essere applicate alla configurazione permanentemente. Inoltre, il firewall attualmente in esecuzione può essere salvato nella configurazione permanente con il comando firewall-cmd –runtime-to-permanent.
In seguito a questa separazione tra runtime e configurazione permanente puoi testare in sicurezza le regole nel tuo firewall attivo, quindi ricaricare per ricominciare se ci sono problemi.

NOTA: i comandi vanno eseguiti con l’utente root o con un utente con poteri di root oppure anteponendo sudo al comando

Installare e abilitare firewalld – Firewall per Asterisk – FreePBX

firewalld è installato di default su alcune distribuzioni Linux. Tuttavia, potrebbe essere necessario installare firewalld da soli:

# dnf install firewalld

In seguito all’installazione di firewalld, è possibile abilitare il servizio e riavviare il server. Tenere presente che l’abilitazione di firewalld provoca l’avvio del servizio all’avvio. Nel frattempo è consigliabile creare le regole del firewall e cogliere l’occasione per testarle prima di configurare questo comportamento al fine di evitare potenziali problemi:

# systemctl enable firewalld
# systemctl start firewalld

Al riavvio del server, il firewall deve essere attivato, le interfacce di rete devono essere collocate nelle zone configurate (o ricadere nella zona predefinita configurata) e tutte le regole associate alle zone verranno applicate alle interfacce associate.

Possiamo verificare che il servizio sia in esecuzione e raggiungibile digitando:

# firewall-cmd –state

Outpoot:
running

Ciò indica che il nostro firewall è attivo e funzionante con la configurazione predefinita.

Acquisire familiarità con le attuali regole del firewall

Prima di iniziare ad apportare modifiche in altre parole, dovremmo familiarizzare con l’ambiente e le regole predefiniti forniti da firewalld.

Esplorazione dei valori predefiniti

Possiamo vedere quale zona è attualmente selezionata come predefinita digitando:

# firewall-cmd –get-default-zone

Output:
public

Poiché non abbiamo dato al firewalld alcun comando per deviare dalla zona predefinita e nessuna delle nostre interfacce è configurata per collegarsi a un’altra zona, quella zona sarà anche l’unica zona attiva (la zona che controlla il traffico per le nostre interfacce) . Possiamo verificarlo digitando:

# firewall-cmd –get-active-zones

Output:
public
interfaces: eth0 eth1

Qui, possiamo vedere che il nostro server per esempio ha due interfacce di rete controllate dal firewall (eth0 ed eth1). Entrambi sono attualmente gestiti secondo le regole definite per la zona public.

In aggiunta come facciamo a sapere quali regole sono associate alla zona public? Possiamo stampare la configurazione della zona predefinita digitando:

# firewall-cmd –list-all

Output:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Ancora. dall’output possiamo dire che questa zona è sia quella predefinita sia quella attiva e che le interfacce eth0 ed eth1 sono associate a questa zona (già sapevamo tutto questo dalle nostre precedenti indagini). Tuttavia, possiamo anche vedere che questa zona consente il traffico per un client DHCP (per l’assegnazione dell’indirizzo IP), SSH (per l’amministrazione remota) e Cockpit (una console basata sul web).

Esplorazione di zone alternative

Ora abbiamo una buona idea della configurazione per la zona predefinita e attiva, dopo questo possiamo trovare informazioni anche su altre zone.
Per ottenere un elenco delle zone disponibili digitare:

# firewall-cmd –get-zones

Output:
block dmz drop external home internal public trusted work

Inoltre possiamo vedere la configurazione specifica associata ad una zona includendo il parametro –zone= nel nostro comando —list-all:

# firewall-cmd –zone=home –list-all

Output:
home target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

Puoi generare tutte le definizioni delle zone usando l’opzione –list-all-zone. Quindi probabilmente vorrai reindirizzare l’output in una forma impaginata per una visualizzazione più semplice:

# firewall-cmd –list-all-zones | less

Comunque successivamente impareremo come assegnare zone alle interfacce di rete.

Selezione delle zone per le tue interfacce

A meno che non siano state configurate le interfacce di rete ogni interfaccia verrà inserita nell’area predefinita all’avvio del firewall.

Modifica della zona di un’interfaccia

Puoi spostare un’interfaccia tra le zone durante una sessione usando il parametro –zone= in combinazione con il parametro   –change-interface=
Ad esempio, possiamo spostare la nostra interfaccia eth0 nella zona principale digitando questo:

# firewall-cmd –zone=home –change-interface=eth0

Output:
success

Nota: ogni volta che si sposta un’interfaccia in una nuova zona, tenere presente che probabilmente si sta modificando quali servizi saranno operativi. Per esempio, qui ci stiamo spostando nella zona di casa, che ha SSH disponibile. Di conseguenza ciò significa che la nostra connessione non dovrebbe cadere. Alcune altre zone non hanno SSH abilitato per impostazione predefinita e il passaggio a una di queste zone potrebbe causare l’interruzione della connessione, impedendo di accedere nuovamente al server.

Possiamo verificare che ciò abbia avuto successo chiedendo di nuovo le zone attive:

# firewall-cmd –get-active-zones

Output:
home
interfaces: eth0
public
interfaces: eth1

Regolazione della zona predefinita – Firewall per Asterisk – FreePBX

Se tutte le tue interfacce possono essere gestite bene da una singola zona, è probabilmente più semplice designare la zona migliore come predefinita e quindi usarla per la tua configurazione.
Puoi cambiare la zona predefinita con il parametro –set-default-zone = Questo cambierà immediatamente qualsiasi interfaccia usando la zona predefinita:

# firewall-cmd –set-default-zone=home

Output:
success