In parole semplici, un firewall è un sistema di sicurezza che controlla il traffico in ingresso e in uscita in una rete in base a un insieme di regole predefinite (come ad esempio la destinazione/partenza dei pacchetti o il tipo di traffico).

In questo articolo faremo una panoramica dei concetti di base di firewalld, il demone del firewall dinamico predefinito in Red Hat Enterprise Linux 7, e del servizio iptables, il servizio di firewall tradizionale per Linux, con cui la maggior parte degli amministratori di sistema e di rete è familiare, e che è disponibile anche in RHEL 7.
A Comparison Between FirewallD and Iptables
Nel complesso, sia firewalld che il servizio iptables comunicano con il framework netfilter nel kernel attraverso la stessa interfaccia, non a caso, il comando iptables. Tuttavia, a differenza del servizio iptables, firewalld può modificare le impostazioni durante il normale funzionamento del sistema senza perdere le connessioni esistenti.
Firewalld dovrebbe essere installato di default nel sistema RHEL, anche se potrebbe non essere in esecuzione. Puoi verificarlo con i seguenti comandi (firewall-config è lo strumento di configurazione dell’interfaccia utente):
# yum info firewalld firewall-config

e,
# systemctl status -l firewalld.service

D’altra parte, il servizio iptables non è incluso di default, ma può essere installato tramite.
# yum update && yum install iptables-services
Entrambi i demone possono essere avviati e abilitati all’avvio con i soliti comandi di systemd:
# systemctl start firewalld.service | iptables-service.service # systemctl enable firewalld.service | iptables-service.service
Leggi anche: Comandi utili per gestire i servizi di Systemd
Per quanto riguarda i file di configurazione, il servizio iptables utilizza il percorso /etc/sysconfig/iptables
(che non esisterà se il pacchetto non è installato nel tuo sistema). Su una RHEL 7 utilizzata come nodo di cluster, questo file appare come segue:

Mentre firewalld memorizza la sua configurazione in due directory, /usr/lib/firewalld
e /etc/firewalld
:
# ls /usr/lib/firewalld /etc/firewalld

Esamineremo questi file di configurazione più a fondo in seguito in questo articolo, dopo aver aggiunto alcune regole qua e là. Per il momento basta ricordare che puoi sempre trovare ulteriori informazioni su entrambi gli strumenti con.
# man firewalld.conf # man firewall-cmd # man iptables
Oltre a ciò, ricorda di dare un’occhiata a Rivedere i comandi essenziali e la documentazione di sistema – Parte 1 della serie attuale, dove ho descritto diverse fonti da cui puoi ottenere informazioni sui pacchetti installati nel tuo sistema RHEL 7.
Utilizzo di Iptables per controllare il traffico di rete
Potresti fare riferimento a Configurare il Firewall Iptables – Parte 8 della serie Linux Foundation Certified Engineer (LFCE) per rinfrescare la tua memoria sugli interni di iptables prima di procedere ulteriormente. In questo modo, saremo in grado di passare direttamente agli esempi.
Esempio 1: Consentire il traffico web in entrata e in uscita
I port TCP 80 e 443 sono i port predefiniti utilizzati dal server web Apache per gestire il traffico web normale (HTTP) e sicuro (HTTPS). Puoi consentire il traffico web in entrata e in uscita su entrambe le porte sull’interfaccia enp0s3 come segue:
# iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Esempio 2: Bloccare tutte (o alcune) le connessioni in entrata da una rete specifica
Può capitare che tu abbia bisogno di bloccare tutti (o alcuni) tipi di traffico provenienti da una rete specifica, ad esempio 192.168.1.0/24:
# iptables -I INPUT -s 192.168.1.0/24 -j DROP
questo scarterà tutti i pacchetti provenienti dalla rete 192.168.1.0/24, mentre,
# iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
permetterà solo il traffico in entrata attraverso la porta 22.
Esempio 3: Reindirizzare il traffico in entrata verso una destinazione diversa
Se si utilizza la propria casella RHEL 7 non solo come firewall software, ma anche come firewall basato sull’hardware effettivo, in modo da trovarsi tra due reti distinte, l’inoltro IP deve essere già abilitato nel sistema. In caso contrario, è necessario modificare il file /etc/sysctl.conf
e impostare il valore di net.ipv4.ip_forward su 1, come segue:
net.ipv4.ip_forward = 1
quindi salvare la modifica, chiudere l’editor di testo e infine eseguire il seguente comando per applicare la modifica:
# sysctl -p /etc/sysctl.conf
Ad esempio, è possibile avere una stampante installata su una casella interna con IP 192.168.0.10, con il servizio CUPS in ascolto sulla porta 631 (sia sul server di stampa che sul firewall). Per inoltrare le richieste di stampa dai client dall’altro lato del firewall, è necessario aggiungere la seguente regola iptables:
# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
Tenere presente che iptables legge le sue regole sequenzialmente, quindi assicurarsi che le politiche predefinite o le regole successive non sovrascrivano quelle descritte negli esempi sopra.
Primi passi con FirewallD
Una delle modifiche introdotte con firewalld sono le zone. Questo concetto consente di separare le reti in diverse zone a seconda del livello di fiducia che l’utente ha deciso di attribuire ai dispositivi e al traffico all’interno di quella rete.
Per elencare le zone attive:
# firewall-cmd --get-active-zones
Nell’esempio sottostante, la zona pubblica è attiva e l’interfaccia enp0s3 le è stata assegnata automaticamente. Per visualizzare tutte le informazioni su una particolare zona:
# firewall-cmd --zone=public --list-all

Dal momento che puoi leggere di più sulle zone nella guida alla sicurezza di RHEL 7, elencheremo solo alcuni esempi specifici qui.
Esempio 4: Consentire i servizi attraverso il firewall
Per ottenere un elenco dei servizi supportati, utilizzare.
# firewall-cmd --get-services

Per consentire il traffico web http e https attraverso il firewall, immediatamente ed in avvio successivo:
# firewall-cmd --zone=MyZone --add-service=http # firewall-cmd --zone=MyZone --permanent --add-service=http # firewall-cmd --zone=MyZone --add-service=https # firewall-cmd --zone=MyZone --permanent --add-service=https # firewall-cmd --reload
Se l’opzione –zone viene omessa, viene utilizzata la zona predefinita (è possibile verificarla con firewall-cmd –get-default-zone).
Per rimuovere la regola, sostituire la parola add con remove nei comandi sopra riportati.
Esempio 5: Inoltro IP / Porta
Innanzitutto, è necessario verificare se il mascheramento è abilitato per la zona desiderata:
# firewall-cmd --zone=MyZone --query-masquerade
Nell’immagine qui sotto, possiamo vedere che il mascheramento è abilitato per la zona esterna, ma non per la pubblica:

Puoi abilitare il mascheramento per la zona pubblica:
# firewall-cmd --zone=public --add-masquerade
o utilizzare il mascheramento nella zona esterna. Ecco cosa faremmo per replicare l’Esempio 3 con firewalld:
# firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
E non dimenticare di ricaricare il firewall.
È possibile trovare ulteriori esempi sulla Parte 9 della serie RHCSA, in cui abbiamo spiegato come consentire o disabilitare le porte solitamente utilizzate da un server web e un server ftp, e come modificare la regola corrispondente quando la porta predefinita per quei servizi viene modificata. Inoltre, potresti voler consultare la wiki di firewalld per ulteriori esempi.
Leggi anche: Esempi utili di FirewallD per configurare il firewall in RHEL 7
Conclusioni
In questo articolo abbiamo spiegato cos’è un firewall, quali sono i servizi disponibili per implementarne uno in RHEL 7, e fornito alcuni esempi che possono aiutarti a iniziare con questa attività. Se hai commenti, suggerimenti o domande, non esitare a farcelo sapere utilizzando il modulo sottostante. Grazie in anticipo!
Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/