Il nostro mondo non è mai stato così connesso come lo è adesso. Ogni persona, azienda, governo, ecc. utilizza il Web per comunicare, scambiare valuta e dati e, in generale, seguire i movimenti della vita quotidiana e delle operazioni. Tuttavia, queste connessioni non sono intrinsecamente sicure e, per questo motivo, dobbiamo mettere in atto misure difensive per proteggere la nostra posizione, le informazioni e il denaro. In passato, quando qualcuno voleva mettere al sicuro i propri beni, erigevano cancelli e recinzioni per tenere a distanza gli intrusi. Oggi raggiungiamo questi stessi obiettivi con l'uso dei firewall. La maggior parte dei sistemi Linux utilizzava iptables
utility, tuttavia, una nuova tecnologia era all'orizzonte.
Con l'introduzione di Red Hat Enterprise Linux 7.0 (RHEL) nel 2011, iptables è stato sostituito come firewalld
sono nato. Al centro, firewalld
è un firewall basato su zone. I firewall basati su zona sono sistemi di sicurezza della rete che monitorano il traffico e intraprendono azioni in base a una serie di regole definite applicate contro i pacchetti in entrata/in uscita.
Tutto sulle zone
Firewalld
fornisce diversi livelli di sicurezza per diverse zone di connessione. Una zona è associata ad almeno un'interfaccia di rete (eth0
, Per esempio). Vediamo le zone preconfigurate usando il seguente comando:
[tcarrigan@server ~]$ firewall-cmd --get-zones
block dmz drop external home internal libvirt public trusted work
Come vedi, le zone elencate di default sono:
- blocco
- dmz
- lascia
- esterno
- casa
- interno
- libvirt
- pubblico
- fidato
- lavoro
NOTA:sto utilizzando una macchina virtuale RHEL 8.2 per questa demo.
In genere, la regola predefinita di un firewall è negare tutto e consentire solo il passaggio di eccezioni specifiche per i servizi necessari.
Molte volte è utile vedere quali servizi sono associati a una determinata zona. Per visualizzare queste informazioni, utilizzare il seguente comando:
firewall-cmd --list-all
Si noti che se non si specifica una zona, viene richiesta la zona predefinita. Qui, la zona predefinita è public
zona.
[tcarrigan@server ~]$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: cockpit dhcpv6-client mountd nfs rpc-bind ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Se desideri specificare una zona, aggiungi semplicemente --zone=zonename
Ad esempio, per vedere il external
zona, utilizzare quanto segue:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Se, per qualche motivo, desideri modificare la zona predefinita, puoi farlo facilmente utilizzando il seguente comando:
firewall-cmd --set-default=zonename
Consenti e rifiuta per servizio
Ora, la cosa buona dei firewall è che mantengono le nostre reti al sicuro. La cosa negativa è che non esiste un firewall "taglia unica" adatto a ogni situazione. Per questo motivo, i firewall sono personalizzati per adattarsi alle esigenze esatte della situazione in cui sono impiegati. Ad esempio, se devo consentire i trasferimenti FTP (File Transfer Protocol) nel external
zone in modo da poter spostare un file sulla porta 21, potrei usare qualcosa del genere:
firewall-cmd --zone=external --add-service=ftp
Ecco l'esempio reale della mia VM:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --add-service=ftp
[sudo] password for tcarrigan:
success
Vediamo che il demone ha restituito successo , quindi dovremmo avere il servizio FTP consentito nel external
zona. Per verificarlo, dobbiamo controllare il external
elenco servizi di zona:
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-services
ftp ssh
Ma cosa succede quando ricarichiamo la configurazione del firewall?
[tcarrigan@server ~]$ sudo firewall-cmd --reload
success
[tcarrigan@server ~]$ firewall-cmd --zone=external --list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Il nuovo consenti la regola non sopravvive alla reinizializzazione del firewalld
configurazione. Per garantire che la nostra nuova regola persista, dobbiamo aggiungere il --permanent
opzione. Il nuovo comando è:
# firewall-cmd --permanent --zone=external --add-service=ftp
Dopo aver utilizzato il permanent
comando, è necessario ricaricare la configurazione affinché le modifiche abbiano effetto.
Per rimuovere un servizio, apportiamo una piccola modifica alla sintassi. Qui, rimuoverò il servizio FTP da external
zona permanentemente:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-service=ftp
Warning: NOT_ENABLED: ftp
success
Vediamo che il sistema mi avverte che FTP è stato disabilitato e che l'operazione è andata a buon fine.
Consenti e nega per porta
Ora, cosa succede quando è necessario consentire il traffico su una porta non standard? Immagina di avere un servizio di backup che deve essere eseguito su una porta UDP dedicata. Come aggiungeresti questa eccezione alla tua zona? La sintassi è molto facile da usare ed è solo leggermente diversa da quella che abbiamo usato per i servizi. Per aggiungere una porta alla configurazione della tua zona, utilizza quanto segue:
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --add-port=60001/udp
success
Verifichiamo le porte consentite con il seguente comando:
[tcarrigan@server ~]$ sudo firewall-cmd --zone=external --list-ports
60001/udp
E per rimuovere la regola della porta, hai indovinato... cambia semplicemente --add-port=x
a --remove-port=x
[tcarrigan@server ~]$ sudo firewall-cmd --permanent --zone=external --remove-port=60001/udp
success
Cosa c'è dopo?
Se, dopo aver letto questo articolo, ti stai chiedendo cosa fare con le informazioni, ti consiglio vivamente di avviare la tua VM preferita (RHEL, Fedora, CentOS, ecc.) e iniziare a sperimentare i comandi sopra. Il modo migliore per imparare è fare esperienza pratica. Se hai trovato interessante questo contenuto, tieni d'occhio Enable Sysadmin per la seconda parte, in cui ti immergerai nella creazione di zone personalizzate e nella creazione di regole più avanzate.
[ Semplifica la gestione della rete. Dai un'occhiata all'automazione della rete per tutti, un libro gratuito di Red Hat. ]