AVVIO ALL’USO

iptables: cos’è, a cosa serve, come configurarlo e gli usi avanzati per il firewalling

iptables è uno dei più famosi software open source che rispondono alle esigenze di firewalling, e non solo, degli amministratori di rete e di sistema. È disponibile in quasi tutte le distribuzioni Linux. Ecco una guida completa per configurarlo correttamente e per il suo primo utilizzo

Pubblicato il 26 Giu 2023

Fabrizio D'Amore

Docente di Cybersecurity a Sapienza Università di Roma, membro Socint

iptables avvio all'uso

Nel mondo Linux un classico strumento di lavoro è iptables[1], un software open source per amministratori di sistema/rete che può essere usato in quasi tutte le distribuzioni[2] per rispondere ad esigenze di firewalling e non solo.

L’uso dello strumento, qui considerato per il solo firewalling, non è banale e una guida iniziale al suo uso può risultare utile, nell’ottica di risparmiare tempo. In rete è possibile trovarne varie, ma in genere sono tecniche in maniera quasi brutale e con dettagli uniformemente pesati.

Qui il nostro scopo è quello di incoraggiare l’uso dello strumento, includendo chi ne è tentato ma è a digiuno sul firewalling, che abbia fatto la scelta di usare una distribuzione Linux.

Le uniche nozioni necessarie sono quelle relative all’internetworking[3], che si considereranno già acquisite.

Firewall: cos’è, come funziona e come configurarlo su Windows e Linux

Introduzione ai firewall e a iptables

Un firewall è uno strumento hardware o software che, in base a regole prestabilite o stabilite in tempo reale, consente di decidere in merito al transito di pacchetti; trattandosi di una decisione, l’esito sarà un responso affermativo o negativo.

L’esame dei pacchetti può essere svolto secondo varie filosofie, con un diverso livello di complessità.

A livello base si parla di packet filtering, politica per cui la decisione viene presa a livello di pacchetto in maniera stateless (ogni pacchetto è analizzato a sé stante, senza avere memoria dei pacchetti passati) o stateful (si ha una qualche memoria dei pacchetti precedenti e si parla talvolta di session filtering).

Lo strumento iptables può agire in maniera stateless o stateful, avendo memoria limitata alla connessione TCP[4] in atto.

Strumenti più potenti possono agire anche a più alto livello, fino a raggiungere quello applicativo. Il software iprtables può essere usato anche per finalità allargate[5], che non verranno tuttavia qui considerate, limitandoci al suo uso come firewall basato su packet o session filtering.

Il filtraggio pacchetti ha senso per non consentire la ricezione di quelli provenienti da dominii o indirizzi IP indesiderati.

In particolare, si possono adottare due politiche generali: blacklisting o whitelisting. Nella prima, tutti i transiti di pacchetti sono consentiti, eccetto quelli presenti in una lista, detta blacklist; nella seconda, tutti i transiti sono bloccati, eccetto quelli elencati in una whitelist, che sono consentiti. Ovviamente il whitelisting è più sicuro, mentre il blacklisting è più flessibile.

Altro fattore da considerare è la modalità d’uso del firewall: proteggiamo una rete o una macchina? Nel primo caso parliamo di firewall perimetrale, nel secondo di firewall personale.

Un amministratore di rete avrà interesse a far funzionare un firewall perimetrale, mentre un amministratore di una macchina vorrà proteggere solo un host; il firewall personale ha senso per due motivi: se la macchina fosse in una rete già protetta da un firewall perimetrale, potremmo desiderare maggiori restrizioni (l’altro caso, quello di ridurre le restrizioni, non è possibile); poiché è frequente l’attacco proveniente da una minaccia interna, che il firewall perimetrale non può impedire, potremmo voler effettuare una distinzione fra le connessioni fra macchine interne alla rete protetta.

Nel caso di iptables questa distinzione è importante, poiché impatta direttamente sulla modalità d’uso dello strumento.

Primo approccio a iptables

Faremo riferimento a una macchina standard Ubuntu 22.04 LTS, ritenendo le sue caratteristiche abbastanza diffuse; per altro tipo di distribuzioni qualche dettaglio potrà variare. Sono necessarie le credenziali con diritto di amministrazione: ogni comando dato sul terminale dovrà essere preceduto dal prefisso sudo, che sarà tuttavia omesso nelle descrizioni che seguono.

La componente firewall di iptables fa riferimento a una tabella detta filter, che è anche la tabella di default, per cui nei vari comandi non c’è bisogno di specificarla. L’altra informazione fondamentale è che iptables fa riferimento ad alcune sequenze di regole, dette chains (catene): ne esistono tre predefinite che si chiamano INPUT, OUTPUT e FORWARD ed è inoltre possibile crearne altre (più avanzato).

Tali regole definiscono il comportamento di iptables in merito al transito dei pacchetti: mentre la chain INPUT fa riferimento alle regole da applicare ai pacchetti destinati allo host dove è in esecuzione iptables, la chain OUTPUT si riferisce alle regole valide per i pacchetti originati dallo host (e destinati all’esterno dello host), mentre la chain FORWARD contiene le regole per i pacchetti che provengono dall’esterno e sono destinati all’esterno (dello host).

Ne segue che normalmente un firewall perimetrale conterrà la chain FORWARD (e forse anche INPUT e OUTPUT), mentre un firewall personale userà INPUT e OUTPUT e mai FORWARD.

I comportamenti, in corrispondenza a ciascuna regola, prendono il nome di TARGET e, per ora, limitiamoci a dire che sono ACCEPT (pacchetto accettato) e DROP (pacchetto bloccato; DROP = lasciar cadere). Esistono altri TARGET ma ne parleremo più in avanti. Occupiamoci per ora del semplice packet filtering.

Come configurare il packet filtering

Si potrà iniziare digitando:

iptables -vL

dove l’opzione -L chiede di visualizzare la lista delle regole attive e -v richiede la modalità “verbosa” che in questo caso fornisce informazioni preziose (sulle interfacce di rete a cui le regole fanno riferimento).

L’output del comando sarà qualcosa del tipo:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

a indicare l’assenza di regole e la presenza della policy blacklisting (si capisce dai termini policy ACCEPT): pacchetti non bloccati da regole specifiche vengono accettati.

Possiamo modificare la policy della chain FORWARD con:

iptables -P FORWARD DROP

Il risultato del comando iptables -vL sarà:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain FORWARD (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Il risultato è cambiato per la chain FORWARD diventando policy DROP.

Similmente è possibile impostare il blocco per default sulle altre catene. Come esempio proviamo il comando:

ping www.cybersecurity360.it

La risposta è:

PING www.cybersecurity360.it (108.156.2.110) 56(84) bytes of data.

64 bytes from server-108-156-2-110.mxp63.r.cloudfront.net (108.156.2.110): icmp_seq=1 ttl=244 time=14.3 ms

Se impostiamo a DROP tutte le policy otteniamo, invece:

ping: www.cybersecurity360.it: Temporary failure in name resolution

come era naturale aspettarsi.

Usiamo iptables come personal firewall

Ora analizziamo dapprima iptables usato come personal firewall, per cui non faremo uso di regole per la chain FORWARD.

Cominciamo a impostare la nostra whitelist, specificando le azioni consentite.

La prima è senz’altro autorizzare la connessione a localhost, perché molto software usa questa tecnica per la comunicazione fra le sue diverse componenti.

Facciamo ciò scrivendo iptables -A OUTPUT -o lo -j ACCEPT e iptables -A INPUT -i lo -j ACCEPT.

Qui l’opzione -A significa la volontà di “appendere” una nuova regola in calce alla chain specificata e le opzioni -i e lo introducono il nome dell’interfaccia di rete su cui le regole agiscono: lo denota appunto localhost.

L’opzione -j serve a introdurre il TARGET. Si noti che l’ordine con cui le regole appaiono nelle chains è significativo: esse vengono scandite sequenzialmente ed appena se ne incontra una applicabile si ha un “match,” la si usa e la scansione viene interrotta.

Proviamo ora a richiedere l’elenco delle regole:

iptables -vL

Chain INPUT (policy DROP 69 packets, 19067 bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all — lo any anywhere anywhere

Chain FORWARD (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 4 packets, 320 bytes)

pkts bytes target prot opt in out source destination

0 0 ACCEPT all — any lo anywhere anywhere

Notiamo che nella colonna prot (protocolli) appare scritto all, perché abbiamo specificato una regola senza precisare un particolare protocollo.

Supponiamo di voler consentire il ping, lo stesso di prima: per prima cosa si dovrà autorizzare il servizio DNS e poi lo specifico protocollo.

Come è noto, il protocollo DNS lavora sulla porta[6] 53, nota con il nome domain, principalmente in UDP e qualche volta in TCP.

Specifichiamo allora l’autorizzazione in ingresso e uscita per UDP sulla porta 53: iptables -A INPUT -p udp –sport 53 -j ACCEPT e iptables -A OUTPUT -p udp –dport 53 -j ACCEPT.

In questi due nuovi comandi notiamo qualcosa di nuovo: l’autorizzazione (ACCEPT) data per il protocollo UDP con porta destinazione 53 (–dport 53) o porta sorgente 53 (–sport 53).

L’opzione -p introduce il nome del protocollo a cui ci si riferisce ed è importante sapere quali protocolli possiamo usare: tutti quelli di livello non superiore a TCP, poiché iptables non lavora a livello più alto. Così non avrebbe senso scrivere -p http o -p SSH (perché di livello più alto).

Autorizziamo la porta 53 anche per TCP, ottenendo:

iptables -vL

Chain INPUT (policy DROP 507 packets, 159K bytes)

pkts bytes target prot opt in out source destination

5 542 ACCEPT all — lo any anywhere anywhere

2 309 ACCEPT udp — any any anywhere anywhere udp spt:domain

0 0 ACCEPT tcp — any any anywhere anywhere tcp spt:domain

Chain FORWARD (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 22 packets, 1781 bytes)

pkts bytes target prot opt in out source destination

5 542 ACCEPT all — any lo anywhere anywhere

2 160 ACCEPT udp — any any anywhere anywhere udp dpt:domain

0 0 ACCEPT tcp — any any anywhere anywhere tcp dpt:domain

Si noti che dpt:domain indica la porta destinazione domain, cioè 53. Se tentiamo il comando ping menzionato ancora non ne abbiamo ancora il funzionamento.

Infatti:

ping www.cybersecurity360.it

PING www.cybersecurity360.it (108.156.2.6) 56(84) bytes of data.

^C

— www.cybersecurity360.it ping statistics —

3 packets transmitted, 0 received, 100% packet loss, time 2035ms

Ciò perché non abbiamo ancora autorizzato il protocollo ping, che fa parte di ICMP.

Facciamolo: i messaggi inviati si chiamano echo-request e quelli ricevuti echo-reply.

iptables -A OUTPUT -p icmp –icmp-type echo-request -j ACCEPT

iptables -A INPUT -p icmp –icmp-type echo-reply -j ACCEPT

Ovviamente, l’opzione –icmp-type introduce il tipo di messaggio desiderato.

Otteniamo:

iptables -vL

Chain INPUT (policy DROP 609 packets, 190K bytes)

pkts bytes target prot opt in out source destination

13 1459 ACCEPT all — lo any anywhere anywhere

6 924 ACCEPT udp — any any anywhere anywhere udp spt:domain

0 0 ACCEPT tcp — any any anywhere anywhere tcp spt:domain

0 0 ACCEPT icmp — any any anywhere anywhere icmp echo-reply

Chain FORWARD (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 30 packets, 2413 bytes)

pkts bytes target prot opt in out source destination

13 1459 ACCEPT all — any lo anywhere anywhere

6 462 ACCEPT udp — any any anywhere anywhere udp dpt:domain

0 0 ACCEPT tcp — any any anywhere anywhere tcp dpt:domain

0 0 ACCEPT icmp — any any anywhere anywhere icmp echo-request

Dopo aver fatto ciò, siamo pronti a ripetere il ping:

ping www.cybersecurity360.it

PING www.cybersecurity360.it (108.156.2.110) 56(84) bytes of data.

64 bytes from server-108-156-2-110.mxp63.r.cloudfront.net (108.156.2.110): icmp_seq=1 ttl=244 time=14.5 ms

64 bytes from server-108-156-2-110.mxp63.r.cloudfront.net (108.156.2.110): icmp_seq=2 ttl=244 time=14.8 ms

64 bytes from server-108-156-2-110.mxp63.r.cloudfront.net (108.156.2.110): icmp_seq=3 ttl=244 time=13.7 ms

64 bytes from server-108-156-2-110.mxp63.r.cloudfront.net (108.156.2.110): icmp_seq=4 ttl=244 time=14.9 ms

^C

— www.cybersecurity360.it ping statistics —

4 packets transmitted, 4 received, 0% packet loss, time 3012ms

rtt min/avg/max/mdev = 13.732/14.470/14.850/0.448 ms

Siamo a buon punto. Se abbiamo compreso tutto, allora sarà facile consentire la visione del sito web di IMDB (Internet Movie Database). Basta autorizzare le connessioni TCP (in ingresso e uscita) con la porta 443 (https):

iptables -A INPUT -s 18.66.218.239 -p tcp –sport 443 –dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -d 18.66.218.239 -p tcp –sport 1024:65535 –dport 443 -j ACCEPT

Qui notiamo le opzioni -s, che introduce l’IP sorgente del pacchetto, e -d, che introduce l’IP destinazione.

Evidentemente abbiamo usato la conoscenza del fatto che il FQDN[7] www.imdb.com corrisponde all’IP 18.66.218.239.

Mentre il server https conversa usando la porta 443, il client può usare un numero qualsiasi di porta, purché non well-known[8] (da 1024 a 65535, intervallo indicato con 1024:65535, anche se talvolta si usano convenzioni diverse[9]).

Immagine che contiene testo, Viso umano, schermata, softwareDescrizione generata automaticamente

Similmente è possibile abilitare altri siti web con regole simili, purché specifichino l’indirizzo IP coinvolti.

Nel caso si voglia autorizzare il protocollo SSH (usa TCP su porta 22) occorreranno regole differenti per un client o un server. Per un client:

iptables -A INPUT -p tcp –sport 22 –dport 1024:65535 -j ACCEPT

iptables -A OUTPUT -p tcp –sport 1024:65535 –dport 22 -j ACCEPT

Invece, per un server:

iptables -A INPUT -p tcp –sport 1024:65535 –dport 22 -j ACCEPT

iptables -A OUTPUT -p tcp –sport 22 –dport 1024:65535 -j ACCEPT

Le varie tecnicalità viste si possono combinare in vari modi, specificando in uno stesso comando anche cose come IP sorgente, IP destinazione, protocollo, porta, interfaccia di rete ecc. Inoltre, notiamo che abbiamo sempre usato -A (append) per aggiungere regole in ultima posizione della chain: invece di -A possiamo usare -I <chain> <numero> per inserire al posto specificato da <numero> la regola in questione nella chain <chain> (la prima è la regola numero 1).

Se si vuole, invece, rimpiazzare la seconda regola con un’altra <S> possiamo scrivere iptables -R <chain> 2 <S>. L’opzione -D permette la cancellazione di una regola: per cancellare la prima regola dalla chain OUTPUT scriveremo iptables -D OUTPUT 1.

Dal punto di vista amministrativo va notato che le regole entrano in vigore appena definite e si perdono al riavvio della macchina.

Per questo ci sono i comandi iptables-save > iptables_rules.dat e iptables-restore < iptables_rules.dat che consentono di salvare le regole correnti e di ripristinarle appoggiandosi al file iptables_rules.dat.

In alternativa, occorre inserire le regole all’interno della sequenza di avvio.

Vediamo ora un esempio di configurazione della chain FORWARD.

Evidentemente parliamo di un firewall perimetrale. Immaginiamo di partire da una situazione di blacklisting e che all’inizio tutto sia consentito a tutti. Supponiamo di voler impedire alla macchina (della rete interna) 1.2.3.4 di connettersi al sito web (esterno) 5.6.7.8 (http).

Scriveremo:

iptables -A FORWARD -s 1.2.3.4 -d 5.6.7.8 -tcp –sport 1024:65535 –dport 80 -j DROP

iptables -A FORWARD -s 5.6.7.8 -d 1.2.3.4 -tcp –sport 80 –dport 1024:65535 -j DROP

per bloccare i pacchetti sia nell’andata che nel ritorno.

Molti dettagli aggiuntivi possono essere trovati digitando man iptables.

Le estensioni per iptables

Il software, già di per sé piuttosto ricco, ammette un cospicuo numero di moduli aggiuntivi che lo estendono in varie direzioni, arricchendolo ulteriormente. Essi possono essere specificati attraverso l’opzione -m.

Implicitamente abbiamo già sfruttato dei moduli aggiuntivi perché la specificazione di un protocollo attraverso l’opzione -p, determina l’inclusione automatica del relativo modulo. La lista delle estensioni è grande e può essere consultata digitando man iptables-extensions.

Come esempio, e con riferimento all’ultimo illustrato, mostriamo come si possa ottenere il blacklisting di 5.6.7.8 per 1.2.3.4 sia per http che per https. Senza estensioni avremmo dovuto impostare quattro regole. Con un’apposita estensione (la multiport) si ottiene una maniera compatta di specificare più porte sorgente o destinazione:

iptables -A FORWARD -s 1.2.3.4 -d 5.6.7.8 -tcp -m multiport –sports 1024:65535 –dports 80,443 -j DROP

iptables -A FORWARD -s 5.6.7.8 -d 1.2.3.4 -tcp -m multiport –sports 80,443 –dports 1024:65535 -j DROP

Notiamo le opzioni –dports e –sports (‘s’ aggiuntiva rispetto le tradizionali –dport e –sport) che introducono una sequenza di numeri di porta separati da virgole.

Ogni estensione può prevedere la possibilità di usare opzioni specifiche introdotte da essa, sempre precedute da ““.

Le principali estensioni per iptables

Ecco un elenco non esaustivo di alcune estensioni notevoli:

  1. addrtype: per distinguere fra indirizzi UNICAST, BROADCAST ecc.);
  2. connbytes: per ragionare sulla quantità di byte già trasmessi in una connessione TCP);
  3. connlimit: per limitare il numero di connessioni parallele a un server);
  4. icmp: già implicitamente visto, poiché caricato con -p icmp);
  5. iprange: per trattare con intervalli di indirizzi IP);
  6. mac: per filtrare indirizzi MAC; può essere usata solo per pacchetti provenienti da rete Ethernet);
  7. quota: per realizzare meccanismi di quota);
  8. state: per distinguere in base allo stato della connessione TCP);
  9. TCP: già introdotta;

e innumerevoli altre; per dettagli rimandiamo alla documentazione menzionata.

Come già accennato, quando si usa l’opzione -p seguita dal nome di un protocollo[10], il comportamento implicito di iptables è caricare una estensione corrispondente, così -p tcp produce lo stesso effetto di -m tcp.

Session filtering

Chiamiamo session filtering l’approccio di selezionare i pacchetti che possono passare basato su una qualche memoria: tipicamente lo stato della connessione TCP (UDP è connectionless) o i suoi flag.

Questo aiuta in alcune circostanze. Ad esempio, se consideriamo il protocollo ftp, questo prevede che il client si connetta al server sulla porta 21.

A connessione avvenuta, il trasferimento file avviene sulla porta 20.

Una tipica configurazione di iptables è bloccare le connessioni alla porta 20 a meno che queste non siano collegate (RELATED) a un’altra connessione già aperta.

Così se immaginiamo un firewall perimetrale, con interfaccia di rete eth1 verso Internet e eth2 verso la rete locale, con policy di default DROP, potremo abilitare la connessione sulla porta 20 del server ftp locale 1.2.3.4, con le seguenti regole:

iptables -A FORWARD -d 1.2.3.4 -sport 1024:65535 -dport 20 -i eth1 -o eth2 -m –state RELATED, ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 1.2.3.4 -sport 20 -dport 1024:65535 -i eth2 -o eth1 -m –state RELATED, ESTABLISHED -j ACCEPT

I principali stati possibili sono:

  1. NEW, pacchetto che ha iniziato una nuova connessione TCP o associato a una connessione TCP che non ha ancora inviato dati in entrambi le direzioni;
  2. RELATED, pacchetto che sta iniziando una nuova connessione ma è logicamente associato ad una già esistente;
  3. ESTABLISHED, pacchetto associato a una connessione che ha già inviato dati in entrambi le direzioni);
  4. INVALID. pacchetto non associato ad alcuna connessione nota). Da non dimenticare che, essendo le comunicazioni bidirezionali, le regole vanno sempre a coppie.

Come altro esempio, per mostrare l’uso dei flag di una connessione TCP per un web server sulla porta 443.

Immaginiamo uno scenario rigidamente controllato, ove è in uso una policy basata su whitelisting (come spiegato, nessun transito di pacchetto è permesso tranne quelli esplicitamente concessi).

Supponiamo che siano già autorizzate le consultazioni del DNS (abbiamo visto come nel paragrafo Primo approccio a iptables).

Supponiamo di gestire un firewall perimetrale che protegge una LAN e che mostra un’interfaccia di rete eth1 verso Internet ed eth2 verso la LAN.

Desideriamo consentire agli utenti della LAN la connessione ai web server in https (porta 443). Dunque, la trasmissione dei pacchetti dai client della LAN ai web server richiederà una regola di questo tipo:

iptables -A FORWARD -i eth2 -o eth1 -p tcp –sport 1024:65535 –dport 443 -j ACCEPT

in cui si esplicita che i client debbono usare una porta non well-known per inviare dati alla porta 443 di un server.

D’altra parte, desideriamo anche che i web server forniscano risposte alle richieste ricevute:

iptables -A FORWARD -i eth1 -o eth2 -p tcp –sport 443 –dport 1024:65535 ! –syn -j ACCEPT

ove vale la pena precisare che si vogliono pacchetti dal server, ma questi debbono essere sempre forniti come una risposta (e quindi con il flag SYN a FALSE).

Se il server chiedesse di aprire una connessione avrebbe il flag TCP SYN impostato a TRUE: con l’opzione ! –syn chiediamo la negazione (è il ruolo del simbolo !) del fatto che il flag SYN sia a TRUE (e i flag RST, ACK e FIN a FALSE).

In generale l’estensione tcp consente di ragionare sui flag TCP attraverso l’opzione –tcp-flags <lista1> <lista2>, dove <lista1> è la lista di flag (separati da virgola) da prendere in esame e <lista2> è la sottoparte di <lista1> in cui sono elencati i flag che debbono valere TRUE (i non elencati debbono perciò essere FALSE).

Premettendo il ! a –tcp-flags si ottiene la negazione logica. Naturalmente –syn è equivalente a –tcp-flags END,ACK,FIN,SYN SYN.

Usi più avanzati di iptables

Un tipico uso “più professionale” dello strumento prevede la creazione di nuove chain, dette user-defined; queste chain hanno un nome scelto in fase di creazione e si vanno a sommare alle chain di default (INPUT, OUTPUT, FORWARD), dette built-in.

Il comando iptables -N mychain crea una user-defined chain, inizialmente vuota.

Sarà possibile aggiungere a tale chain regole tramite il costrutto iptables -A mychain <regola>.

In ogni regola, quando si specifica un target, sarà possibile usare, oltre ai classici ACCEPT e DROP, anche il nome di una user-defined chain (produrrà un effetto simile a una chiamata a subroutine) o la keyword RETURN (valida solo per le user-defined chains), che produrrà un ritorno del controllo alla chain chiamante.

Mentre per le built-in chains è possibile definire una policy, la cosa non è possibile per le user-defined chains, che in caso di scansione terminata si comporteranno come se avessero una policy RETURN.

Dopo la creazione di mychain sarà possibile considerare il nuovo target: -j mychain che, come accennato, produrrà la scansione, alla ricerca di un match, delle regole inserite nella chain mychain.

Queste possibilità consentono una migliore organizzazione delle regole in termini di leggibilità e gestione e permetteranno di avere la loro fattorizzazione e incapsulamento (le stesse proprietà che si desiderano nel software).

Ad esempio, con riferimento alle ultime regole specificate nella sezione precedente, che permettono ai client della LAN di usare il web, avremmo potuto definire le user-defined chains chiamate WEB_IN e WEB_OUT:

iptables -N WEB_IN

iptables -N WEB_OUT

e inserire le due regole della sezione precedente in queste user-defined chain:

iptables -A WEB_OUT -i eth2 -o eth1 -p tcp –sport 1024:65535 –dport 443 -j ACCEPT

iptables -A WEB_IN -i eth1 -o eth2 -p tcp –sport 443 –dport 1024:65535 ! –syn -j ACCEPT

inserendo nella FORWARD le chiamate:

iptables -A FORWARD -i eth2 -o eth1 -p tcp –dport 443 -j WEB_OUT

iptables -A FORWARD -i eth1 -o eth2 -p tcp –sport 443 -j WEB_IN

la cui logica mostra che non appena un pacchetto proveniente dalla o diretto alla porta 443 (le due regole in pratica realizzano l’OR logico, non disponibile come primitiva nello strumento) allora demandiamo la gestione del problema alle chain WEB_*, che potrebbero avere un numero superiore di regole (come in pratica accade) per distinguere casi desiderati e indesiderati.

A questo punto ci sentiamo di dire che il lettore che ha avuto tenacia e pazienza di leggere fino a qui può approfondire facilmente (opzioni e comandi sono molti) consultando le citate pagine di man.

 

NOTE

  1. Iptables: il sito ufficiale per il download.

  2. Dal kernel 2.4 in poi. Qui un elenco delle distribuzioni.

  3. Assumeremo noto il modello generale di internetworking, basato su pacchetti di dati, sul loro instradamento tramite router secondo un modello ben consolidato. Per una prima conoscenza rimandiamo qui, da cui è possibile reperire altri riferimenti.

  4. È uno degli argomenti assunti noti. Qui per una prima trattazione.

  5. NATting, logging, accodamento nello userspace, mangling (letteralmente lacerazione, che si riferisce alla alterazione delle intestazioni dei pacchetti a scopi benigni). V. nota 1.

  6. Il termine deriva dall’inglese “port,” che dovrebbe essere tradotto come “porto.” Ma l’abitudine diffusa è usare “porta”.

  7. Fully qualified domain name.

  8. Le porte well-known sono quelle da 0 a 1023 e possono essere usate solo avendo privilegi di amministrazione. Sono registrate. Qui per approfondimenti.

  9. V. nota 8.

  10. Si possono specificare i protocolli di livello non applicativo tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp, mh oppure all. Per dettagli si rimanda alla documentazione menzionata.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Speciale PNRR

Tutti
Incentivi
Salute digitale
Formazione
Analisi
Sostenibilità
PA
Sostemibilità
Sicurezza
Digital Economy
CODICE STARTUP
Imprenditoria femminile: come attingere ai fondi per le donne che fanno impresa
DECRETI
PNRR e Fascicolo Sanitario Elettronico: investimenti per oltre 600 milioni
IL DOCUMENTO
Competenze digitali, ecco il nuovo piano operativo nazionale
STRUMENTI
Da Istat e RGS gli indicatori per misurare la sostenibilità nel PNRR
STRATEGIE
PNRR – Piano nazionale di Ripresa e Resilienza: cos’è e novità
FONDI
Pnrr, ok della Ue alla seconda rata da 21 miliardi: focus su 5G e banda ultralarga
GREEN ENERGY
Energia pulita: Banca Sella finanzia i progetti green incentivati dal PNRR
TECNOLOGIA SOLIDALE
Due buone notizie digitali: 500 milioni per gli ITS e l’inizio dell’intranet veloce in scuole e ospedali
INNOVAZIONE
Competenze digitali e InPA cruciali per raggiungere gli obiettivi del Pnrr
STRATEGIE
PA digitale 2026, come gestire i fondi PNRR in 5 fasi: ecco la proposta
ANALISI
Value-based healthcare: le esperienze in Italia e il ruolo del PNRR
Strategie
Accordi per l’innovazione, per le imprese altri 250 milioni
Strategie
PNRR, opportunità e sfide per le smart city
Strategie
Brevetti, il Mise mette sul piatto 8,5 milioni
Strategie
PNRR e opere pubbliche, la grande sfida per i Comuni e perché bisogna pensare digitale
Formazione
Trasferimento tecnologico, il Mise mette sul piatto 7,5 milioni
Strategie
PSN e Strategia Cloud Italia: a che punto siamo e come supportare la PA in questo percorso
Dispersione idrica
Siccità: AI e analisi dei dati possono ridurre gli sprechi d’acqua. Ecco gli interventi necessari
PNRR
Cloud, firmato il contratto per l’avvio di lavori del Polo strategico
Formazione
Competenze digitali, stanziati 48 milioni per gli Istituti tecnologici superiori
Iniziative
Digitalizzazione delle reti idriche: oltre 600 milioni per 21 progetti
Competenze e competitività
PNRR, così i fondi UE possono rilanciare la ricerca e l’Università
Finanziamenti
PNRR, si sbloccano i fondi per l’agrisolare
Sanità post-pandemica
PNRR, Missione Salute: a che punto siamo e cosa resta da fare
Strategie
Sovranità e autonomia tecnologica nazionale: come avviare un processo virtuoso e sostenibile
La relazione
Pnrr e PA digitale, l’alert della Corte dei conti su execution e capacità di spesa
L'editoriale
Elezioni 2022, la sfida digitale ai margini del dibattito politico
Strategie
Digitale, il monito di I-Com: “Senza riforme Pnrr inefficace”
Transizione digitale
Pnrr: arrivano 321 milioni per cloud dei Comuni, spazio e mobilità innovativa
L'analisi I-COM
Il PNRR alla prova delle elezioni: come usare bene le risorse e centrare gli obiettivi digitali
Cineca
Quantum computing, una svolta per la ricerca: lo scenario europeo e i progetti in corso
L'indice europeo
Desi, l’Italia scala due posizioni grazie a fibra e 5G. Ma è (ancora) allarme competenze
L'approfondimento
PNRR 2, ecco tutte le misure per cittadini e imprese: portale sommerso, codice crisi d’impresa e sismabonus, cosa cambia
Servizi digitali
PNRR e trasformazione digitale: ecco gli investimenti e le riforme previste per la digitalizzazione della PA
Legal health
Lo spazio europeo dei dati sanitari: come circoleranno le informazioni sulla salute nell’Unione Europea
Servizi digitali
PNRR e PA digitale: non dimentichiamo la dematerializzazione
Digital Healthcare transformation
La trasformazione digitale degli ospedali
Governance digitale
PA digitale, è la volta buona? Così misure e risorse del PNRR possono fare la differenza
Servizi digitali
Comuni e digitale, come usare il PNRR senza sbagliare
La survey
Pnrr e digitale accoppiata vincente per il 70% delle pmi italiane
Missione salute
Fascicolo Sanitario Elettronico alla prova del PNRR: limiti, rischi e opportunità
Servizi pubblici
PNRR: come diventeranno i siti dei comuni italiani grazie alle nuove risorse
Skill gap
PNRR, la banda ultra larga crea 20.000 nuovi posti di lavoro
Il Piano
Spazio, Colao fa il punto sul Pnrr: i progetti verso la milestone 2023
FORUMPA2022
PNRR e trasformazione digitale: rivedi i Talk di FORUM PA 2022 in collaborazione con le aziende partner
I contratti
Avio, 340 milioni dal Pnrr per i nuovi propulsori a metano
Next Generation EU
PNRR, a che punto siamo e cosa possono aspettarsi le aziende private
Fondi
Operativo il nuovo portale del MISE con tutti i finanziamenti per le imprese
Servizi comunali
Il PNRR occasione unica per i Comuni digitali: strumenti e risorse per enti e cittadini
Healthcare data platform
PNRR dalla teoria alla pratica: tecnologie e soluzioni per l’innovazione in Sanità
Skill
Competenze digitali, partono le Reti di facilitazione
Gli obiettivi
Scuola 4.0, PNRR ultima chance: ecco come cambierà il sistema formativo
Sistema Paese
PNRR 2, è il turno della space economy
FORUM PA 2022
FORUM PA 2022: la maturità digitale dei comuni italiani rispetto al PNRR
Analisi
PNRR: dalla Ricerca all’impresa, una sfida da cogliere insieme
Innovazione
Pnrr, il Dipartimento per la Trasformazione digitale si riorganizza
FORUM PA 2022
PA verde e sostenibile: il ruolo di PNRR, PNIEC, energy management e green public procurement
Analisi
PNRR, Comuni e digitalizzazione: tutto su fondi e opportunità, in meno di 3 minuti. Guarda il video!
Rapporti
Competenze digitali e servizi automatizzati pilastri del piano Inps
Analisi
Attuazione del PNRR: il dialogo necessario tra istituzioni e società civile. Rivedi lo Scenario di FORUM PA 2022
Progetti
Pnrr, fondi per il Politecnico di Torino. Fra i progetti anche IS4Aerospace
Analisi
PNRR, Colao fa il punto sulla transizione digitale dell’Italia: «In linea con tutte le scadenze»
La Svolta
Ict, Istat “riclassifica” i professionisti. Via anche al catalogo dati sul Pnrr
Analisi
Spazio, Colao fa il punto sul Pnrr: i progetti verso la milestone 2023
FORUM PA 2022
Ecosistema territoriale sostenibile: l’Emilia Romagna tra FESR e PNRR
Il Piano
Innovazione, il Mise “centra” gli obiettivi Pnrr: attivati 17,5 miliardi
Analisi
PNRR: raggiunti gli obiettivi per il primo semestre 2022. Il punto e qualche riflessione
Analisi
PNRR: dal dialogo tra PA e società civile passa il corretto monitoraggio dei risultati, tra collaborazione e identità dei luoghi
Webinar
Comuni e PNRR: un focus sui bandi attivi o in pubblicazione
Analisi
Formazione 4.0: cos’è e come funziona il credito d’imposta
PA e Sicurezza
PA e sicurezza informatica: il ruolo dei territori di fronte alle sfide della digitalizzazione
PA e sicurezza
PNRR e servizi pubblici digitali: sfide e opportunità per Comuni e Città metropolitane
Water management
Water management in Italia: verso una transizione “smart” e “circular” 
LE RISORSE
Transizione digitale, Simest apre i fondi Pnrr alle medie imprese
Prospettive
Turismo, cultura e digital: come spendere bene le risorse del PNRR
Analisi
Smart City: quale contributo alla transizione ecologica
Decarbonizzazione
Idrogeno verde, 450 milioni € di investimenti PNRR, Cingolani firma
Unioncamere
PNRR, imprese in ritardo: ecco come le Camere di commercio possono aiutare
I fondi
Industria 4.0: solo un’impresa su tre pronta a salire sul treno Pnrr
CODICE STARTUP
Imprenditoria femminile: come attingere ai fondi per le donne che fanno impresa
DECRETI
PNRR e Fascicolo Sanitario Elettronico: investimenti per oltre 600 milioni
IL DOCUMENTO
Competenze digitali, ecco il nuovo piano operativo nazionale
STRUMENTI
Da Istat e RGS gli indicatori per misurare la sostenibilità nel PNRR
STRATEGIE
PNRR – Piano nazionale di Ripresa e Resilienza: cos’è e novità
FONDI
Pnrr, ok della Ue alla seconda rata da 21 miliardi: focus su 5G e banda ultralarga
GREEN ENERGY
Energia pulita: Banca Sella finanzia i progetti green incentivati dal PNRR
TECNOLOGIA SOLIDALE
Due buone notizie digitali: 500 milioni per gli ITS e l’inizio dell’intranet veloce in scuole e ospedali
INNOVAZIONE
Competenze digitali e InPA cruciali per raggiungere gli obiettivi del Pnrr
STRATEGIE
PA digitale 2026, come gestire i fondi PNRR in 5 fasi: ecco la proposta
ANALISI
Value-based healthcare: le esperienze in Italia e il ruolo del PNRR
Strategie
Accordi per l’innovazione, per le imprese altri 250 milioni
Strategie
PNRR, opportunità e sfide per le smart city
Strategie
Brevetti, il Mise mette sul piatto 8,5 milioni
Strategie
PNRR e opere pubbliche, la grande sfida per i Comuni e perché bisogna pensare digitale
Formazione
Trasferimento tecnologico, il Mise mette sul piatto 7,5 milioni
Strategie
PSN e Strategia Cloud Italia: a che punto siamo e come supportare la PA in questo percorso
Dispersione idrica
Siccità: AI e analisi dei dati possono ridurre gli sprechi d’acqua. Ecco gli interventi necessari
PNRR
Cloud, firmato il contratto per l’avvio di lavori del Polo strategico
Formazione
Competenze digitali, stanziati 48 milioni per gli Istituti tecnologici superiori
Iniziative
Digitalizzazione delle reti idriche: oltre 600 milioni per 21 progetti
Competenze e competitività
PNRR, così i fondi UE possono rilanciare la ricerca e l’Università
Finanziamenti
PNRR, si sbloccano i fondi per l’agrisolare
Sanità post-pandemica
PNRR, Missione Salute: a che punto siamo e cosa resta da fare
Strategie
Sovranità e autonomia tecnologica nazionale: come avviare un processo virtuoso e sostenibile
La relazione
Pnrr e PA digitale, l’alert della Corte dei conti su execution e capacità di spesa
L'editoriale
Elezioni 2022, la sfida digitale ai margini del dibattito politico
Strategie
Digitale, il monito di I-Com: “Senza riforme Pnrr inefficace”
Transizione digitale
Pnrr: arrivano 321 milioni per cloud dei Comuni, spazio e mobilità innovativa
L'analisi I-COM
Il PNRR alla prova delle elezioni: come usare bene le risorse e centrare gli obiettivi digitali
Cineca
Quantum computing, una svolta per la ricerca: lo scenario europeo e i progetti in corso
L'indice europeo
Desi, l’Italia scala due posizioni grazie a fibra e 5G. Ma è (ancora) allarme competenze
L'approfondimento
PNRR 2, ecco tutte le misure per cittadini e imprese: portale sommerso, codice crisi d’impresa e sismabonus, cosa cambia
Servizi digitali
PNRR e trasformazione digitale: ecco gli investimenti e le riforme previste per la digitalizzazione della PA
Legal health
Lo spazio europeo dei dati sanitari: come circoleranno le informazioni sulla salute nell’Unione Europea
Servizi digitali
PNRR e PA digitale: non dimentichiamo la dematerializzazione
Digital Healthcare transformation
La trasformazione digitale degli ospedali
Governance digitale
PA digitale, è la volta buona? Così misure e risorse del PNRR possono fare la differenza
Servizi digitali
Comuni e digitale, come usare il PNRR senza sbagliare
La survey
Pnrr e digitale accoppiata vincente per il 70% delle pmi italiane
Missione salute
Fascicolo Sanitario Elettronico alla prova del PNRR: limiti, rischi e opportunità
Servizi pubblici
PNRR: come diventeranno i siti dei comuni italiani grazie alle nuove risorse
Skill gap
PNRR, la banda ultra larga crea 20.000 nuovi posti di lavoro
Il Piano
Spazio, Colao fa il punto sul Pnrr: i progetti verso la milestone 2023
FORUMPA2022
PNRR e trasformazione digitale: rivedi i Talk di FORUM PA 2022 in collaborazione con le aziende partner
I contratti
Avio, 340 milioni dal Pnrr per i nuovi propulsori a metano
Next Generation EU
PNRR, a che punto siamo e cosa possono aspettarsi le aziende private
Fondi
Operativo il nuovo portale del MISE con tutti i finanziamenti per le imprese
Servizi comunali
Il PNRR occasione unica per i Comuni digitali: strumenti e risorse per enti e cittadini
Healthcare data platform
PNRR dalla teoria alla pratica: tecnologie e soluzioni per l’innovazione in Sanità
Skill
Competenze digitali, partono le Reti di facilitazione
Gli obiettivi
Scuola 4.0, PNRR ultima chance: ecco come cambierà il sistema formativo
Sistema Paese
PNRR 2, è il turno della space economy
FORUM PA 2022
FORUM PA 2022: la maturità digitale dei comuni italiani rispetto al PNRR
Analisi
PNRR: dalla Ricerca all’impresa, una sfida da cogliere insieme
Innovazione
Pnrr, il Dipartimento per la Trasformazione digitale si riorganizza
FORUM PA 2022
PA verde e sostenibile: il ruolo di PNRR, PNIEC, energy management e green public procurement
Analisi
PNRR, Comuni e digitalizzazione: tutto su fondi e opportunità, in meno di 3 minuti. Guarda il video!
Rapporti
Competenze digitali e servizi automatizzati pilastri del piano Inps
Analisi
Attuazione del PNRR: il dialogo necessario tra istituzioni e società civile. Rivedi lo Scenario di FORUM PA 2022
Progetti
Pnrr, fondi per il Politecnico di Torino. Fra i progetti anche IS4Aerospace
Analisi
PNRR, Colao fa il punto sulla transizione digitale dell’Italia: «In linea con tutte le scadenze»
La Svolta
Ict, Istat “riclassifica” i professionisti. Via anche al catalogo dati sul Pnrr
Analisi
Spazio, Colao fa il punto sul Pnrr: i progetti verso la milestone 2023
FORUM PA 2022
Ecosistema territoriale sostenibile: l’Emilia Romagna tra FESR e PNRR
Il Piano
Innovazione, il Mise “centra” gli obiettivi Pnrr: attivati 17,5 miliardi
Analisi
PNRR: raggiunti gli obiettivi per il primo semestre 2022. Il punto e qualche riflessione
Analisi
PNRR: dal dialogo tra PA e società civile passa il corretto monitoraggio dei risultati, tra collaborazione e identità dei luoghi
Webinar
Comuni e PNRR: un focus sui bandi attivi o in pubblicazione
Analisi
Formazione 4.0: cos’è e come funziona il credito d’imposta
PA e Sicurezza
PA e sicurezza informatica: il ruolo dei territori di fronte alle sfide della digitalizzazione
PA e sicurezza
PNRR e servizi pubblici digitali: sfide e opportunità per Comuni e Città metropolitane
Water management
Water management in Italia: verso una transizione “smart” e “circular” 
LE RISORSE
Transizione digitale, Simest apre i fondi Pnrr alle medie imprese
Prospettive
Turismo, cultura e digital: come spendere bene le risorse del PNRR
Analisi
Smart City: quale contributo alla transizione ecologica
Decarbonizzazione
Idrogeno verde, 450 milioni € di investimenti PNRR, Cingolani firma
Unioncamere
PNRR, imprese in ritardo: ecco come le Camere di commercio possono aiutare
I fondi
Industria 4.0: solo un’impresa su tre pronta a salire sul treno Pnrr

Articoli correlati

Articolo 1 di 3