Ubuntu iptables Come controllare il traffico di rete usando iptables?

Ubuntu iptables Come controllare il traffico di rete usando iptables?
"… UN Utilità UNIX dello spazio utente che offre agli amministratori di sistema la possibilità di configurare le regole di filtraggio dei pacchetti IP implementati dal modulo di filtro netto del kernel." Iptables funge da firewall utilizzando regole di filtraggio dei pacchetti basati su vari criteri come indirizzo IP, porta e protocolli.

Questa guida discuterà come configurare e utilizzare le regole iptables su un sistema Ubuntu per proteggere la tua rete. Che tu sia un utente Linux alle prime armi o un amministratore di sistema esperto, da questa guida e in un modo o nell'altro, imparerai qualcosa di utile su Iptables.

Iptables vengono preinstallati su Ubuntu e la maggior parte delle distribuzioni basate su Debian. Ubuntu pacchetti anche Gufw Firewall, un'alternativa grafica che puoi usare per lavorare con iptables.

NOTA: Per utilizzare e configurare iptables, avrai bisogno di privilegi sudo sul tuo sistema. Puoi saperne di più su Sudo dal seguente tutorial.

Ora che sai cosa è iptables, immergiamoti subito!

Come utilizzare iptables per gestire il traffico IPv4?

Per utilizzare iptables per la rete IPv4 e la gestione del traffico, è necessario comprendere quanto segue:

Il comando iptables

Iptables offre una selezione di opzioni che ti consentono di personalizzare e sintonizzare le tue regole iptables. Discutiamo alcuni di questi parametri e vediamo cosa fanno.

NOTA: È possibile configurare una serie di regole che gestiscono un sottoinsieme specifico, noto come catene iptables.

Parametri iptables

Prima di iniziare a creare e configurare le regole iptables, capiamo prima le basi degli iptables, come la sintassi generale e gli argomenti predefiniti.

Considera il comando di seguito:

sudo iptables -i input -s 192.168.0.24 -j goccia

Il comando sopra dice agli iptables di creare una regola nella catena. La regola rilascia tutti i pacchetti dall'indirizzo IP 192.168.0.24.

Esaminiamo il comando, riga per riga, per capirlo meglio.

  • Il primo comando iptables chiama l'utilità della linea di comando iptables.
  • Il prossimo è -i argomento usato per l'inserimento. L'argomento di inserzione aggiunge una regola all'inizio della catena iptables e quindi viene assegnata una priorità maggiore. Per aggiungere una regola su un numero specifico nella catena, utilizzare l'argomento -i seguito dal numero in cui la regola dovrebbe essere assegnata.
  • L'argomento -s aiuta a specificare la fonte. Quindi, utilizziamo l'argomento -s seguito dall'indirizzo IP.
  • Il parametro -j con iptables specifica il salto su un target specifico. Questa opzione imposta l'azione che gli iptables devono eseguire una volta che c'è un pacchetto corrispondente. Iptables offre quattro obiettivi principali per impostazione predefinita, questi includono: accettare, rilasciare, registrare e rifiutare.

Iptables offre una selezione di parametri che puoi utilizzare per configurare varie regole. I vari parametri che puoi utilizzare per configurare le regole iptables includono:

Parametro regola iptables Descrizione
-S -Source Specificare l'origine, che può essere un indirizzo, un nome host o un nome di rete.
-p -protocol Specifica il protocollo di connessione; Ad esempio, TCP, UDP, ecc.
-D -Destination Specifica la destinazione, che può essere un indirizzo, un nome di rete o un nome host.
-J -Jump Imposta le azioni che iptables devono eseguire dopo aver trovato un pacchetto.
-o - -interfaccia Imposta l'interfaccia attraverso la quale l'iptable invia il pacchetto.
-I -Interface Imposta l'interfaccia utilizzata per stabilire i pacchetti di rete.
-C -Set -Counters Consente all'amministratore di impostare i contatori di byte e pacchetti per una regola specificata.
-catena g -goto Il parametro specifica che l'elaborazione dovrebbe continuare nella catena del set utente al ritorno.
-F -fragment Dice a iptables di applicare la regola solo al secondo e seguendo frammenti dei pacchetti frammentati.

Opzioni iptables

Il comando iptables supporta una vasta gamma di opzioni. Alcuni comuni includono:

Opzione Descrizione
-A -Append Aggiunge una regola alla fine di una catena specificata
-D -delete Rimuove una regola dalla catena specificata
-F -flush Rimuove tutte le regole, una alla volta
-L -E -list Mostra tutte le regole nella catena specificata
-Ioinsert Inserisce una regola nella catena specificata (passata come numero, quando non c'è numero specificato; la regola viene aggiunta in alto)
-C -C.ACKECK Domande per una corrispondenza di regola; requisito in una regola specificata
-V -verbose Visualizza maggiori dettagli se utilizzato con il parametro -l
-N -NEW -CHAIN Aggiunge una nuova catena definita dall'utente
-X -delete -chain Rimuove una catena specifica definita dall'utente

Tabelle iptables

Il kernel Linux ha tabelle predefinite che ospitano una serie di regole correlate. Queste tabelle predefinite hanno una serie di catene predefinite, ma gli utenti possono personalizzare le regole aggiungendo regole definite dall'utente.

NOTA: Le tabelle predefinite dipenderanno fortemente dalla configurazione del kernel e dai moduli installati.

Ecco le tabelle iptables predefinite:

1: le tabelle del filtro

La tabella del filtro è una tabella predefinita che contiene catene utilizzate per il filtro dei pacchetti di rete. Alcune delle catene predefinite in questa tabella includono:

Catena Descrizione
Ingresso Iptables usa questa catena per eventuali pacchetti in arrivo sul sistema, i.e., pacchetti che vanno alle prese di rete locali.
Produzione Iptables utilizzare la catena di output per pacchetti generati localmente, i.e., pacchetti che usciranno dal sistema.
Inoltrare Questa catena è ciò che gli iptables usano per i pacchetti instradati o inoltrati tramite il sistema.

2: i tavoli NAT

La tabella NAT o Indirizzo di rete è un dispositivo di routing utilizzato per modificare gli indirizzi IP di origine e di destinazione in un pacchetto di rete. L'uso principale della tabella NAT è collegare due reti in un intervallo di indirizzi privato con la rete pubblica.

NAT è stato sviluppato per supportare mascheramento degli indirizzi IP reali, consentendo a intervalli di indirizzi IP privati ​​di raggiungere la rete esterna. Questo aiuta a proteggere i dettagli sulle reti interne da essere rivelate nelle reti pubbliche.

La tabella NAT viene impiegata quando un pacchetto avvia una nuova connessione.

Iptables ha una tabella predefinita per l'indirizzo NAT. Questa tabella ha tre catene principali:

Catena Descrizione
Prerote Consente la modifica delle informazioni sui pacchetti prima di arrivare nella catena di input usata per i pacchetti in arrivo
PRODUZIONE Riservato per i pacchetti creati localmente, i.e., Prima che si verifichi il routing di rete
Postrouting Consente la modifica dei pacchetti in uscita: i pacchetti che lasciano la catena di output

Il diagramma seguente mostra una panoramica di alto livello di questo processo.

Usa il comando qui sotto per visualizzare le tabelle di routing NAT.

iptables -t nat -n -v -l

3: i tavoli di mangle

La tabella di mangle viene utilizzata principalmente per la modifica speciale dei pacchetti. In termini semplici, viene utilizzato per modificare le intestazioni IP di un pacchetto di rete. La modifica dei pacchetti può includere la modifica di un valore TTL del pacchetto, la modifica dei luppoli di rete validi per un pacchetto, ecc.

La tabella contiene le seguenti catene predefinite:

Catena Descrizione
Prerote Riservato per i pacchetti in arrivo
Postrouting Utilizzato per i pacchetti in uscita
INGRESSO Utilizzato per i pacchetti che entrano direttamente nel server
PRODUZIONE Utilizzato per i pacchetti locali
Inoltrare Riservato per i pacchetti instradati attraverso il sistema

4: i tavoli grezzi

Lo scopo principale della tabella grezza è configurare le eccezioni per i pacchetti non destinati a essere gestiti dal sistema di tracciamento. Il tavolo grezzo imposta un segno di notrack sui pacchetti, spingendo la funzione Conntrack a ignorare il pacchetto.

Conntrack è una funzione di rete del kernel Linux che consente al kernel Linux di tenere traccia di tutte le connessioni di rete, consentendo al kernel di identificare i pacchetti che costituiscono un flusso di rete.

Il tavolo grezzo ha due catene principali:

Catena Descrizione
Prerote Riservato per i pacchetti ricevuti dalle interfacce di rete
PRODUZIONE Riservato per i pacchetti avviati dai processi locali

5: la tabella di sicurezza

L'uso principale di questa tabella è l'impostazione del meccanismo di sicurezza di sicurezza di sicurezza interno per Linux (Selinux) che segna i pacchetti. Il marchio di sicurezza può essere applicato per connessione o pacchetto.

Viene utilizzato per le regole di controllo degli accessi obbligatorie ed è la seconda tabella a cui si accede dopo la tabella del filtro. Offre le seguenti catene predefinite:

Catena Descrizione
INGRESSO Riservato per i pacchetti in arrivo al sistema
PRODUZIONE Utilizzato per i pacchetti creati localmente
INOLTRARE Utilizzato per i pacchetti instradati attraverso il sistema

Avendo esaminato gli iptables predefiniti, facciamo un passo avanti e discutiamo di come lavorare con le regole iptables.

Come lavorare con le regole iptables?

Le regole iptables vengono applicate in ordine crescente. Ciò significa che la prima regola in un set specifico viene applicata per prima, seguita dal secondo, poi terzo e così via, fino all'ultimo.

A causa di questa funzione, iptables ti impedisce di aggiungere regole in un set usando il parametro -a; È necessario utilizzare il -I, seguito dal numero o svuotandolo per aggiungere alla parte superiore dell'elenco.

Visualizzazione di iptables

Per visualizzare i tuoi iptables, utilizzare il comando iptables -l -v per ipv4 e ip6tables -l -v per ipv6.

Inserire regole

Per inserire le regole in un set, è necessario posizionarle nell'ordine esatto, rispettando le regole utilizzate dalla stessa catena. Puoi visualizzare l'elenco delle tue regole iptables con il comando come discusso sopra:

sudo iptables -l -v

Ad esempio, per inserire una regola che consente le connessioni in arrivo alla porta 9001 su TCP, dobbiamo specificare il numero di regola della catena di input che aderisce alle regole del traffico per il Web.

sudo iptables -i input 1 -p tcp -dport 9001 -m stato --state new -j accetta

Una volta visualizzati gli Iptable attuali, dovresti vedere la nuova regola nel set.

sudo iptables -l -v

Sostituzione delle regole

La funzionalità di sostituzione funziona in modo simile per inserire, tuttavia utilizza il comando iptables -r. Ad esempio, per modificare la regola sopra e impostare la porta 9001 per negare, noi:

sudo iptables -r input 1 -p tcp -dport 9001 -m stato -stato new -j rifiuta

Cancellare una regola

Per eliminare una regola, passiamo il numero della regola. Ad esempio, per eliminare la regola sopra, possiamo specificare come:

sudo iptables -d input 1

Nella maggior parte dei distro Linux, iptables sono vuoti per IPv4 e IPv6. Quindi, se non hai aggiunto alcuna nuova regola, otterrai un output simile a quello mostrato di seguito. Questo è rischioso perché significa che il sistema sta permettendo tutto il traffico in entrata, in uscita e instradata.

Facciamo inserire come configurare iptables:

Come configurare iptables?

Esistono numerosi modi per configurare le regole iptables. Questa sezione utilizza esempi per mostrare come impostare le regole utilizzando indirizzi e porte IP.

Bloccare e consentire il traffico per porte

È possibile utilizzare una porta specifica per bloccare o consentire tutto il traffico su un'interfaccia di rete. Considera i seguenti esempi:

sudo iptables -a input -j accetta -p tcp - -destination -port 1001 -i wlan0

I comandi sopra consentono il traffico sulla porta 1001 TCP sull'interfaccia WLAN0.

sudo iptables -a input -j drop -p tcp - -destination -port 1001 -i wlan0

Questo comando fa l'opposto del comando sopra mentre blocca tutto il traffico sulla porta 1001 su WLAN0.

Ecco una stretta ispezione del comando:

  • Il primo argomento (-a) aggiunge una nuova regola alla fine della catena del tavolo.
  • L'argomento di input aggiunge la regola specificata alla tabella.
  • Drop Argomento imposta l'azione da eseguire come accettazione e rilascio, rispettivamente. Ciò significa che una volta che un pacchetto viene abbinato, viene lasciato cadere.
  • -p Specifica il protocollo come TCP e consente di passare il traffico su altri protocolli.
  • -Destination-Port Imposta la regola per accettare o abbandonare tutto il traffico destinato alla porta 1001.
  • -Dico a iptables di applicare la regola al traffico che arriva sull'interfaccia WLAN0.

NOTA: Iptables non capiscono gli alias dell'interfaccia di rete. Pertanto, in un sistema con più di un'interfaccia virtuale, dovrai definire l'indirizzo di destinazione manualmente ed esplicitamente.

Per esempio:

sudo iptables -a input -j drop -p tcp - -destination -port 1001 -i wlan0 -d 192.168.0.24

Indirizzi IP di whitelisting e blacklist

È possibile creare regole di firewall utilizzando iptables. Un esempio è fermare tutto il traffico e consentire al traffico di rete solo da indirizzi IP espliciti.

Esempio:

iptables -a input -m stato -stato stabilito, correlato -j accetta
iptables -a input -i lo -m comment -comment "consenti connessioni loopback" -j accetta
iptables -a input -p icmp -m comment -comment "consenti al ping di funzionare come previsto" -j

ACCETTARE

iptables -a input -s 192.168.0.1/24 -j accetta
iptables -a input -s 192.168.0.0 -j accetta
iptables -P Drop di input
iptables -p drop

La prima riga imposta una regola per consentire tutti gli indirizzi IP di origine nel 192.168.0.1/24 sottorete. Puoi anche utilizzare CIDR o singoli indirizzi IP. Nel comando seguente, impostiamo la regola per consentire tutto il traffico connesso alle connessioni esistenti. Nei comandi finali, impostiamo una politica per input e inoltra per eliminare tutto.

Utilizzando iptables su IPv6

Il comando iptables funziona solo su ipv4. Per utilizzare iptables su IPv6, è necessario utilizzare il comando IP6Tables. Ip6Tables utilizza tabelle grezze, filtranti, sicurezza e mangle. La sintassi generale per ip6tables è simile agli iptables e supporta anche opzioni di corrispondenza iptables come append, elimina, ecc.

Prendi in considerazione l'utilizzo delle pagine manuali IP6Tables per ulteriori informazioni.

Esempio di regole iptables per la sicurezza della rete

La creazione di regole di firewall adeguate dipenderà principalmente dal servizio in esecuzione su un sistema e dalle porte in uso. Tuttavia, ecco alcune regole di configurazione della rete di base che è possibile utilizzare per proteggere il sistema:

1: consentire il traffico dell'interfaccia loopback e rifiutare tutto il loopback proveniente da altre interfacce

iptables -a input -i lo -j accetta (puoi anche usare ip6tables)
iptables -a input ! -I lo -s 127.0.0.0 -j rifiuto (ip6tables anche applicabile)

2: Nega tutte le richieste di ping

iptables -a input -p icmp -m stato --state new --icmp -type 8 -j rifiuto

3: consenti le connessioni SSH

iptables -a input -p tcp -dport 22 -m stato --state new -j accetta

Questi sono comandi di esempio che puoi utilizzare per proteggere il sistema. Tuttavia, la configurazione dipenderà fortemente da cosa o da chi si desidera accedere a vari servizi.

ATTENZIONE: Se preferisci disabilitare completamente IPv6, assicurati di rimuovere la linea in quanto ciò rallenterà il processo di aggiornamento:

Precedente :: FFFF: 0: 0/96 100 Trovato in/etc/Gai.conf .

Questo perché il gestore di pacchetti APT risolve il dominio Mirror in IPv6 a causa dell'aggiornamento APT-get.

Come distribuire le regole iptables?

Per distribuire i tuoi iptables su Ubuntu o altri sistemi basati su Debian, inizia creando due file, IP4 e IP6, per i rispettivi indirizzi IP.

In entrambi i file, aggiungi le regole che si desidera far rispettare le regole dei file-IPv4 corrispondenti al file IP4 e alle regole IPv6 al file IP6.

Successivamente, dobbiamo importare le regole usando il comando:

sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)

Quindi, è possibile verificare se le regole sono applicate utilizzando il comando:

sudo iptables -l -v

Una rapida guida per i percorsi per iptables

Ubuntu, e le comuni distribuzioni basate su Debian, viene fornito con un pacchetto per persistente iptable che ti consente di applicare facilmente le tue regole del firewall al riavvio. Il pacchetto fornisce file che è possibile utilizzare per impostare le regole per IPv4 o IPv6 e può essere applicato automaticamente al momento dell'avvio.

Puoi anche utilizzare le regole del firewall utilizzando UFW o GUFW. Considera il seguente tutorial per imparare a usare UFW.

Come installare iptables-pericoloso?

Assicurati di avere l'installazione di Iptables-PerSistent sul tuo sistema. Usa DPKG per verificare se è installato il pacchetto.

In caso contrario, utilizzare il seguente comando:

sudo apt-get installa iptables-pericoloso

Ti verrà richiesto due volte per salvare entrambe le regole attuali IPv4 e IPv6. Fare clic su SÌ per salvare entrambe le regole.

Fare clic su SÌ per salvare IPv6.

Una volta completata l'installazione, verifica di avere la sottodirectory iptables, come mostrato nell'immagine seguente.

Ora puoi usare le regole.v4 e regole.v6 per aggiungere regole iptables e verranno applicati automaticamente da iptables-permanente. I file sono semplici file di testo che è possibile modificare facilmente utilizzando qualsiasi editor di testo a tua scelta.

Conclusione

In questo tutorial, abbiamo coperto le basi degli iptables. A partire dal lavoro con iptables, comandi di base, tabelle iptables predefinite e parametri.

Da quello che hai imparato, dovresti essere in grado di utilizzare iptables per creare regole di firewall che aiutano a proteggere il tuo sistema.