Serie RHCSA: Firewall Essentials e Controllo del Traffico di Rete Utilizzando FirewallD e Iptables – Parte 11

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).

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

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
Check FirewallD Information

e,

# systemctl status -l firewalld.service
Check FirewallD Status

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:

Iptables Firewall Configuration

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

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

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
List all FirewallD Zones

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
List All Supported 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:

Check Masquerading Status

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/