Crea sito
29 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

iptables

4 min read
iptables blocca o consente il traffico su un host Linux, simile a un firewall di rete. Questo strumento può impedire ad alcune applicazioni di ricevere o trasmettere richieste. Più specificamente, se l'applicazione ha difficoltà a raggiungere un altro endpoint, iptables potrebbe negare il traffico verso l'endpoint. Ad esempio, immagina che l'host della tua applicazione non possa raggiungere Opensource.com. Si utilizza curl per testare la connessione..

iptables blocca o consente il traffico su un host Linux, simile a un firewall di rete.
Questo strumento può impedire ad alcune applicazioni di ricevere o trasmettere richieste. Più specificamente, se l’applicazione ha difficoltà a raggiungere un altro endpoint, iptables potrebbe negare il traffico verso l’endpoint. Ad esempio, immagina che l’host della tua applicazione non possa raggiungere Opensource.com.
Si utilizza curl per testare la connessione..
$ curl -vvv opensource.com
* About to connect() to opensource.com port 80 (#0)
* Trying 54.204.39.132…
* Connection timed out
* Failed connect to opensource.com:80; Connection timed out
* Closing connection 0
curl: (7) Failed connect to opensource.com:80; Connection timed out
La connessione scade. Sospetti che qualcosa possa bloccare il traffico, quindi mostri le regole di iptables con l’opzione -S.

$ iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp –sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp –sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp –dport 53 -j ACCEPT

Le prime tre regole mostrano che il traffico scende per impostazione predefinita. Le restanti regole consentono il traffico SSH e DNS. In questo caso, controllare con il proprio amministratore di sistema se si richiede una regola per consentire il traffico verso endpoint esterni. Se si tratta di un host utilizzato per lo sviluppo o il test locale, è possibile utilizzare il comando iptables per consentire il traffico corretto. Prestare attenzione quando si aggiungono regole che consentono il traffico al proprio host.

iptables è un’interfaccia a riga di comando utilizzata per impostare e gestire le tabelle per il firewall Netfilter per IPv4, incluso nel kernel Linux. Il firewall abbina i pacchetti alle regole definite in queste tabelle e quindi esegue l’azione specificata su una possibile corrispondenza.

Tabelle è il nome di un insieme di catene.
Chain è una raccolta di regole.
La regola è condizione utilizzata per abbinare il pacchetto.
L’obiettivo è l’azione intrapresa quando una possibile regola corrisponde. Esempi del target sono ACCEPT, DROP, QUEUE.
La politica è l’azione predefinita intrapresa in caso di mancata corrispondenza con le catene integrate e può essere ACCETTA o DROP.
Sintassi:

iptables –table TABELLA -A / -C / -D … Regola CATENA – salta Target
TAVOLO
Esistono cinque tabelle possibili:

filtro: tabella utilizzata predefinita per il filtro pacchetti. Include catene come INPUT, OUTPUT e FORWARD.
nat: relativo alla traduzione dell’indirizzo di rete. Comprende catene PREROUTING e POSTROUTING.
mangle: per l’alterazione di pacchetti specializzati. Le catene integrate includono PREROUTING e OUTPUT.
raw: configura le esenzioni dal tracciamento delle connessioni. Le catene integrate sono PREROUTING e OUTPUT.
sicurezza: utilizzato per il controllo dell’accesso obbligatorio
CATENE
Esistono poche catene integrate incluse nelle tabelle. Loro sono:

INPUT: insieme di regole per i pacchetti destinati ai socket localhost.
AVANTI: per i pacchetti instradati attraverso il dispositivo.
OUTPUT: per pacchetti generati localmente, destinati ad essere trasmessi all’esterno.
PREROUTING: per modificare i pacchetti al loro arrivo.
POSTROUTING: per modificare i pacchetti in uscita.
Nota: è anche possibile creare catene definite dall’utente.

OPZIONI

-A, –append: Aggiungi alla catena fornita nei parametri.

Sintassi:

iptables [-t table] –append [chain] [parametri]

Esempio: questo comando elimina tutto il traffico proveniente da qualsiasi porta.

iptables -t filter –append INPUT -j DROP

Output:

-D, –elimina: elimina la regola dalla catena specificata.
Sintassi:

iptables [-t table] –delete [chain] [rule_number]
Esempio: questo comando cancella la regola 2 dalla catena INPUT.

iptables -t filter –dELETE INPUT 2

Output:

-C, –check: controlla se una catena è presente nella catena o no. Restituisce 0 se la regola esiste e restituisce 1 in caso contrario.
Sintassi:

iptables [-t table] –check [chain] [parametri]
Esempio: questo comando controlla se la regola specificata è presente nella catena INPUT.

iptables -t filter –check INPUT -s 192.168.1.123 -j DROP

Output:

PARAMETRI

I parametri forniti con il comando iptables vengono utilizzati per abbinare il pacchetto ed eseguire l’azione specificata. I parametri comuni sono:

-p, –proto: è il protocollo che segue il pacchetto. Possibili valori forse: tcp, udp, icmp, ssh ecc.
Sintassi:

iptables [-t table] -A [chain] -p {protocol_name} [target]
Esempio: questo comando aggiunge una regola nella catena INPUT per eliminare tutti i pacchetti udp.

iptables -t filter -A INPUT -p udp -j DROP

Output:

-s, –source: viene utilizzato per abbinare l’indirizzo di origine del pacchetto.
Sintassi:

iptables [-t table] -A [chain] -s {source_address} [target]
Esempio: questo comando aggiunge una regola nella catena INPUT per accettare tutti i pacchetti originati da 192.168.1.230.

iptables -t filter -A INPUT -s 192.168.1.230 -j ACCETTA

Output:

-d, –destinazione: viene usato per abbinare l’indirizzo di destinazione del pacchetto.
Sintassi:

iptables [-t table] -A [chain] -d {destination_address} [target]
Esempio: questo comando aggiunge una regola nella catena OUTPUT per eliminare tutti i pacchetti destinati a 192.168.1.123.

iptables -t filter -A OUTPUT -d 192.168.1.123 -j DROP

Output:

-i, –in-interface: abbina i pacchetti con l’interfaccia in-specifica specificata e esegue l’azione.
Sintassi:

iptables [-t table] -A [chain] -i {interfaccia} [target]
Esempio: questo comando aggiunge una regola nella catena INPUT per eliminare tutti i pacchetti destinati all’interfaccia wireless.

iptables -t filter -A INPUT -i wlan0 -j DROP


Output:

-o, –out-interface: abbina i pacchetti all’interfaccia out specificata.
-j, –jump: questo parametro consente di specificare l’azione da eseguire su una corrispondenza.
Sintassi:

iptables [-t table] -A [chain] [parametri] -j {target}
Esempio: questo comando aggiunge una regola nella catena FORWARD per eliminare tutti i pacchetti.

iptables -t filter -A FORWARD -j DROP

Output:

Nota:

Durante la prova dei comandi, è possibile rimuovere tutte le regole di filtro e le catene create dall’utente.
sudo iptables –flush
Per salvare la configurazione di iptables usare:
sudo iptables-save
Il ripristino della configurazione di iptables può essere eseguito con:
sudo iptables-restore
Esistono altre interfacce come ip6tables che vengono utilizzate per gestire le tabelle di filtro per IPv6.

Translate »