Torna al blog

Elencare ed eliminare le regole del firewall Iptables

Elencare ed eliminare le regole del firewall Iptables

Iptables è il firewall principale fornito di default con la maggior parte delle distribuzioni Linux. È responsabile della gestione della sicurezza di rete. Funziona confrontando i pacchetti di dati con un insieme di regole, istruendo il sistema ad accettare, rifiutare o inoltrare una connessione in base alle regole stesse. In questo tutorial, ti mostreremo come elencare ed eliminare le regole, controllare e azzerare i contatori di pacchetti e byte, e svuotare le catene. Pronto? Cominciamo!

Prerequisiti

Prima di entrare nel vivo del tutorial, chiariamo una cosa. Tutti i trucchi e i suggerimenti mostrati in questa guida sono eseguiti su una macchina virtuale separata. È un'ottima idea che lo faccia anche tu, poiché elimina qualsiasi possibilità di ridurre il tuo sistema a un totale disastro. Solo dopo aver padroneggiato questi processi dovresti provare a implementarli in situazioni reali.

Per questo tutorial, utilizzeremo Ubuntu per mostrare tutti i passaggi. Tuttavia, dovrebbero funzionare in modo simile indipendentemente dalla distribuzione.

Elencare le regole

Elencare le regole per specifica

Per prima cosa, controlliamo tutte le regole attive in base alla specifica. Esegui il seguente comando:

iptables list

Se hai già lavorato alla creazione di regole iptables in passato, potresti aver notato la somiglianza. Gli output ricordano i comandi utilizzati per crearli, ad eccezione della parte “iptables”. Condividono anche una struttura simile a quella dei file di configurazione delle regole di iptables.

Elencare una catena specifica

Proviamo qualcosa di più preciso. Invece di mostrare tutte le regole di iptables, diciamo a iptables di mostrare le regole di una catena specifica. Ad esempio, TCP, INPUT, OUTPUT, ecc. Per farlo, specifica il nome della catena dopo il flag “-S”:

list specific chain

Elencare le regole come tabelle

La visualizzazione a tabella è utile quando si confrontano regole diverse. Usa il flag “-L” per dire a iptables di mostrare tutte le regole attive in formato tabella:

list rules as table iptables

L'output contiene tutte le regole correnti ordinate per catena. Similmente alla sezione precedente, è anche possibile filtrare l'output dell'elenco per una catena specifica come INPUT, TCP, OUTPUT, ecc. Per farlo, specifica la catena dopo il flag “-L”:

filter by chain

Analizziamo un po' l'output. Nel nostro caso, a causa delle regole, l'output apparirà un po' disordinato. La prima riga dell'output dichiara il nome della catena (INPUT) con la sua policy predefinita (DROP). La riga successiva specifica le intestazioni delle colonne della tabella. Il resto sono le regole della catena. Diamo un'occhiata a cosa indicano le intestazioni:

  • target: Se un pacchetto corrisponde alla regola, questa sezione definisce quale azione deve essere eseguita. Può essere accettare il pacchetto, rifiutarlo (drop), registrarlo (log) o inviarlo a un'altra catena.
  • prot: Definisce il protocollo, ad esempio, udp, tcp, icmp o all.
  • opt: Questa colonna indica le opzioni IP. È usata raramente.
  • source: Origine del pacchetto (indirizzo IP o subnet). Il valore può essere specifico o anywhere.
  • destination: Destinazione del pacchetto (indirizzo IP o subnet). Il valore può essere specifico o anywhere.

Se ci hai fatto caso, l'ultima colonna non è etichettata. Questo perché viene utilizzata per indicare le opzioni di una regola. Conterrà tutte le parti della regola che non entravano nei campi precedenti. Può contenere qualsiasi cosa, dalle porte di origine/destinazione allo stato di connessione del pacchetto, ecc.

Conteggio dei pacchetti e dimensione aggregata

Azzera i contatori di pacchetti e byte

Quando elenchiamo le regole di iptables, possiamo anche controllare il numero di pacchetti e la dimensione aggregata dei pacchetti in byte che hanno corrisposto a ciascuna regola specifica. È una metrica utile quando si ha bisogno di avere un'idea approssimativa di quali regole vengano applicate ai pacchetti.

In questo esempio, utilizzeremo la catena INPUT. Questa volta, aggiungi il flag “-v” che sta per modalità dettagliata (verbose):

package and byte counters iptables

Noterai che l'output della tabella ora include due campi aggiuntivi: pkts e bytes.

Reimposta il conteggio dei pacchetti e la dimensione aggregata

In alcune situazioni, potresti voler azzerare i contatori che abbiamo mostrato in precedenza. Se il sistema viene riavviato, i contatori si azzereranno automaticamente. Puoi anche forzare un azzeramento manuale. Utilizzeremo il flag “-Z” per azzerare il conteggio dei pacchetti e la dimensione aggregata:

Reset packet counts and aggregate size

Nota che questo comando azzererà i contatori di tutte le catene. Come per altri comandi, è possibile azzerare il contatore per catene specifiche. Ad esempio, il comando successivo azzererà i contatori per la catena INPUT:

reset particular counter

È possibile rendere più precisa l'azione di azzeramento del contatore. Puoi azzerare il contatore per una regola specifica all'interno di una catena specifica. Per farlo, aggiungi il numero della regola sotto il nome della catena:

reset specific rule

Elimina regole

Elimina regole per specifica

Esistono diversi modi per eliminare le regole di iptables. Il primo metodo consiste nell'eliminazione tramite la specifica della regola. Per l'eliminazione, utilizzeremo il flag “-D” seguito dalla specifica della regola:

Delete rules by specification

Se hai già aggiunto una regola iptables in precedenza, noterai la somiglianza. L'unica cosa che è cambiata qui è il flag “-D” al posto del flag “-A”.

Elimina regole per catena e numero

Eliminare le regole tramite la loro specifica richiede un po' più di impegno, giusto? E se potessimo eliminarle senza dover ricordare la specifica della regola? Eliminiamo le regole in base alla loro catena e al loro numero! Rispetto al primo metodo (eliminazione tramite specifica), questo è relativamente più semplice in quanto non è necessario avere l'intera specifica a portata di mano.

Questo metodo richiede la catena e il numero di riga della regola di destinazione. Da dove prendiamo il numero di riga? Esegui il seguente comando per determinarlo:

Delete rules by chain and number - get line number

Otterrai un output esteso con tutte le regole e i relativi numeri di riga. Per restringere l'output, usa il nome della catena dopo il flag “-L”:

Delete rules by chain and number - filter

Nell'output noterai la colonna aggiuntiva num. Indica il numero di riga per ciascuna regola. Una volta determinato il numero di destinazione, esegui l'eliminazione:

delete iptables rule

Svuota le catene

Nel caso di iptables, cosa significa svuotare (flush) una catena? È il processo di eliminazione di tutte le regole all'interno di una determinata catena. Se hai bisogno di eliminare le regole in blocco, puoi utilizzare questo metodo. Prima di eseguire lo svuotamento della catena, ti consigliamo vivamente di creare un backup delle regole esistenti utilizzando iptables-save. Si tratta di uno strumento integrato di iptables che mostrerà tutte le catene e le regole correnti. L'output può essere esportato in un file di testo:

iptables rules export

Svuota una singola catena

Vediamo come svuotare una catena. Usa il flag “-F” seguito dalla catena di destinazione:

flush a single chain

Svuota tutte le catene

Prima di svuotare tutte le catene, assicurati di aver compreso cosa stai facendo. Questo eliminerà tutte le regole del firewall iptables. Assicurati di creare preventivamente un backup delle regole di iptables.

Pronto? Svuota tutte le catene di iptables eseguendo il seguente comando:

flush all changes

Svuota le regole, elimina le catene e accetta tutto

L'esecuzione dei passaggi descritti in questa sezione disabiliterà di fatto il firewall, consentendo un traffico di rete illimitato. Analogamente alla sezione precedente, consigliamo di disporre di un backup di iptables prima di procedere. Per prima cosa, cambieremo la policy predefinita di ciascuna delle catene integrate in ACCEPT. Questo serve a garantire che iptables non ti escluda dal tuo server tramite SSH:

Flush rules, delete chains and accept all

Ora, svuota le tabelle nat e mangle:

 flush nat and mangle tables

 mangle tables

Svuota tutte le catene ed elimina tutte le catene non predefinite:

Flush all the chains

 delete all the non-default chains

Ora, verifichiamo il risultato:

iptables result

Considerazioni finali

Iptables è un potente firewall. Speriamo che questa guida ti sia stata utile per imparare a elencare ed eliminare le regole del firewall iptables. E non dimenticare di fare pratica prima di applicarle nel mondo reale.

Buon computing!

author

Akshay Nagpal

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.