Ricerca nel sito web

La guida per principianti ai comandi di IPTables (Firewall Linux).


Se utilizzi i computer per un po', devi avere familiarità con la parola "Firewall". Sappiamo che le cose sembrano complesse dalla superficie, ma attraverso questo tutorial spiegheremo le basi di IPTable e l'uso dei comandi di base in modo che anche se sei uno studente di networking o desideri approfondire tuffati nelle reti, puoi trarre vantaggio da questa guida.

Cos'è IPtables?

Il funzionamento del Firewall è abbastanza semplice. Crea una barriera tra reti affidabili e non affidabili in modo che il tuo sistema possa essere al sicuro da pacchetti dannosi.

Ma come decideremo cosa è sicuro e cosa no? Per impostazione predefinita, ottieni alcuni privilegi per impostare le regole per il tuo firewall, ma per una sorveglianza più dettagliata dei pacchi in entrata e in uscita, IPTables sono ciò di cui hai più bisogno.

IPTables può essere utilizzato per il personal computer o può anche essere applicato all'intera rete. Utilizzando IPTables, definiremo una serie di regole in base alle quali possiamo monitorare, consentire o bloccare i pacchetti di rete in entrata o in uscita.

Invece di concentrarci solo sull’intera parte teorica, discuteremo solo di ciò che conta nel mondo pratico. Cominciamo quindi con la comprensione dei concetti fondamentali di IPTables.

Comprendere il concetto di IPTables

Quando si parla di IPTables, dobbiamo comprendere 3 termini: Tabelle, Catene e Regole. Poiché queste sono le parti importanti, discuteremo ciascuna di esse.

Iniziamo quindi con le Tabelle.

Tabelle in IPTables

Ci sono 5 tipi di tabelle in IPTables e a ciascuna vengono applicate regole diverse. Cominciamo quindi con la tabella più comune “Filer”.

  1. Filtra tabella: questa è la tabella principale e predefinita durante l'utilizzo di IPTables. Ciò significa che ogni volta che non menzionerai alcuna tabella specifica durante l'applicazione delle regole, queste verranno applicate alla tabella filtro. Come suggerisce il nome, il ruolo della tabella Filtro è decidere se consentire ai pacchetti di raggiungere la loro destinazione o negare la loro richiesta.
  2. NAT (Network Address Translation) – Come suggerisce il nome, questa tabella consente agli utenti di determinare la traduzione degli indirizzi di rete. Il ruolo di questa tabella è determinare se modificare e come modificare l'origine e la destinazione dell'indirizzo del pacchetto.
  3. Tabella Mangle – Questa tabella ci consente di modificare le intestazioni IP dei pacchetti. Ad esempio, puoi regolare TTL per allungare o accorciare gli hop di rete che il pacchetto può sostenere. Allo stesso modo, anche altre intestazioni IP possono essere modificate in base alle tue preferenze.
  4. Tabella RAW: l'uso principale di questa tabella è tenere traccia delle connessioni poiché fornisce un meccanismo per contrassegnare i pacchetti per visualizzarli come parte di una sessione in corso.
  5. Tabella Sicurezza – Utilizzando la tabella Sicurezza, gli utenti possono applicare contrassegni di contesto di sicurezza interni SELinux sui pacchetti di rete.

Nella maggior parte dei casi d'uso, gli ultimi 2 tipi (RAW e Sicurezza) della tabella non hanno molto da fare e solo le prime 3 opzioni vengono conteggiate come tabelle principali .

Ora parliamo di Catene.

Catene in IPTables

Si comportano nei punti del percorso della rete in cui possiamo applicare delle regole. In IPTables, presentiamo 5 tipi di catene e discuteremo ciascuna di esse. Tieni presente che non tutti i tipi di catena sono disponibili per ogni tipo di tabella.

  1. Pre-routing: questa catena viene applicata a qualsiasi pacchetto in entrata una volta inserito nello stack di rete e questa catena viene elaborata anche prima che venga presa qualsiasi decisione di routing relativa alla destinazione finale del pacchetto.
  2. Catena di input: è il punto in cui un pacchetto entra nello stack di rete.
  3. Catena in avanti: è il punto in cui il pacchetto è stato inoltrato attraverso il tuo sistema.
  4. Catena di output: la catena di output viene applicata al pacchetto quando ha origine nel sistema ed esce.
  5. Post-routing: è l'esatto opposto della catena di pre-routing e viene applicata ai pacchetti inoltrati o in uscita una volta presa la decisione di routing.

Ora, l’unica cosa rimasta da discutere sono le regole, ed è la più semplice delle 3 di cui abbiamo discusso qui. Completiamo quindi ciò che resta della parte teorica.

Regole in IPTables

Le regole non sono altro che set o comandi individuali con cui gli utenti manipolano il traffico di rete. Una volta che ciascuna catena entrerà in azione, il pacchetto verrà controllato rispetto alle regole definite.

Se una regola non soddisfa la condizione, verrà saltata a quella successiva e se soddisfa la condizione, la regola successiva verrà specificata in base al valore del target.

Ogni regola ha due componenti: il componente corrispondente e il componente di destinazione.

  1. Componente di corrispondenza: sono condizioni diverse per definire le regole che possono essere abbinate per protocollo, indirizzo IP, indirizzo di porta, interfacce e intestazioni.
  2. Componente target: si tratta di un'azione che verrà attivata una volta soddisfatte le condizioni.

Questa era la parte della spiegazione e ora tratteremo i comandi di base relativi a IPTables in Linux.

Installazione del firewall IPTables su Linux

Nelle moderne distribuzioni Linux come Pop!_OS, IPTables è preinstallato, ma se sul tuo sistema non è presente il pacchetto IPTables, puoi installarlo facilmente seguendo le istruzioni fornite:

Per installare IPTables su distribuzioni Linux basate su RHEL come Rocky Linux, AlmaLinux e CentOS Stream, utilizzare il seguente comando dnf.

sudo dnf install iptables-services

Importante: se utilizzi Firewalld, dovrai disattivarlo prima di procedere all'installazione. Per fermare completamente il firewall, dovrai utilizzare i seguenti comandi:

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Per installare IPTables su distribuzioni Linux basate su Debian, utilizzare il seguente comando apt.

sudo apt install iptables

Una volta installato IPTables, puoi abilitare il firewall tramite i seguenti comandi:

sudo systemctl enable iptables
sudo systemctl start iptables

Per monitorare lo stato del servizio IPTable, puoi utilizzare il comando indicato:

sudo systemctl status iptables

Scopri le nozioni di base sul comando IPTables in Linux

Una volta terminata l'installazione, possiamo procedere con la sintassi di IPTables che ti consentirà di modificare le impostazioni predefinite e di configurarlo secondo le tue esigenze.

La sintassi di base di IPTables è la seguente:

iptables -t {type of table} -options {chain points} {condition or matching component} {action}

Capiamo la spiegazione del comando precedente:

Tavolo

La prima parte è -t dove possiamo scegliere tra 5 opzioni di tabella disponibili e se rimuovi la parte -t dal comando, utilizzerà filter< tabella poiché è il tipo di tabella predefinito.

Opzioni catena

La seconda parte riguarda la catena. Qui puoi scegliere tra diverse opzioni di punti catena e tali opzioni sono riportate di seguito:

  • -A – Aggiunge una nuova regola alla catena alla fine della catena.
  • -C – Controlla se la regola soddisfa i requisiti della catena.
  • -D – Consente agli utenti di eliminare una regola esistente dalla catena.
  • -F – Questo rimuoverà ogni regola definita dall'utente.
  • -I – Consente agli utenti di aggiungere una nuova regola nella posizione specificata.
  • -N – Crea una catena completamente nuova.
  • -v – Se utilizzato con l'opzione list, fornisce informazioni dettagliate.
  • -X – Elimina la catena.

Componente corrispondente

Le opzioni di abbinamento sono la condizione per verificare i requisiti della catena. Puoi scegliere tra varie opzioni e alcune di esse sono riportate di seguito:

Protocols -p
Source IP -s
Destination IP -d
IN interface -i
OUT interface -o

Per TCP, sono i seguenti:

-sport
-dport
--tcp-flags

Componente di azione

Ora, se consideriamo la parte azione, le opzioni disponibili dipendono dal tipo di tabella come NAT, e la tabella mangle ha più opzioni rispetto alle altre. Utilizzando l'azione, puoi anche scegliere come target una tabella o catena specifica.

L'azione più utilizzata è Salta (-j) che ci offrirà diverse opzioni come:

  • ACCETTA – Viene utilizzato per accettare i pacchetti e terminare l'attraversamento.
  • DROP – Viene utilizzato per rilasciare i pacchetti e terminare l'attraversamento.
  • REJECT – È abbastanza simile a DROP ma invia i pacchetti rifiutati alla fonte.
  • RETURN – Questo interromperà l'attraversamento del pacchetto nella sottocatena e invierà il pacchetto specifico alla catena superiore senza alcun effetto.

Una volta terminata la sintassi, ti mostreremo come utilizzare IPTables inclusa la configurazione di base.

Elenco dell'insieme corrente di regole IPTables

Se vuoi controllare cosa passa attraverso il tuo Firewall per impostazione predefinita, elencare un insieme di regole corrente è un modo perfetto. Per elencare le regole applicate, utilizzare il comando indicato:

sudo iptables -L

Consenti/Nega traffico di rete su porte specifiche

In questa sezione ti mostreremo come consentire o negare il traffico di rete per porte specifiche. Ti mostreremo alcuni porti famosi perché vogliamo essere il più utili possibile.
Se desideri consentire il traffico di rete HTTPS, dovremo consentire la porta n. 443 utilizzando il comando indicato:

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Allo stesso modo, puoi anche disabilitare il traffico web HTTP tramite il comando indicato:

sudo iptables -A INPUT -p tcp --dport 80 -j REJECT

Spiegazione delle opzioni di comando utilizzate:

  • -p viene utilizzato per verificare il protocollo specificato e nel nostro caso è TCP.
  • --dport viene utilizzato per specificare la porta di destinazione.
  • -j viene utilizzato per intraprendere un'azione (accettare o rilasciare).

Controlla il traffico con l'indirizzo IP

Sì, puoi anche controllare il traffico di rete da un indirizzo IP. Non solo uno o due, ma controlla anche l'intervallo di indirizzi IP e ti mostreremo come.

Per consentire un indirizzo IP specifico, utilizzare la struttura di comando fornita:

sudo iptables -A INPUT -s 69.63.176.13 -j ACCEPT

Allo stesso modo, per eliminare i pacchetti da un IP specifico, è necessario utilizzare la struttura di comando fornita:

sudo iptables -A INPUT -s 192.168.0.27 -j DROP

Se lo desideri, puoi anche controllare l'intervallo di indirizzi IP utilizzando la struttura di comando fornita:

sudo iptables -A INPUT -m range --src-range 192.168.0.1-192.168.0.255 -j REJECT

Elimina regola definita dall'utente

A volte potremmo finire per commettere errori durante la creazione delle regole e il modo migliore per superare questi errori è eliminarli. L'eliminazione delle regole definite è il processo più semplice in questa guida e per eliminarle, per prima cosa, dovremo elencarle.

Per elencare le regole definite con numeri, utilizzare il comando indicato:

sudo iptables -L --line-numbers

Per eliminare le regole, dovremo seguire la struttura dei comandi fornita:

sudo iptables -D <INPUT/FORWARD/OUTPUT> <Number>

Supponiamo che io voglia eliminare la decima regola da INPUT, quindi utilizzerò il comando indicato:

sudo iptables -D INPUT 10

Per verificare se abbiamo rimosso con successo la regola, dobbiamo elencare le regole in base al comando specificato:

sudo iptables -L –line-numbers

Come puoi vedere, abbiamo rimosso con successo la decima regola.

Salva le regole IPTables definite

Forse ti starai chiedendo perché dobbiamo salvare le regole laddove funzionano bene dopo averle applicate? Il problema è che una volta riavviato il sistema, tutte le regole definite che non vengono salvate verranno eliminate, quindi per noi è fondamentale.

Per salvare le regole nelle distribuzioni basate su RHEL:

sudo /sbin/service iptables save

Per salvare le regole nei derivati Debian:

sudo /sbin/iptables–save

Per saperne di più sulle regole del firewall IPtable, consulta la nostra guida dettagliata all'indirizzo:

  • 25 utili regole del firewall IPtable che ogni amministratore Linux dovrebbe conoscere

In questa guida, abbiamo cercato di semplificare le cose in modo che tutti possano trarne vantaggio. Questa era una guida esplicativa di base su IPTables e se hai qualche domanda, non esitare a chiedere nei commenti.