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.