Introduzione
Firewalld è una soluzione di gestione del firewall disponibile per molte distribuzioni Linux. Funge da interfaccia per il sistema di filtraggio dei pacchetti iptables fornito dal kernel Linux. In questa guida imparerai come configurare un firewall per il tuo server. Ti mostreremo anche le basi della gestione del firewall con lo strumento di amministrazione firewall-cmd.
Basi di Firewalld
FirewallD utilizza i concetti di zone e servizi, anziché le catene e le regole di iptables. A seconda delle zone e dei servizi configurati, è possibile controllare quale traffico è consentito o meno da e verso il sistema. FirewallD può essere configurato e gestito utilizzando l'utilità della riga di comando firewall-cmd.
Installare e abilitare il firewall all'avvio
Sulla maggior parte delle distribuzioni Linux, firewallD è già installato. Tuttavia, se hai bisogno di installarlo autonomamente, digita la sintassi seguente:
|
1 |
sudo yum install firewalld |
Puoi abilitare il servizio e riavviare il server una volta installato firewalld:
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Successivamente, riavvia il server. Il firewall sarà abilitato una volta riavviato correttamente il server. Dopodiché, usa il comando seguente per verificare che il servizio sia stato attivato:
|
1 |
sudo firewall-cmd --state |

L'output mostra che l'impostazione predefinita del firewall funziona.
Verifica delle impostazioni predefinite
Puoi verificare la zona selezionata dal server usando questo comando:
|
1 |
firewall-cmd --get-default-zone |

Verifica la zona attiva digitando:
|
1 |
firewall-cmd --get-active-zones |

Stampa la configurazione della zona predefinita per conoscere le regole associate all'area pubblica utilizzando questa sintassi:
|
1 |
sudo firewall-cmd --list-all |

L'output indica che questa zona è sia quella predefinita che quella attiva. Mostra anche che le interfacce eth0 e eth1 sono assegnate a questa zona.
Verifica delle zone alternative
Oltre alle zone predefinite e attive, ci sono altre zone che puoi esplorare. Inserisci questo comando per vedere tutte le zone disponibili:
|
1 |
firewall-cmd --get-zones |

Verifica la configurazione specifica assegnata a una zona aggiungendo il parametro –zone= nel comando –list-all:
|
1 |
sudo firewall-cmd --zone=home --list-all |

Modifica della zona dell'interfaccia
Puoi facilmente modificare la zona dell'interfaccia usando l'opzione –change-interface combinata con l'opzione –change-interface. Il comando seguente assegnerà l'interfaccia eth1 all'area di lavoro:
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Puoi verificare le modifiche digitando:
|
1 |
sudo firewall-cmd --get-active-zones |
Modifica della zona predefinita
Per modificare la zona predefinita, usa –set-default-zone seguito dal nome della zona che desideri impostare come predefinita. Ad esempio, per modificare la zona predefinita, per iniziare, dovresti eseguire il comando seguente:
|
1 |
sudo firewall-cmd --set-default-zone=home |
Successivamente, puoi verificare le modifiche con:
|
1 |
sudo firewall-cmd --get-default-zone |
Impostazione delle regole per le tue applicazioni
Esaminiamo le basi necessarie per definire le eccezioni del firewall per i servizi:
Aggiunta di un servizio alle tue zone
Il modo più semplice consiste nell'aggiungere le porte o i servizi necessari alle zone in uso. Allo stesso modo, puoi utilizzare l'opzione –get-services per visualizzare tutti i servizi disponibili:
|
1 |
firewall-cmd --get-services |

È possibile attivare il servizio per una zona con il parametro –add-service =. L'azione ha come target la zona predefinita o qualsiasi zona definita dal parametro –zone =. Per impostazione predefinita, viene configurata solo la sessione corrente del firewall. È possibile impostare una configurazione permanente del firewall attivando il flag –permanent. Ad esempio, se si esegue un server web che fornisce traffico HTTP regolare, è possibile consentire questo traffico per le interfacce nella nostra zona “public” per questa sessione inserendo:
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
È possibile omettere –zone = se si desidera modificare la zona predefinita. È possibile verificare il successo dell'operazione con le operazioni –list-all o –list-services:
|
1 |
sudo firewall-cmd --zone=public --list-services |

Una volta verificato che tutto funzioni come previsto, molto probabilmente si vorrà modificare le regole permanenti del firewall per rendere il servizio ancora disponibile dopo un riavvio. Possiamo rendere permanente la modifica alla nostra zona “public” inserendo la sintassi:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http output: success |
È possibile verificare se l'operazione è andata a buon fine aggiungendo il flag –permanent all'operazione –list-services. È necessario utilizzare sudo per tutte le operazioni permanenti:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services output: dhcpv6-client http ssh |
La tua zona “public” ora consente il traffico HTTP sulla porta 80. Puoi aggiungere questo alla sessione corrente e al set di regole persistenti usando il comando qui sotto:
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
Se non ci sono servizi che soddisfano i tuoi requisiti, hai due ottime opzioni per gestire questa situazione:
- Aprire una porta per le tue zone
Il modo più semplice per aggiungere il supporto per la tua particolare applicazione è aprire le porte utilizzate in ciascuna zona. È semplice come designare una porta o un intervallo di porte e il protocollo corrispondente per le porte che devi aprire. Ad esempio, se la tua applicazione viene eseguita sulla porta 5000 e utilizza TCP, puoi aggiungerla alla zona “public” per questa sessione con il parametro –add-port =. I protocolli possono essere TCP o UDP:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp output: success |
Per verificare che l'operazione sia andata a buon fine, utilizza l'operazione –list-ports:
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Output: 5000/tcp |
Puoi anche specificare un intervallo per l'interfaccia seriale separando le porte di inizio e fine nell'intervallo con un trattino. Ad esempio, se la tua applicazione utilizza le porte UDP da 4990 a 4999, puoi aprirle in “public” scrivendo:
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Dopo il test, probabilmente vorremo aggiungerle al firewall permanente. Puoi farlo digitando quanto segue:
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Definire un servizio
Un servizio è una raccolta di porte con un nome e una descrizione associati. I servizi sono più facili da gestire rispetto alle porte, ma richiedono un piccolo lavoro iniziale. Il modo più semplice per iniziare consiste nel copiare uno script esistente (in / usr / lib / firewalld / services) nella directory /etc/firewalld/services. Ad esempio, è possibile copiare la definizione del servizio SSH da utilizzare nella definizione del servizio “example” come segue. Il nome del file meno il suffisso XML determina il nome del servizio nell'elenco dei servizi del firewall:
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
A questo punto, puoi modificare la definizione nel file copiato:
|
1 |
sudo vi /etc/firewalld/services/example.xml |
In primo luogo, il file contiene la definizione SSH copiata:
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) è un protocollo per accedere a e eseguire comandi su remote macchine. Esso fornisce sicure crittografate comunicazioni. Se si prevede di accedere alla propria macchina da remoto tramite SSH su un' protetta da firewall interfaccia, abilitare questa opzione. È necessario il openssh-server pacchetto installato perché questa opzione sia be utile.</description> <port protocol="tcp" port="22"/> </service> |
La maggior parte di questa definizione consiste in metadati. È necessario modificare il nome breve del servizio nei tag <short>. Questo è un nome di servizio leggibile. Immagina che per il nostro servizio “example”, dobbiamo aprire la porta 7777 per TCP e 8888 per UDP. È possibile modificare la definizione esistente entrando in modalità INSERISCI premendo i:
|
1 2 3 4 5 6 7 |
<xml version="1.0" encoding="utf-8"?> <service> <short>Esempio di Servizio</short> <description>Questo è solo un esempio di servizio. Esso probabilmente non dovrebbe't essere utilizzato su un reale sistema.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Successivamente, premi ESC e digita :x per salvare e chiudere il file. Quindi, digita il comando seguente per riavviare il firewall in modo da avere accesso al nuovo servizio;
|
1 |
sudo firewall-cmd --reload |
Dopodiché, usa il comando seguente per ottenere un elenco dei servizi disponibili:
|
1 |
firewall-cmd --get-services |

Questo servizio è ora disponibile nella tua zona.
Creazione delle proprie zone
Sebbene le zone predefinite siano probabilmente sufficienti per la maggior parte degli utenti, potrebbe essere utile definire le proprie zone che ne descrivano più dettagliatamente la funzione.
Quando aggiungi una zona, aggiungila alle impostazioni permanenti del firewall. Quindi puoi ricaricare per applicare le impostazioni alla sessione. Ad esempio, puoi creare le due zone discusse in precedenza digitando:
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Puoi confermare che siano presenti nella configurazione permanente usando questo comando:
|
1 |
sudo firewall-cmd --permanent --get-zones |

Ricarica il firewall per applicare queste nuove zone alla configurazione attiva:
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones output: block dmz drop external home internal privateDNS public publicweb trusted work |
Ora puoi assegnare i servizi e le porte appropriati alle tue zone. Ad esempio, per la zona “publicweb” potresti voler aggiungere i servizi SSH, HTTP e HTTPS:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

Inoltre, puoi aggiungere il servizio DNS alla tua zona “privateDNS” utilizzando questo comando:
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Successivamente, puoi cambiare le tue interfacce in queste nuove zone per testarle:
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Testa la configurazione per vedere se funziona. Se questi valori funzionano per te, devi aggiungere le stesse regole alla configurazione permanente. Puoi farlo riapplicando le regole con l'indicatore —permanent:
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Dopo aver applicato queste regole in modo permanente, puoi riavviare la rete e ricaricare il servizio firewall:
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Verifica che le zone siano state assegnate correttamente:
|
1 |
firewall-cmd --get-active-zones |

Inoltre, assicurati che entrambe le zone abbiano il servizio corretto:
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services output: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services output: dns |
Se desideri impostare una delle tue zone come predefinita per altre interfacce, devi configurare questo comportamento con il parametro –set-default-zone= utilizzando questo comando:
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Conclusione
A questo punto, hai creato con successo le tue zone. Dovresti avere una comprensione di base dell'amministrazione del servizio firewalld sul tuo sistema CentOS per l'uso quotidiano. Avere una buona padronanza del servizio firewalld ti consente di sfruttare appieno la sua potenza e flessibilità.
Buon computing!


Commenti
Ancora nessun commento. Scrivi il primo.