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:
|
1 |
sudo iptables -S |

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”:
|
1 |
sudo iptables -S <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:
|
1 |
sudo iptables -L |

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”:
|
1 |
sudo iptables -L <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):
|
1 |
sudo iptables -L INPUT -v |

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:
|
1 |
sudo iptables -v -Z |

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:
|
1 |
sudo iptables -v -Z <catena> |

È 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:
|
1 |
sudo iptables -v -Z <catena> <numero_regola> |
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:
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

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:
|
1 |
sudo iptables -L --line-numbers |

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”:
|
1 |
sudo iptables -L <catena> --line-numbers |

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:
|
1 |
sudo iptables -v -D <catena> <numero_riga> |
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:
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
Svuota una singola catena
Vediamo come svuotare una catena. Usa il flag “-F” seguito dalla catena di destinazione:
|
1 |
sudo iptables -v -F <catena> |

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:
|
1 |
sudo iptables -v -F |

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:
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Ora, svuota le tabelle nat e mangle:
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Svuota tutte le catene ed elimina tutte le catene non predefinite:
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


Ora, verifichiamo il risultato:
|
1 |
sudo iptables -L --line-numbers |
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!



Commenti
Ancora nessun commento. Scrivi il primo.