GNU/Linux >> Linux Esercitazione >  >> Linux

Una guida per principianti al firewalld in Linux

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


Linux
  1. Una guida pratica per imparare awk

  2. Nozioni di base su Linux:una guida per principianti alla modifica del testo con vim

  3. Una guida per principianti a gawk

  4. Che cos'è FirewallD e come implementarlo su Linux

  5. La guida completa per principianti a LVM in Linux

Come utilizzare AppImage su Linux (Guida per principianti)

Come installare e utilizzare Curl su distribuzioni Linux:una guida per principianti

Guida per principianti all'analisi dei registri in Linux con il comando journalctl

Guida per principianti ai Syslog in Linux

Ottenere il vantaggio di PowerShell su Linux:una guida per principianti

Come installare e utilizzare FFmpeg su distribuzioni Linux | Guida per principianti