Tutorial iptables

Tutorial iptables

Iptables è un firewall di comando che filtra i pacchetti secondo le regole definite. Con iptables, gli utenti possono accettare, rifiutare o successive connessioni; È incredibilmente versatile e ampiamente usato nonostante sia stato sostituito da NfTables.

Dopo aver letto questo tutorial, capirai le politiche iptables e definirai le regole iptables per proteggere la tua rete domestica.

Nota: Il comando sudo è stato aggiunto per i lettori che hanno bisogno di copiare incolla le regole menzionate in questo tutorial iptables.

Glossario iptables:

BERSAGLIO: Quando si utilizzano iptables, un obiettivo è un'azione che si desidera applicare iptables quando un pacchetto corrisponde a una regola.

CATENA: Una catena è un elenco di regole; Le catene integrate disponibili sono: Input, output, in avanti, prerouting e postrouting.

TAVOLO: Le tabelle sono funzionalità iptables per ogni scopo. Ad esempio, esiste una tabella per le attività di routing e un'altra tabella per il filtraggio delle attività; Ogni tabella contiene catene di regole.

Le tabelle disponibili sono filtro, NAT, RAW, Sicurezza e Mangle. Ogni tabella contiene catene integrate (regola). Il seguente elenco mostra quali catene includono ogni tabella:

FILTRO INGRESSO PRODUZIONE INOLTRARE
Nat Prerote Postrouting PRODUZIONE
CRUDO Prerote PRODUZIONE
Mangano Prerote Postrouting PRODUZIONE INGRESSO INOLTRARE
SICUREZZA INGRESSO PRODUZIONE INOLTRARE

A seconda dell'azione che desideri che iptables faccia, è necessario specificare una tabella utilizzando l'opzione -t seguita dal nome della tabella. In questo tutorial, l'opzione -t non viene utilizzata. Questo tutorial si concentra sugli scopi di filtraggio utilizzando la tabella del filtro applicato per impostazione predefinita quando l'opzione -t non è passata. Mentre leggi questo tutorial, imparerai alcuni dei concetti sopra menzionati.

Come installare:

Per installare iptables su Debian e le sue distribuzioni Linux basate:

sudo apt install iptables -y

Prima di installare iptables su distribuzioni Linux basate su Redhat, è necessario disabilitare Firewalld eseguendo:

sudo systemctl smettere di firewalld
sudo systemctl disabilita firewalld
maschera sudo systemctl -ora firewalld

Quindi installa iptables eseguendo:

sudo yum installa iptableservices
sudo systemctl avvia iptables
sudo systemctl avvia ip6tables
sudo systemctl abilita iptables
sudo systemctl abilita ip6tables
sudo systemctl avvia ip6tables

Iniziare con iptables:

Prima di iniziare, controlla le regole precedenti istruendo iptables a elencare le politiche e le regole esistenti utilizzando il parametro -L (-List).

sudo iptables -l

L'output sopra mostra 3 righe: Ingresso a catena, catena in avanti e output a catena. Dove INGRESSO si riferisce alle politiche relative al traffico in arrivo, PRODUZIONE si riferisce alle politiche applicate al traffico in uscita e INOLTRARE si riferisce alle politiche di routing.

L'output mostra anche che non ci sono regole definite e tutte le politiche definite sono accettate.

Esistono 3 tipi di politiche: Accetta, rifiuta e lascia cadere.

La politica ACCETTARE consente connessioni; la politica RIFIUTARE rifiuta le connessioni che restituiscono un errore; la politica GOCCIOLARE rifiuta le connessioni senza produrre errori.
Quando si usa GOCCIOLARE, UDP I pacchetti vengono eliminati e il comportamento sarà lo stesso della connessione a una porta senza servizio. TCP I pacchetti restituiranno un Ack/RST, che è la stessa risposta con cui una porta aperta senza servizio risponderà. Quando si usa RIFIUTARE, Un pacchetto ICMP restituisce una destinazione, in alcun modo all'host di origine.

Quando ti occupi di iptables, devi prima per definire le tre politiche per ogni catena; Successivamente, puoi aggiungere eccezioni e specifiche. L'aggiunta di politiche sembra così:

sudo iptables -p input
sudo iptables -p output
sudo iptables -p forward

Politiche permissive e restrittive per iptables:

È possibile applicare iptables con una politica permissiva accettando tutte le connessioni in arrivo, tranne per questi, si lascia o rifiutate specificamente. In questo caso, ogni connessione è consentita a meno che non si definisca una regola per rifiutarla specificamente.

Al contrario, le politiche restrittive rifiutano tutte le connessioni tranne queste che si accettano specificamente. In questo caso, ogni connessione viene rifiutata a meno che non si definisca una regola per accettarla.

Applicare una politica restrittiva con iptables:

L'esempio seguente mostra come applicare una politica restrittiva con iptables lasciando cadere tutto il traffico in arrivo ad eccezione del consentito.

Bloccare il traffico in arrivo.

IMPORTANTE: applicare le seguenti 3 regole può lasciarti senza una connessione Internet. Utilizzando le regole menzionate in "Regole di applicazione iptables e stati iptables", aggiungi le eccezioni necessarie per ripristinare l'accesso a Internet. Puoi eseguire costantemente sudo iptables -f per scaricare le regole.

È possibile bloccare tutto il traffico in arrivo, consentendo solo al traffico in uscita di navigare sul Web e per le applicazioni necessarie.

sudo iptables -p drop di input
sudo iptables -p output accetta
sudo iptables -p drop

Dove:

-P = politica

sudo iptables -p drop di input: istruire gli iptables di rifiutare tutto il traffico in arrivo senza rispondere alla fonte.

sudo iptables -p output accetta: definisce una politica di accettazione per il traffico in uscita.

sudo iptables -p drop: istruisce iptables a non eseguire attività di routing che lasciano cadere tutti i pacchetti destinati a un host diverso (cercando di passare attraverso il dispositivo firewall) senza risposta.

L'esempio sopra consente di navigare sul Web e le connessioni avviate dal dispositivo locale (-P output accetta) ma impedirà le connessioni avviate da un altro host (-P drop di ingresso) come i tentativi di SSH di accedere al tuo dispositivo non restituiscono messaggi di errore.

Quando si abilitano iptables con una politica restrittiva come nell'esempio precedente, è necessario aggiungere regole per regolare la configurazione. Ad esempio, se si mantiene la configurazione sopra menzionata senza aggiungere un'eccezione ragionevole per l'interfaccia Loopback (LO), alcune applicazioni potrebbero non funzionare correttamente. Dovrai anche consentire il traffico in arrivo appartenente o correlato a una connessione avviata dal dispositivo.

Regole di aggiunta di iptables e stati iptables

È essenziale capire che iptables applica le regole per ordine. Quando si definisce una regola dopo una regola precedente, la seconda regola riscriverà l'ultima se un pacchetto corrisponde alla stessa regola.

Mi piace l'esempio precedente; Hai bloccato tutto il traffico in arrivo, è necessario aggiungere eccezioni per l'interfaccia Loopback; Questo può essere ottenuto aggiungendo il parametro -a (append).

sudo iptables -a input -m conntrack -ctstate stabilito, correlato -j accetta
sudo iptables -a output -m conntrack -ctstate stabilito -j accetta

Il modulo (-m) Conntrack -ctState Stabilito, correlato istruisce iptables per confermare se lo stato di connessione è Stabilito o correlato a una connessione esistente prima di applicare la politica delle regole definite.

Ci sono 4 possibili stati che iptables possono controllare:

Iptables State New: Il pacchetto o il traffico che consentono o bloccano tentativi di avviare una nuova connessione.

Stato iptables stabilito: Il pacchetto o il traffico che consentono o il blocco fa parte di una connessione consolidata.

Iptables State Relathing: Il pacchetto o il traffico avvia una nuova connessione ma è correlato a una connessione esistente.

Iptables State non valido: Il pacchetto o il traffico sono sconosciuti senza lo stato.

La prima riga dell'esempio sopra indica agli iptables di accettare i pacchetti in arrivo dal traffico proveniente o relativi alle connessioni avviate dal dispositivo. La seconda riga indica agli iptables di accettare solo il traffico in uscita da connessioni già consolidate.

Iptables aggiungono accettare il traffico di loopback e definire le interfacce:

L'interfaccia Loopback viene utilizzata da programmi che devono interagire con LocalHost. Se non consenti il ​​traffico di loopback, alcune applicazioni potrebbero non funzionare.

Il seguente comando consente le connessioni di loopback:

sudo iptables -a input -i lo -j accetta
sudo iptables -a output -o lo -j accetta

Dove -i e -o vengono utilizzati per specificare il dispositivo di rete per il traffico in arrivo (-i) e il traffico in uscita (-o).

Applicare una politica permissiva con iptables:

È inoltre possibile definire una politica permissiva che consente tutto il traffico ad eccezione del abbandono o respinto specificato. Puoi abilitare tutto tranne un intervallo IP o IP specifico, oppure puoi rifiutare i pacchetti in base alle loro intestazioni, tra più possibilità.

L'esempio seguente mostra come applicare una politica permissiva che consente tutto il traffico ad eccezione di un intervallo IP bloccato per il servizio SSH.

sudo iptables -p input accetta
sudo iptables -p output accetta
sudo iptables -p drop
sudo iptables -a input -p tcp -dport 22 -m iprange -src -range 192.168.1.100-192.168.1.110 -j rifiuta

L'esempio sopra applica una politica permissiva ma blocca l'accesso SSH a tutti gli IP appartenenti alla gamma 192.168.1.100 e 192.168.1.110.

Dove -p specifica il protocollo, -dport (o -destina -port) la porta di destinazione (22, ssh) e il modulo iprange con l'argomento -src -range (intervallo di origine) consente di definire l'intervallo IP. L'opzione -j (-jump) istruisce iptables cosa fare con il pacchetto; In questo caso, rappresentiamo il rifiuto.

Bloccare le porte con iptables

L'esempio seguente mostra come bloccare una porta specifica per tutte le connessioni, la porta SSH.

sudo iptables -a input -p tcp - -destination -port 22 -j drop

Salvare le modifiche iptables

Le regole iptables non sono persistenti; Dopo il riavvio, le regole non verranno ripristinate. Per rendere le tue regole persistenti, eseguire i seguenti comandi in cui la prima riga salva le regole nel file /etc /iptables.su.Regole e la seconda riga è quella di creare il file per iptables da iniziare dopo il riavvio.

sudo iptables-save> /etc /iptables.su.regole
nano/etc/network/if-pre-up.d/iptables

Aggiungi quanto segue al file e chiudi le modifiche al salvataggio (CTRL+X).

#!/bin/sh
/Sbin/Iptables-Restore < /etc/iptables.up.rules

Infine, dare le autorizzazioni di esecuzione del file eseguendo:

chmod +x/etc/network/if-pre-up.d/iptables

Lavaggio o la rimozione delle regole iptables:

Puoi rimuovere tutte le regole iptables eseguendo il seguente comando:

sudo iptables -f

Per rimuovere una catena specifica come l'input, è possibile eseguire:

sudo iptables -f

Conclusione:

Iptables sono tra i firewall più sofisticati e flessibili sul mercato. Nonostante sia sostituito, rimane uno dei software difensivi e di routing più diffusi.

La sua implementazione può essere rapidamente appresa da nuovi utenti Linux con conoscenza di base di TCP/IP. Una volta che gli utenti comprendono la sintassi, la definizione delle regole diventa un compito facile.

Ci sono molti più moduli e opzioni aggiuntivi che non sono stati coperti da questo tutorial introduttivo. Puoi vedere altri esempi iptables su iptables for principianti.

Spero che questo tutorial iptables sia stato utile. Continua a seguire il suggerimento Linux per ulteriori suggerimenti e tutorial Linux.