Ricerca nel sito web

Come configurare FirewallD in RHEL, Rocky e AlmaLinux


Net-filter come tutti sappiamo è un firewall in Linux. Firewalld è un demone dinamico per gestire i firewall con supporto per le zone di rete. Nella versione precedente, RHEL e CentOS abbiamo utilizzato iptables come demone per il framework di filtraggio dei pacchetti.

Nelle versioni più recenti delle distribuzioni basate su RHEL come Fedora, Rocky Linux, CentOS Stream, AlmaLinux e openSUSE – l'interfaccia iptables viene sostituita da firewalld.

Si consiglia di iniziare a utilizzare Firewalld anziché iptables poiché ciò potrebbe essere interrotto in futuro. Tuttavia, iptables sono ancora supportati e possono essere installati con il comando yum. Non possiamo mantenere Firewalld e iptables entrambi nello stesso sistema, il che potrebbe causare conflitti.

In iptables, configuravamo come INPUT, OUTPUT e FORWARD CHAINS ma qui in Firewalld<, il concetto utilizza Zone. Per impostazione predefinita, sono disponibili diverse zone in firewalld, di cui parleremo in questo articolo.

La zona base che è come la zona pubblica e la zona privata. Per far funzionare le cose con queste zone, dobbiamo aggiungere l'interfaccia con il supporto della zona specificata e poi possiamo aggiungere i servizi a firewalld.

Per impostazione predefinita, ci sono molti servizi disponibili, una delle migliori caratteristiche di firewalld è che viene fornito con servizi predefiniti e possiamo prendere questi servizi come esempio per aggiungere i nostri servizi semplicemente copiandoli.

Firewalld funziona benissimo anche con IPv4, IPv6 e bridge Ethernet. Possiamo avere un runtime separato e una configurazione permanente in firewalld.

Cominciamo a lavorare con le zone e a creare i nostri servizi e un utilizzo molto più entusiasmante di firewalld in Linux.

Il nostro ambiente di test

Operating System :	Red Hat Enterprise Linux release 9.0 (Plow)
IP Address       :	192.168.0.159
Host-name	:	tecmint-rhel9

Passaggio 1: installazione di Firewalld nei sistemi basati su RHEL

1. Il pacchetto Firewalld è installato per impostazione predefinita in RHEL, Fedora, Rocky Linux , CentOS Stream, AlmaLinux e openSUSE. In caso contrario, puoi installarlo utilizzando il seguente comando yum.

yum install firewalld -y

2. Dopo aver installato il pacchetto firewalld, è il momento di verificare se il servizio iptables è in esecuzione o meno, se in esecuzione è necessario arresta e maschera (non utilizzare più) il servizio iptables con i comandi seguenti.

systemctl status iptables
systemctl stop iptables
systemctl mask iptables

Passaggio 2: comprendere i componenti Firewalld (zone e regole)

3. Prima di passare alla configurazione del firewalld, vorrei discutere di ciascuna zona. Per impostazione predefinita, ci sono alcune zone disponibili. Dobbiamo assegnare l'interfaccia alla zona. Una zona definisce la zona considerata attendibile o negata a livello dell'interfaccia per ottenere una connessione. Una zona può contenere servizi e porti.

Qui descriveremo ciascuna zona disponibile in Firewalld.

  • Drop Zone: tutti i pacchetti in entrata vengono scartati se utilizziamo una drop zone. È lo stesso che usiamo per aggiungere iptables -j drop. Se utilizziamo la regola di eliminazione, significa che non c'è risposta, saranno disponibili solo le connessioni di rete in uscita.
  • Zona di blocco: la zona di blocco negherà che le connessioni di rete in entrata vengano rifiutate con un icmp-host-prohibited. Saranno consentite solo le connessioni stabilite all'interno del server.
  • Zona pubblica: per accettare le connessioni selezionate possiamo definire regole nella zona pubblica. Ciò consentirà solo l'apertura della porta specifica nel nostro server, le altre connessioni verranno interrotte.
  • Zona esterna: questa zona fungerà da opzioni del router con il masquerading abilitato, le altre connessioni verranno interrotte e non accetteranno e saranno consentite solo le connessioni specificate.
  • Zona DMZ: se dobbiamo consentire l'accesso ad alcuni servizi al pubblico, puoi definirlo nella zona DMZ. Anche questo ha la caratteristica di accettare solo le connessioni in entrata selezionate.
  • Zona di lavoro: in questa zona possiamo definire solo le reti interne, ovvero è consentito il traffico delle reti private.
  • Zona Home: questa zona è utilizzata specialmente nelle aree domestiche, possiamo usare questa zona per fidarci degli altri computer sulle reti per non danneggiare il tuo computer come in ogni zona. Anche questo consente solo le connessioni in entrata selezionate.
  • Zona interna: questa è simile alla zona di lavoro con connessioni consentite selezionate.
  • Zona attendibile: se impostiamo la zona attendibile tutto il traffico viene accettato.

Ora hai un'idea migliore delle zone, ora scopriamo le zone disponibili e le zone predefinite ed elenchiamo tutte le zone utilizzando i seguenti comandi.

Elenca le zone firewall

firewall-cmd --get-zones

Elenca le zone predefinite di Firewalld

firewall-cmd --get-default-zone

Elenca tutte le zone firewall

firewall-cmd --list-all-zones

Nota: l'output del comando precedente non entrerà in una singola pagina poiché elencherà tutte le zone come blocco, dmz, drop, esterno, home, interno, pubblico, affidabile e lavorativo. Se le zone hanno regole avanzate, verranno elencati anche i servizi o le porte abilitati con le rispettive informazioni sulla zona.

Passaggio 3: impostazione della zona firewall predefinita

4. Se desideri impostare la zona predefinita come interna, esterna, rilascio, lavoro o qualsiasi altra zona, puoi utilizzare il comando seguente per impostare la zona predefinita. Qui utilizziamo la zona "interna" come predefinita.

firewall-cmd --set-default-zone=internal

5. Dopo aver impostato la zona, verifica la zona predefinita utilizzando il comando seguente.

firewall-cmd --get-default-zone

6. Qui, la nostra interfaccia è enp0s3, se dobbiamo controllare la zona in cui è delimitata l'interfaccia possiamo usare il comando seguente.

firewall-cmd --get-zone-of-interface=enp0s3

7. Un'altra caratteristica interessante di firewalld è "icmptype" che è uno dei tipi icmp supportati da firewalld. Per ottenere l'elenco dei tipi icmp supportati possiamo utilizzare il comando seguente.

firewall-cmd --get-icmptypes

Passaggio 4: creazione dei propri servizi in Firewalld

8. I servizi sono un insieme di regole con porte e opzioni utilizzate da Firewalld. I servizi abilitati verranno caricati automaticamente quando il servizio Firewalld sarà attivo e funzionante.

Per impostazione predefinita, sono disponibili molti servizi. Per ottenere l'elenco di tutti i servizi disponibili, utilizzare il comando seguente.

firewall-cmd --get-services

9. Per ottenere l'elenco di tutti i servizi disponibili predefiniti, vai alla seguente directory, qui otterrai l'elenco dei servizi.

cd /usr/lib/firewalld/services/

10. Per creare il tuo servizio, devi definirlo nella seguente posizione. Ad esempio, qui voglio aggiungere un servizio per la porta RTMP 1935, prima crea una copia di uno qualsiasi dei servizi.

cd /etc/firewalld/services/
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

Quindi, vai alla posizione in cui è stato copiato il nostro file di servizio, quindi rinomina il file "ssh.xml" in "rtmp.xml" come mostrato nell'immagine qui sotto.

cd /etc/firewalld/services/
mv ssh.xml rtmp.xml
ls -l rtmp.xml

11. Successivamente apri e modifica il file come Intestazione, Descrizione, Protocollo e Porta numero, che dobbiamo utilizzare per il servizio RTMP come mostrato nell'immagine seguente.

12. Per rendere attive queste modifiche, riavviare il servizio firewalld o ricaricare le impostazioni.

firewall-cmd --reload

13. Per confermare se un servizio è stato aggiunto o meno, esegui il comando seguente per ottenere un elenco dei servizi disponibili.

firewall-cmd --get-services

Passaggio 5: assegnazione dei servizi alle zone Firewalld

14. Qui vedremo come gestire il firewall utilizzando il comando firewall-cmd. Per conoscere lo stato attuale del firewall e di tutte le zone attive, digitare il seguente comando.

firewall-cmd --state
firewall-cmd --get-active-zones

15. Per ottenere la zona pubblica per l'interfaccia enp0s3, questa è l'interfaccia predefinita, definita in /etc/firewalld/firewalld.conf file come DefaultZone=public.

Per elencare tutti i servizi disponibili in questa zona dell'interfaccia predefinita.

firewall-cmd --get-service

Passaggio 6: aggiunta di servizi alle zone Firewalld

16. Negli esempi sopra abbiamo visto come creare i nostri servizi creando il servizio rtmp, qui vedremo come aggiungere il servizio rtmp servizio anche alla zona.

firewall-cmd --add-service=rtmp

17. Per rimuovere la zona aggiunta, digitare.

firewall-cmd --zone=public --remove-service=rtmp

Il passaggio precedente era solo un periodo temporaneo. Per renderlo permanente dobbiamo eseguire il comando seguente con l'opzione –permanent.

firewall-cmd --add-service=rtmp --permanent
firewall-cmd --reload

18. Definisci le regole per l'intervallo di origine della rete e apri una qualsiasi delle porte. Ad esempio, se desideri aprire un intervallo di rete, pronuncia "192.168.0.0/24" e la porta "1935" utilizza i seguenti comandi.

firewall-cmd --permanent --add-source=192.168.0.0/24
firewall-cmd --permanent --add-port=1935/tcp

Assicurati di ricaricare il servizio firewalld dopo aver aggiunto o rimosso eventuali servizi o porte.

firewall-cmd --reload 
firewall-cmd --list-all

Passaggio 7: aggiunta di regole avanzate di Firewalld per l'intervallo di rete

19. Se voglio consentire servizi come http, https, vnc-server e PostgreSQL, utilizzo le seguenti regole. Innanzitutto, aggiungi la regola e rendila permanente, quindi ricarica le regole e controlla lo stato.

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' 
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept' --permanent

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="https" accept' --permanent

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="vnc-server" accept' --permanent

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="postgresql" accept' --permanent

Ora, l'intervallo di rete 192.168.0.0/24 può utilizzare il servizio di cui sopra dal mio server. L'opzione –permanent può essere utilizzata in ogni regola, ma dobbiamo definire la regola e verificare con l'accesso del client, dopodiché dobbiamo renderla permanente.

20. Dopo aver aggiunto le regole di cui sopra, non dimenticare di ricaricare le regole del firewall ed elencare le regole utilizzando:

firewall-cmd --reload
firewall-cmd --list-all

Per saperne di più su Firewalld.

man firewalld

Questo è tutto, abbiamo visto come impostare un net-filter utilizzando Firewalld nelle distribuzioni basate su RHEL come Fedora, Rocky Linux, CentOS Stream, AlmaLinux e openSUSE.

Conclusione

Net-filter è la struttura per un firewall per ogni singola distribuzione Linux. In ogni edizione RHEL e CentOS, utilizzavamo iptables ma nelle versioni più recenti hanno introdotto Firewalld. È più facile comprendere e utilizzare firewalld. Spero che ti sia piaciuto l'articolo.