Introduzione
– Un firewall per il filtraggio dei pacchetti legge i pacchetti di rete in entrata e filtra (consente o rifiuta) ogni pacchetto di dati in base alle informazioni di intestazione nel pacchetto. Il kernel Linux ha una funzionalità di filtraggio dei pacchetti integrata chiamata Netfilter .
– In RHEL 7 sono disponibili due servizi per creare, mantenere e visualizzare le regole archiviate da Netfilter:
1. firewall
2. iptables
– In RHEL 7, il servizio firewall predefinito è firewalld.
– firewalld è un gestore firewall dinamico che supporta le zone (rete) del firewall.
– Il servizio firewalld supporta IPv4, IPv6, e per i bridge Ethernet.
– Il servizio firewalld fornisce anche un'interfaccia D-BUS. I servizi o le applicazioni che già utilizzano D-BUS possono aggiungere o richiedere modifiche alle regole del firewall direttamente tramite l'interfaccia D-BUS.
Vantaggi rispetto a iptables
firewalld presenta i seguenti vantaggi rispetto a iptables:
1. A differenza del comando iptables, il comando firewall-cmd non riavvia il firewall e non interrompe le connessioni TCP stabilite.
2. firewalld supporta le zone dinamiche.
3. firewalld supporta D-Bus per una migliore integrazione con i servizi che dipendono dalla configurazione del firewall.
Opzioni di configurazione
Il servizio firewalld ha due tipi di opzioni di configurazione:
1. Durata :le modifiche alle impostazioni del firewall hanno effetto immediato ma non sono permanenti. Le modifiche apportate in modalità configurazione runtime vengono perse al riavvio del servizio firewalld.
2. Permanente :le modifiche alle impostazioni del firewall vengono scritte nei file di configurazione. Queste modifiche vengono applicate al riavvio del servizio firewalld.
File di configurazione
I file di configurazione per firewalld esistono in due directory:
/usr/lib/firewalld :contiene i file di configurazione predefiniti. Non apportare modifiche a questi file. Un aggiornamento del pacchetto firewalld sovrascrive questa directory.
/etc/firewalld :le modifiche ai file di configurazione predefiniti sono archiviate in questa directory. I file in questa directory sovraccaricano i file di configurazione predefiniti.
Zone dotate di firewall
Il servizio firewalld consente di separare le reti in zone diverse in base al livello di affidabilità che si desidera riporre sui dispositivi e al traffico all'interno di una rete specifica. Per ogni zona è possibile definire le seguenti caratteristiche:
Servizi :Servizi predefiniti o personalizzati di cui fidarsi. I servizi affidabili sono una combinazione di porte e protocolli accessibili da altri sistemi e reti.
Porte :Porte o intervalli di porte aggiuntivi e protocolli associati accessibili da altri sistemi e reti.
Masquerading :traduce gli indirizzi IPv4 in un unico indirizzo esterno. Con il masquerading abilitato, gli indirizzi di una rete privata vengono mappati e nascosti dietro un indirizzo pubblico.
Port Forwarding :inoltra il traffico di rete in entrata da una porta o un intervallo di porte specifico a una porta alternativa sul sistema locale oa una porta su un altro indirizzo IPv4.
Filtro ICMP :Blocca i messaggi selezionati del protocollo Internet Control Message Protocol.
Regole avanzate :Estendi le regole firewalld esistenti per includere indirizzi di origine e destinazione aggiuntivi e azioni di registrazione e controllo.
Interfacce :Interfacce di rete legate alla zona. La zona per un'interfaccia è specificata con ZONE=opzione in /etc/sysconfig/network-scripts/ifcfg file. Se l'opzione manca, l'interfaccia è vincolata alla zona predefinita.
Zone firewalld predefinite
Il pacchetto software firewalld include un insieme di zone di rete predefinite nella directory seguente:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
I file di zona contengono impostazioni preimpostate, che possono essere applicate a un'interfaccia di rete. Ad esempio:
# grep –i service /usr/lib/firewalld/zones/public.xml <service name=“ssh”/> <service name=“dhcpv6-client”/>
In questo esempio, le interfacce di rete associate alla zona pubblica considerano solo due servizi, ssh e dhcpv6-client.
Di seguito una breve spiegazione di ciascuna zona:
abbandona :Tutti i pacchetti di rete in entrata vengono eliminati, non c'è risposta. Sono possibili solo
connessioni di rete in uscita.
blocco :qualsiasi connessione di rete in entrata viene rifiutata con un messaggio icmp-host-vietato per IPv4 e icmp6-adm-proibito per IPv6. Sono possibili solo connessioni di rete avviate dall'interno del sistema.
home :Per l'uso in aree domestiche. Ti fidi principalmente degli altri computer sulle reti per non danneggiare il tuo computer. Sono accettate solo le connessioni in entrata selezionate.
pubbliche :Per l'uso in aree pubbliche. Non ti fidi che gli altri computer sulla rete non danneggino il tuo computer. Sono accettate solo le connessioni in entrata selezionate.
lavoro :Per l'uso nelle aree di lavoro. Ti fidi principalmente degli altri computer sulle reti per non danneggiare il tuo computer. Sono accettate solo le connessioni in entrata selezionate.
dmz :Per i computer nella tua zona demilitarizzata che sono pubblicamente accessibili con accesso limitato alla tua rete interna. Vengono accettate solo le connessioni in entrata selezionate.
esterne :Per l'uso su reti esterne con masquerading abilitato in particolare per i router. Non ti fidi che gli altri computer sulla rete non danneggino il tuo computer. Vengono accettate solo le connessioni in entrata selezionate.
interne :Per l'uso su reti interne. Ti fidi principalmente degli altri computer sulle reti per non danneggiare il tuo computer. Vengono accettate solo le connessioni in entrata selezionate.
fidato :Vengono accettate tutte le connessioni di rete.
Impostazione della zona firewalld predefinita
Dopo un'installazione iniziale, la zona pubblica è la zona predefinita come specificato nel file di configurazione, /etc/firewalld/firewalld.conf .
# grep –i defaultzone /etc/firewalld/firewalld.conf DefaultZone=public
Le interfacce di rete sono associate alla zona predefinita a meno che non sia specificato con ZONE=[zona] nel file ifcfg. Il comando seguente mostra le interfacce legate alla zona pubblica:
# firewall-cmd --get-active-zone public interfaces: eth0 eth1
È possibile utilizzare il comando firewall-cmd per modificare la zona predefinita:
# firewall-cmd --set-default-zone=work success
È inoltre possibile utilizzare la GUI di configurazione del firewall per modificare la zona predefinita. Dalla barra dei menu, seleziona Opzioni->Cambia zona predefinita, quindi seleziona una zona da un elenco a comparsa.
Servizi firewall
– Un servizio firewalld è una combinazione di porte e protocolli locali e indirizzi di destinazione.
– Un servizio firewalld può includere anche moduli del kernel Netfilter che vengono caricati automaticamente quando un servizio è abilitato.
– Il pacchetto software firewalld include un insieme di servizi predefiniti nella directory seguente:
# ls -lrt /usr/lib/firewalld/zones/ total 36 -rw-r----- 1 root root 342 Sep 15 2015 work.xml -rw-r----- 1 root root 162 Sep 15 2015 trusted.xml -rw-r----- 1 root root 315 Sep 15 2015 public.xml -rw-r----- 1 root root 415 Sep 15 2015 internal.xml -rw-r----- 1 root root 400 Sep 15 2015 home.xml -rw-r----- 1 root root 304 Sep 15 2015 external.xml -rw-r----- 1 root root 291 Sep 15 2015 drop.xml -rw-r----- 1 root root 293 Sep 15 2015 dmz.xml -rw-r----- 1 root root 299 Sep 15 2015 block.xml
– I servizi possono essere abilitati per una zona in modalità Runtime.
– Le definizioni dei servizi possono essere modificate solo in modalità Permanente.
Avvia firewalld
Per avviare firewalld:
# systemctl start firewalld
Per garantire l'avvio di firewalld all'avvio:
# systemctl enable firewalld
Per verificare se firewalld è in esecuzione:
# systemctl status firewalld # firewall-cmd --state
Tre metodi per configurare il servizio firewalld:
– firewall-cmd :interfaccia della riga di comando
– configurazione firewall :Interfaccia utente grafica
– Modifica vari XML file di configurazione.
L'utilità firewall-cmd
Lo strumento da riga di comando firewall-cmd fa parte dell'applicazione firewalld, installata per impostazione predefinita. Per ottenere assistenza sul comando firewall-cmd:
# firewall-cmd --help
Il comando firewall-cmd offre categorie di opzioni come Generale, Stato, Permanente, Zona, IcmpType, Servizio, Adatta e Query zone, Diretto, Blocco, Blocco whitelist e Panico. Per elencare le informazioni per tutte le zone:
# firewall-cmd --list-all-zones public (default, active) interfaces: eth0 eth1 sources: services: dhcpv6-client ssh ports: ...
Per consentire l'accesso ai client HTTP per la zona pubblica:
# firewall-cmd --zone=public --add-service=http success
Per elencare i servizi consentiti per la zona pubblica:
# firewall-cmd --zone=work --list-services dhcpv6-client http ssh
L'utilizzo di questo comando modifica solo la configurazione Runtime e non aggiorna i file di configurazione.
Le modifiche alla configurazione effettuate in modalità configurazione Runtime vengono perse al riavvio del servizio firewalld:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client ssh
Per rendere permanenti le modifiche, utilizzare l'opzione –permanent. Esempio:
# firewall-cmd --permanent --zone=public --add-service=http success
Le modifiche apportate nella modalità di configurazione permanente non vengono implementate immediatamente. Tuttavia, le modifiche apportate nella configurazione permanente vengono scritte nei file di configurazione. Il riavvio del servizio firewalld legge i file di configurazione e implementa le modifiche. Esempio:
# systemctl restart firewalld # firewall-cmd --zone=work --list-services dhcpv6-client http ssh