Introduzione
Configurare un firewall è un passo essenziale per garantire la sicurezza di qualsiasi sistema operativo moderno. La maggior parte delle distribuzioni Linux è fornita con diverse utility di firewall che è possibile utilizzare per configurare un firewall. In questa guida, ci concentreremo sul firewall iptables
.
Iptables è un firewall standard incluso nella maggior parte delle distribuzioni Linux per impostazione predefinita. Si tratta di un’interfaccia a riga di comando per gli hook netfilter a livello di kernel che possono manipolare lo stack di rete di Linux. Funziona confrontando ciascun pacchetto che attraversa l’interfaccia di rete con un insieme di regole per decidere cosa fare.
In questa guida, esaminerai come funziona Iptables. Per un approfondimento, puoi leggere Un’analisi approfondita dell’architettura di Iptables e Netfilter.
Come Funziona Iptables
Per prima cosa, esaminiamo alcuni termini e discutiamo di come funziona iptables.
Il firewall iptables opera confrontando il traffico di rete con un insieme di regole. Le regole definiscono le caratteristiche che un pacchetto di rete deve avere per essere considerato corrispondente e l’azione da intraprendere per i pacchetti corrispondenti.
Ci sono molte opzioni per stabilire quali pacchetti corrispondano a una regola specifica. Puoi abbinare il tipo di protocollo del pacchetto, l’indirizzo o la porta di origine o destinazione, l’interfaccia in uso, la sua relazione con i pacchetti precedenti e così via.
Quando il modello definito corrisponde, l’azione che si verifica è chiamata target. Un target può essere una decisione di politica finale per il pacchetto, come ACCEPT
o DROP
. Può anche spostare il pacchetto in una catena diversa per l’elaborazione o registrare l’incontro. Ci sono molte opzioni.
Queste regole sono organizzate in gruppi chiamati catene. Una catena è un insieme di regole a cui un pacchetto viene verificato in sequenza. Quando il pacchetto corrisponde a una delle regole, esegue l’azione associata e salta le regole rimanenti nella catena.
A user can create chains as needed. There are three chains defined by default. They are:
- INPUT: Questa catena gestisce tutti i pacchetti indirizzati al tuo server.
- OUTPUT: Questa catena contiene regole per il traffico creato dal tuo server.
- FORWARD: Questa catena è utilizzata per gestire il traffico destinato ad altri server che non sono creati sul tuo server. Questa catena è un modo per configurare il tuo server per instradare le richieste verso altre macchine.
Ogni catena può contenere zero o più regole e ha una policy predefinita. La policy determina cosa succede quando un pacchetto attraversa tutte le regole nella catena e non corrisponde a nessuna regola. Puoi eliminare il pacchetto o accettarlo se nessuna regola corrisponde.
Iptables può anche tracciare le connessioni. Ciò significa che è possibile creare regole che definiscono cosa accade a un pacchetto in base alla sua relazione con i pacchetti precedenti. La capacità è il “tracciamento dello stato”, il “tracciamento della connessione” o la configurazione della “macchina a stati”.
IPv4 rispetto a IPv6
Il firewall netfilter incluso nel kernel Linux mantiene completamente separato il traffico IPv4 e IPv6. Anche gli strumenti Iptables utilizzati per manipolare le tabelle che contengono i set di regole del firewall sono distinti. Se hai IPv6 abilitato sul tuo server, dovrai configurare entrambe le tabelle per gestire il traffico sul tuo server.
Nota: Nftables, successore di Iptables, integra in modo più stretto la gestione di IPv4 e IPv6. Il comando iptables-translate può essere utilizzato per migrare le regole di Iptables su Nftables.
Il comando iptables
regolare viene utilizzato per manipolare la tabella contenente le regole che governano il traffico IPv4. Per il traffico IPv6, viene utilizzato un comando correlato chiamato ip6tables
. Eventuali regole impostate con iptables
influenzeranno solo i pacchetti che utilizzano l’indirizzamento IPv4, ma la sintassi tra questi comandi è la stessa. Il comando iptables
crea regole che si applicano al traffico IPv4, mentre il comando ip6tables
crea regole per il traffico IPv6. Non dimenticare di utilizzare gli indirizzi IPv6 del tuo server per creare le regole di ip6tables
.
Cose da Tenere a Mente
Ora che sai come iptables dirige i pacchetti che passano attraverso la sua interfaccia – indirizza il pacchetto alla catena appropriata, lo verifica contro ciascuna regola fino a quando ne trova una corrispondente, emette la policy predefinita della catena se nessuna corrispondenza viene trovata – puoi iniziare a creare regole.
Prima di tutto, assicurati di avere regole per mantenere attive le connessioni correnti se implementi una politica di blocco predefinita. Questo è particolarmente importante se sei connesso al tuo server tramite SSH. Se implementi accidentalmente una regola o una politica che interrompe la tua connessione corrente, potresti dover accedere al tuo server utilizzando una console di ripristino basata sul browser.
Un’altra cosa da tenere a mente è che l’ordine delle regole in ogni catena conta. Un pacchetto non deve trovare una regola più generale che corrisponde se è destinato a corrispondere a una regola più specifica.
Per questo motivo, le regole vicino all’inizio di una catena dovrebbero avere un livello di specificità più elevato rispetto alle regole in fondo. Dovresti abbinare prima casi specifici e poi fornire regole più generali per abbinare modelli più ampi. Se un pacchetto attraversa l’intera catena (se non corrisponde a nessuna regola), seguirà la regola più generale, ovvero la policy predefinita.
Per questo motivo, la policy predefinita di una catena influenza fortemente i tipi di regole che saranno incluse nella catena. Una catena con la policy predefinita di ACCEPT
conterrà regole che eliminano esplicitamente i pacchetti. Una catena che predefinisce DROP
conterrà eccezioni per i pacchetti che dovrebbero essere specificamente accettati.
Conclusione
A questo punto, sei pronto per implementare il tuo firewall. A tal fine, dovresti leggere Come Configurare un Firewall Utilizzando Nftables su Ubuntu 22.04. Oppure, per un approccio più generale, Come Configurare un Firewall con UFW su Ubuntu 22.04. Se preferisci eseguire il tuo firewall come un servizio gestito, puoi anche provare Firewall Cloud di DigitalOcean.
Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works