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.
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:
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.