Ricerca nel sito web

Serie RHCSA: nozioni fondamentali sul firewall e controllo del traffico di rete tramite FirewallD e Iptables - Parte 11


In parole semplici, un firewall è un sistema di sicurezza che controlla il traffico in entrata e in uscita in una rete in base a una serie di regole predefinite (come la destinazione/origine del pacchetto o il tipo di traffico, ad esempio) .

In questo articolo esamineremo le nozioni di base di firewalld, il demone firewall dinamico predefinito in Red Hat Enterprise Linux 7, e del servizio iptables, il legacy servizio firewall per Linux, che la maggior parte degli amministratori di sistema e di rete conosce bene e che è disponibile anche in RHEL 7.

Un confronto tra FirewallD e Iptables

Sotto il cofano, 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 per impostazione predefinita nel tuo sistema RHEL, anche se potrebbe non essere in esecuzione. Puoi verificare con i seguenti comandi (firewall-config è lo strumento di configurazione dell'interfaccia utente):


yum info firewalld firewall-config

E,


systemctl status -l firewalld.service

Il servizio iptables invece non è incluso di default, ma può essere installato tramite.


yum update && yum install iptables-services

Entrambi i demoni possono essere avviati e abilitati all'avvio all'avvio con i soliti comandi systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Leggi anche: Comandi utili per gestire i servizi Systemd

Per quanto riguarda i file di configurazione, il servizio iptables utilizza /etc/sysconfig/iptables (che non esisterà se il pacchetto non è installato nel tuo sistema). Su un box RHEL 7 utilizzato come nodo cluster, questo file ha il seguente aspetto:

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ù avanti in questo articolo, dopo aver aggiunto alcune regole qua e là. A questo punto ti basterà ricordarti che potrai sempre trovare maggiori informazioni su entrambi gli strumenti con.


man firewalld.conf
man firewall-cmd
man iptables

Oltre a ciò, ricordati di dare un'occhiata a Revisione dei comandi essenziali e della documentazione di sistema – Parte 1 della serie attuale, in cui ho descritto diverse fonti in cui puoi ottenere informazioni sui pacchetti installati sul tuo sistema RHEL 7 .

Utilizzo di Iptables per controllare il traffico di rete

Potresti fare riferimento a Configurare Iptables Firewall – Parte 8 della serie Linux Foundation Certified Engineer (LFCE) per rinfrescarti la memoria sui componenti interni di iptables prima di procedere oltre. In questo modo potremo tuffarci direttamente negli esempi.

Esempio 1: consentire il traffico web sia in entrata che in uscita

Le porte TCP 80 e 443 sono le porte predefinite utilizzate dal server Web Apache per gestire le porte normali (HTTP) e sicure (HTTPS<) traffico web. Puoi consentire il traffico web in entrata e in uscita attraverso 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: blocca tutte (o alcune) le connessioni in entrata da una rete specifica

Potrebbero esserci momenti in cui è necessario bloccare tutto (o parte) il tipo di traffico proveniente da una rete specifica, ad esempio 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

eliminerà 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

consentirà solo il traffico in entrata attraverso la porta 22.

Esempio 3: reindirizzare il traffico in entrata verso un'altra destinazione

Se utilizzi il tuo box RHEL 7 non solo come firewall software, ma anche come firewall vero e proprio basato sull'hardware, in modo che si trovi tra due reti distinte, l'inoltro IP deve essere già abilitato nel tuo sistema . In caso contrario, devi modificare /etc/sysctl.conf e impostare il valore di net.ipv4.ip_forward su 1, come segue:


net.ipv4.ip_forward = 1

quindi salva la modifica, chiudi l'editor di testo e infine esegui il seguente comando per applicare la modifica:


sysctl -p /etc/sysctl.conf

Ad esempio, potresti avere una stampante installata in una scatola interna con IP 192.168.0.10, con il servizio CUPS in ascolto sulla porta 631 (entrambi sul server di stampa e sul firewall). Per inoltrare richieste di stampa dai client dall'altra parte del firewall, dovresti aggiungere la seguente regola iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Tieni presente che iptables legge le sue regole in sequenza, quindi assicurati che le politiche predefinite o le regole successive non sovrascrivano quelle delineate negli esempi sopra.

Iniziare con FirewallD

Una delle modifiche introdotte con firewalld sono le zone. Questo concetto consente di separare le reti in zone diverse con il livello di fiducia che l'utente ha deciso di riporre sui dispositivi e sul traffico all'interno di quella rete.

Per elencare le zone attive:


firewall-cmd --get-active-zones

Nell'esempio seguente, 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

Poiché puoi leggere ulteriori informazioni sulle zone nella guida alla sicurezza di RHEL 7, qui elencheremo solo alcuni esempi specifici.

Esempio 4: autorizzazione dei 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, con effetto immediato e agli avvii successivi:


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–zone viene omesso, viene utilizzata la zona predefinita (puoi verificare con firewall-cmd –get-default-zone).

Per rimuovere la regola, sostituisci la parola aggiungi con rimuovi nei comandi precedenti.

Esempio 5: IP/inoltro porta

Prima di tutto, devi scoprire se il masquerading è abilitato per la zona desiderata:


firewall-cmd --zone=MyZone --query-masquerade

Nell'immagine seguente, possiamo vedere che il masquerading è abilitato per la zona esterna, ma non per il pubblico:

Puoi abilitare il mascheramento per il pubblico:


firewall-cmd --zone=public --add-masquerade

o utilizzare il mascheramento in esterno. 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.

Puoi trovare ulteriori esempi nella Parte 9 della serie RHCSA, dove abbiamo spiegato come consentire o disabilitare le porte che vengono solitamente utilizzate da un server web e un server ftp e come modificare la regola corrispondente quando la porta predefinita per tali servizi sono cambiati. Inoltre, potresti fare riferimento al wiki di firewalld per ulteriori esempi.

Leggi anche: Esempi utili di FirewallD per configurare il firewall in RHEL 7

Conclusione

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 questo compito. Se avete commenti, suggerimenti o domande, non esitate a farcelo sapere utilizzando il modulo sottostante. Grazie in anticipo!