Filtraggio del traffico di rete
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Laboratorio di Amministrazione di Sistemi L-A Filtraggio del traffico di rete Si ringraziano sentitamente: Angelo Neri (CINECA) per il materiale sulla classificazione, le architetture ed i principi di funzionamento dei firewall Fabio Bucciarelli (DEIS – Università di Bologna) per il materiale sulla struttura e la configurazione del packet filter di Linux Firewall • Il termine firewall usato nell'informatica non deriva da "muro di fuoco" ma da "muro antincendio". Il suo scopo è quindi impedire che un incendio si propaghi da una parte all'altra del muro.
Firewall • Una immagine che rispecchia meglio la realtà del firewall è la cinta muraria di una città medievale. Naturalmente una città non può non avere contatti con l'esterno e la cinta muraria è fornita di porte con guardie che verificano se chi prova ad entrare o ad uscire è autorizzato oppure no. • Il firewall può quindi essere una buona difesa contro una banda di briganti che provano ad entrare palesemente armati in città ma non può nulla contro i furti effettuati dagli abitanti stessi della città se non al più controllare che nessuno esca col maltolto (se le guardie sono state istruite in tal modo e sono più abili nel perquisire i passanti di quanto questi siano capaci di nascondere la refurtiva). Firewall • Il firewall è quindi l'insieme delle difese perimetrali, siano esse realizzate in hardware od in software, con uno o più dispositivi.
Classificazione dei firewall Packet filters • Un packet filter è un programma od un dispositivo che controlla gli accessi ad una rete analizzando i pacchetti in ingresso ed in uscita e scegliendo quali bloccare e quali far passare in base agli indirizzi IP di provenienza e di destinazione. Nel contesto di una rete TCP/IP vengono controllati anche le porte tcp/udp ed i vari flag SYN, FYN, ACK, ecc. • Altro parametro importante su cui si basano le decisioni di un packet filter e’ l’ interfaccia sui cui il pacchetto transita e la direzione (ingresso o uscita)
Packet filters • Un packet filter può essere stateful o stateless ma praticamente tutte le implementazioni di packet filters stateful offrono anche un qualche tipo di protocol inspection per cui sono dei multilayer stateful firewall. Per questo motivo col termine "packet filter" ci si riferisce di solito a stateless packet filter. • Un packet filter stateless prende le decisioni pacchetto per pacchetto analizzando solo le info contenute nel pacchetto stesso • Un packet filter statefull utilizza anche informazioni di stato della “connessione” o comunque comunicazione di cui il pacchetto fa parte Packet filters • Il vantaggio principale del packet filtering rispetto alle altre tecniche di filtraggio è che questa è la tecnica più semplice da implementare, richiede meno risorse hardware ed è quindi la tecnica più economica e per questo motivo è anche la più diffusa. • Si può fare con praticamente qualunque router e con la maggior parte dei sistemi operativi: Linux Windows da NT in poi Macintosh da OS X
Packet filters • Un packet filter analizza di ogni pacchetto che passa: Interfaccia su cui passano i pacchetti. Protocollo IP. Per esempio TCP, UDP, ICMP, ESP. Indirizzo sorgente. Indirizzo di destinazione. Porta sorgente. Solo per i pacchetti TCP o UDP. Porta di destinazione. Flag di connessione. Per esempio SYN, ACK, RST, FYN, ecc Direzione Packet filters • Un packet filter compara il valore dei campi IP con quelli delle regole con cui e' stato configurato ed in base a queste il pacchetto passa oppure no. • La configurazione del packet filter è quindi fondamentale. • Comunque anche con la migliore configurazione il packet filter non verifica il contenuto dei pacchetti per cui non può bloccare virus ed ha problemi con protocolli che negoziano le porte, come ad esempio FTP attivo.
Packet filters • La regola d'oro per la configurazione di un filtro è permettere ciò che deve passare e negare tutto il resto. Purtroppo nella vita reale non sempre è facile capire cosa si deve permettere e cosa negare. Packet filters: cosa filtrare • Nella RFC2827 ci sono dei consigli interessanti, in particolare: Traffico in ingresso: 9 Bloccare i pacchetti destinati a servizi che non si vogliono offrire su internet. 9 Bloccare gli indirizzi con source address illegali, di broadcast, di loopback e riservati. 9 Se non si utilizza il multicast bloccare gli indirizzi multicast (224.0.0.0/4) 9 Bloccare ICMP broadcast. 9 Bloccare echo UDP. 9 Bloccare i pacchetti provenienti dall'esterno con indirizzo sorgente appartenente alla nostra rete.
Packet filters: cosa filtrare • I source address da bloccare sono quelli: illegali (es. 0.0.0.0/8) di broadcast (p.e. 255.255.255.255/32) riservati; almeno quelli della rfc1918: 910.0.0.0/8 9172.16.0.0/12 9192.168.0.0/16 di loopback: 127.0.0.0/8 Packet filters: cosa filtrare • Traffico in uscita: • Bloccare il traffico con un source address invalido. E' facile se la nostra rete è una foglia, praticamente impossibile altrimenti.
Packet filters • Caratteristiche e problemi di un packet filter stateless Per permettere una comunicazione vanno esplicitamente permessi i pacchetti in entrambe le direzioni Ad es. dal mio PC voglio poter accedere a servizi esterni (ad esempio navigare su Web) ma in generale NON voglio che dall’esterno si possa accedere ad alcunchè sul mio PC (sono solo “cliente” della rete). Posso lasciar passare tutti i pacchetti in uscita e bloccare tutti pacchetti in ingresso tranne le risposte alle mie richieste ma .. Come distinguere le risposte a richieste mie da tentativi di accesso esterno al mio PC ? 9 Sui servizio TCP based ci possiamo basare sui Flag TCP: per iniziare una connessione viene inviato un pacchetto con SYN=1 ma ACK=0, posso bloccare tutti questi e ammettere ogni altra combinazione (SYN=0 oppure SYN=1 e ACK0). Tali combinazioni vengono spesso indicate con “established”. E’ chiaramente una approssimazione che però normalmente funzione nel senso che non consente dall’esterno di stabilire una valida connessione TCP 9 Sui servizi UDP non ho modo di Packet filters 9 Sui servizi UDP non ho modo di distinguerlo, se devo usare dei servizi UDP oltre il packet filter devo sostanzialmente accettare qualunque pacchetto UDP di risposta almeno dagli host (IP) e servizi (port) che voglio utilizzare Ad esempio per utilizare un server DNS (server A porta 53) devo consentire tutti i pacchetti UDP in ingresso che hanno come from (server A, porta 53). Il problema e’ che e’ abbastanza facile “spoofare” l’indirizzo from .. 9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client” interface Vlan206 ip address 10.0.84.254 255.255.255.192 ip access-group 2256 in ip access-group 2206 out ! Solo le sesssioni tcp e il DNS access-list 2206 permit tcp any any established access-list 2206 permit udp host 10.0.1.53 eq domain any access-list 2206 deny ip any any log ! Anti spoof access-list 2256 permit ip 10.0.84.192 0.0.0.63 any access-list 2256 deny ip any any log
Packet filters 9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client”, l’host 10.0.84.250 è anche un web server interface Vlan206 ip address 10.0.84.254 255.255.255.192 ip access-group 2256 in ip access-group 2206 out ! Solo le sesssioni tcp e il DNS access-list 2206 permit tcp any any established access-list 2206 permit udp host 10.0.1.53 eq domain any access-list 2206 permit tcp any host 130.186.84.250 eq www access-list 2206 deny ip any any log ! Anti spoof access-list 2256 permit ip 130.186.84.192 0.0.0.63 any access-list 2256 deny ip any any log Packet filters • In generale e ‘ difficile far passare i servizi che “negoziano” le porte di comunicazione o che prevedono “call back” (come l’ FTP) • Il problema dell’ FTP: In una normale sessione FTP tra il client A e il server S avviene: TCP open (C,>1023) Æ (S,21) Control Channel Sul control channel si scambiano i comandi: es GET filename Il trasferimento avviene sul Data Channel Il Client sceglie una porta alta sulla quale si mette in ascolto e la comunica al server con il comando “PORT” es: PORT 1234 TCP open (S,20) -> (C,1234) 1023) Æ (S,21) Control Channel Sul control channel si scambiano i comandi: es GET filename Il Client chiede la modalità passiva (PASV) e il server si mette in ascolto su una porat alta es:3456 TCP open (C,>1023) -> (S,> 1023)
Stateful packet filter • La differenza sostanziale è che il firewall mantiene traccia delle “sessioni” e quindi è in grado di riconoscere automaticamente le risposte. Di solito esistono sintassi facilitate (o è addirittura automatico) per dire al firewall “fai passare le risposte” • In più possono analizzare il traffico a livello più alto per interpretare i protocolli sovrastanti e aprire dinamicamente le porte necessarie (vedi ad esempio il protocollo FTP) Application level firewall • Al massimo un network level firewall (un firewall che lavora ai livelli OSI 3/4, ad esempio un packet filter) può bloccare pacchetti che vengono da IP non validi o che provano connessioni a servizi non autorizzati. • Fatica a gestire protocolli come FTP attivo ed ancor più protocolli complessi come ad esempio H.323 (VOIP) o SQL*Net (Oracle). Questi problemi possono essere risolti solo a livelli più alti della pila OSI.
Application level firewall • Un modo è usare un application gateway o proxy applicativo cioè un software specifico per un determinato protocollo che fa contemporaneamente da server per chi deve navigare e da client verso internet. Application level firewall • Faccio un esempio pratico per chiarire il concetto: con il mio pc (192.0.34.129) voglio collegarmi a google. • Non posso però farlo direttamente perchè sulla rete è stato proibito (con un qualche tipo di network firewall) il routing diretto e solo una singola macchina può accedere ad internet e su questa è ospitato il proxy web. Mi devo perciò collegare al proxy e chiederle la pagina di google. Il proxy in questo caso è un web server che riceve la mia richiesta, la interpreta, chiede la pagina a google (fa da client) e poi me la fornisce.
Application level firewall • Sono anche possibili (e diffusi) caching proxy in cui le pagine più richieste vengono tenute in una cache locale in modo da evitare da dover scaricare più volte la stessa pagina e quindi velocizzare la navigazione per gli utenti e diminuire l'impiego di banda. I proxy possono poi anche essere trasparenti in modo da evitare di dover fare della configurazione sui client. Application level firewall • Un proxy, essendo contemporaneamente server e client, può bloccare gli attacchi basati sulla non conformità dei dati al protocollo. Per fare un esempio pratico (CVE-2001-0241) le estensioni Internet printing ISAPI di Windows 2000 permettevano di eseguire codice arbitrario a chi avesse fatto una richiesta con 420 byte nel campo 'Host' e caratteri particolari. Un web proxy avrebbe potuto bloccare un attacco di questo tipo ma non blocca attacchi in cui il protocollo è rispettato e sono i dati ad essere pericolosi (come un virus per email). • Un proxy è un “Man in the Middle” buono … • Un'altra cosa che un application gateway è in grado di fare è permettere solo alcuni comandi. Un proxy smtp potrebbe bloccare i comandi VRFY ed EXPN, utili una volta ma oramai usati solo dagli spammer, oppure alterare I banner • Gli application level gateway eccellono nella capacità di scrivere log particolarmente significativi perchè comprendono perfettamente il protocollo applicativo.
Stateful multilayer protocol inspection firewalls • Uno stateful multilayer firewall è un firewall che lavora su vari livelli OSI, tiene traccia dello stato delle connessioni e di almeno un protocollo applicativo. Necessita di risorse hardware decisamente superiore a quelle di un packet filter ed ha prestazioni di poco inferiori. • Per decidere se un pacchetto può o non può passare non guarda al singolo pacchetto ma alla storia della connessione tcp od udp (a rigore la connessione udp non esiste ma per quanto riguarda il firewall una connessione udp è uno scambio di pacchetti). Stateful multilayer firewalls • Ogni volta che viene stabilita una connessione il firewall si segna in una tabella le informazioni sulla connessione. Queste sono: indirizzo sorgente e destinazione, porta sorgente e destinazione, i fari flag tcp, in particolare il sequence number. Quando arriva un pacchetto di ritorno viene accettato solo dopo aver verificato nella tabella delle connessioni che tutti i parametri corrispondano.
Stateful multilayer firewalls • Un application gateway conosce un protocollo applicativo e si mette fisicamente in mezzo tra client e server evitando che i due si parlino direttamente. Un protocol inspection firewall invece permette che il client ed il server dialoghino ma verifica la correttezza formale dei protocolli usati e nel caso non venga rispettata tronca la comunicazione. Stateful multilayer firewalls • Purtroppo (o per fortuna) la rete è in continua evoluzione e ci sono protocolli oramai consolidati come HTTP ed FTP ma ne vengono creati continuamente di nuovi ed anche quelli esistenti vengono modificati. Non è praticamente possibile trovare un firewall che sia in grado di capire e filtrare in maniera corretta tutti i protocolli che ci possono interessare.
Personal firewall • I personal firewall (o host firewall) sono un tipo di firewall che devono essere usati sulla macchina da proteggere, non verificano solo il traffico di rete ma anche quale processo sta accedendo alla rete. Questo permette una precisione enorme nel controllo. Personal firewall • I personal firewall vanno configurati individualmente sui vari host e raramente questo può essere fatto in maniera accurata per cui solitamente si perde il vantaggio della granularità del controllo.
Personal firewall • I personal firewall sono poi spesso progettati per mandare più alert del necessario e raramente forniscono tutti i dati sui pacchetti bloccati o ricevuti per cui è difficile capire cosa effettivamente facciano. Tabella riassuntiva sui firewall Packet Application level Multilayer stateful filter firewall firewall Economici Non molto costosi Costosi Veloci Solitamente lenti Abbastanza veloci Filtraggio Massima granularità Filtraggio molto grezzo nel filtraggio e nei log preciso Serve un gateway per ogni protocollo
Come progettare una rete • Per ora abbiamo visto una classificazione dei firewall, vediamo ora come va progettata una rete in modo da renderla sicura. Come progettare una rete • La prima idea che viene è: Internet Firewall Rete locale
Come progettare una rete • Questa soluzione è valida ma solo nel caso che non vengano offerti servizi. Le macchine che offrono servizi sono generalmente attaccabili molto più facilmente di quelle che non offrono servizi e vanno perciò messe in una rete a parte chiamata DMZ (DeMilitarized Zone) in modo da evitare che un attaccante si impossessi di una macchina aperta in qualche modo all'esterno e da questa possa attaccare le macchine interne (generalmente considerate più preziose) senza dover passare dal firewall. Come progettare una rete Internet Firewall 1 DMZ Firewall 2 Rete interna
Come progettare una rete • In realtà non si perde quasi nulla a riunire “firewall 1” e “firewall 2” Internet Firewall Rete interna DMZ Come progettare una rete E' naturalmente possibile usare più DMZ per separare reti con dati di sensibilità differente: Internet Firewall DMZ 2 DMZ 1 Rete interna
Come progettare una rete • E' fondamentale che non sia possibile raggiungere la rete interna dalla DMZ e tantomeno dall'esterno. Come faccio allora ad accedere alla rete interna da internet (per manutenzione o quant'altro)? Sono possibili due soluzioni: • usare un bastion host. • Usare una VPN. Come progettare una rete • Un bastion host è una macchina esposta ad internet, posizionata nella DMZ o meglio ancora in una propria DMZ. Il suo scopo è concentrare in un unico punto tutti i modi di accedere alla rete interna in modo da poter concentrare in un solo punto la maggior parte degli sforzi per rendere sicura la rete.
Come progettare una rete • In queste slides ci siamo sempre riferiti al firewall come ad un unico oggetto. Vediamo ora come viene di solito realizzato il sistema Firewall Come progettare una rete Router esterno Stateful Internet multilayer Firewall Router DMZ Router interno Proxy Proxy DMZ Rete interna
Come progettare una rete • Abbiamo visto che packet filter, application level firewall e multilayer stateful firewall hanno punti di forza e di debolezza per cui vale la pena sfruttare le caratteristiche di ogni sistema. • Ogni router è un packet filter a costo zero (abbiamo già pagato per avere il router). • E' vero che tutto quello che fa un packet filter lo puo' fare il firewall stateful ma "sgrossando" il traffico con i packet filter si diminuisce il carico sulla macchina più costosa aumentando però la complessità dell’ambiente. Come progettare una rete • I router vanno quindi configurati in questo modo: • Traffico in ingresso: Bloccare i pacchetti destinati a servizi che non si vogliono offrire su internet. Bloccare gli indirizzi con source address invalidi. Bloccare i pacchetti con protocolli non utilizzati. Bloccare i pacchetti provenienti dall'esterno con indirizzo sorgente appartenente alla nostra rete. Permettere tutto il traffico di protocolli permessi e complessi (FTP, H323, ecc). Questi pacchetti verranno analizzati dal multilayer stateful firewall
Come progettare una rete • Traffico in uscita: bloccare il traffico con un source address invalido. Come progettare una rete • È bene inoltre usare un application gateway almeno per il web visto che il protocollo HTTP è oramai statico, è possibile trovare ottimo software free (p.e. squid) ed usando un caching proxy è pure possibile aumentare la velocità della navigazione e risparmiare banda.
Firewall di linux E’ integrato nel kernel di linux, quindi rappresenta la soluzione più semplice e veloce. Il kernel deve essere predisposto in fase di compilazione , oppure devono essere caricati gli appositi moduli. n Kernel 2.0.* -> ipfwadmin n Kernel 2.2.* -> ipchains n Kernel 2.4.* -> iptables Firewall di linux n L’attraversamento dei pacchetti tra un’interfaccia ed un’altra deve essere abilitata espressamente nel kernel, attraverso il comando: # echo 1 > /proc/sys/net/ipv4/ip_forward n Possibilità di estensioni (moduli), che possono essere incluse o meno in fase di compilazione
Iptables n Si basa sui concetti di tabelle, catene e regole n Una tabella è formata da catene (punti di controllo) e una catena da regole Tabelle n Filter n NAT n Mangle
Tabella filter Contiene le regole di filtraggio vere e proprie dei pacchetti che il firewall origina e riceve o che transitano dal firewall Tabella NAT Consente di effettuare il NAT (Networking Address Translation) degli indirizzi IP o del valore della porta sorgente o di destinazione
Tabella mangle Usata per effettuare alterazioni particolari dell’header IP (TTL, TOS, MARK) Particolarmente interessante è il target MARK, che permette di marcare il pacchetto, in modo da essere trattato diversamente nei successivi punti di controllo o da altri programmi Come i pacchetti attraversano i filtri Filtraggio dei pacchetti che devono Pacchetto che deve essere inoltrati essere inoltrato Mangle Filter FORWARDING FORWARDING Effettua NAT dei pacchetti in Effettua NAT uscita (tipicamente viene fatto il (Network Address Translation) mascheramento della soregente) dei pacchetti in ingresso POSTROUTING PREROUTING POSTROUTING Viene deciso se il PREROUTING DECISION DECISION ROUTING ROUTING Viene decisa Mangle Mangle pacchetto è l’interfaccia d’uscita RETE Nat RETE Nat destinato a localhost o deve del pacchetto essere inoltrato Mangle Filter INPUT OUTPUT Pacchetto destinato Pacchetto originato a localhost Filter LOCAL ROUTING Mangle Nat dal localhost INPUT PROCESS DECISION OUTPUT OUTPUT Filtraggio dei Filtraggio dei pacchetti in pacchetti in uscita ingresso al firewall al firewall
Catene della tabella filter n INPUT operazioni di filtraggio di pacchetti appena gunti al firewall e diretti all’host n FORWARD operazioni di filtraggio di pacchetti che transitano dal firewall n OUTPUT operazioni di filtraggio di pacchetti generati localmente che stanno per uscire dal firewall Catene della tabella NAT n PREROUTING operazioni di nat di pacchetti appena giunti al firewall n OUTPUT operazioni di nat di pacchetti generati localmente n POSTROUTING operazioni di nat di pacchetti che stanno per uscire dal firewall
Catene della tabella mangle n PREROUTING n INPUT n FORWARD n OUTPUT n POSTROUTING Le regole n Hanno la forma di ACL n Ogni catena ha una policy di default n L’elenco delle regole viene scorso dall’inizio alla fine n Al primo match si stabilisce cosa fare del pacchetto e, salvo casi particolari si interrompe l’analisi delle regole della catena n Se per nessuna regola c’è il match, si esegue la policy di default
Come si costruisce una regola #iptables [table] command [match] [target] n [table] selezione della tabella n [match] criteri per la selezione del pacchetto n [target] destino del pacchetto che soddisfa il match Comandi sulle catene n Creare una nuova catena (-N) n Cancellare una catena vuota (-X) n Cambiare lapolicy di default di una catena (- P) n Elencare le regole presenti in una catena (-L) n Svuotare una catena delle sue regole (-F) n Azzerare i contatori
Comandi per manipolare le regole di una catena n Appendere una nuova regola alla catena (-A) n Inserire una regola in una determinata posizione (-I) n Sostituzione di una regola presente in una certa posizione (-R) n Cancellazione di una regola presente in una certa posizione (-D) n Cancellazione della 1° regola di una catena (- D) I target (1) n ACCEPT il pacchetto viene accettato n DROP il pacchetto viene scartato n REJECT stesso effetto di DROP, ma viene inviato in risposta un messaggio di errore ICMP di tipo “port unreachable” n Catena creata dall’utente
I target (2) n RETURN termina la catena; se è una catena predefinita, viene eseguita la tattica, se è definita dall’utente, esegue la regola successiva sulla catena precedente n QUEUE accoda i pacchetti per elaborazioni userspace Esempi eth0 eth1 1.2.3.4 192.168.1.1 Internet FIREWALL LAN 192.168.1.* #iptables –A FORWARD –i eth1 –j DROP Tutte le opzioni di match possono essere negate attraverso il simbolo !
Esempi eth0 eth1 1.2.3.4 192.168.1.1 Internet FIREWALL LAN 192.168.1.* #iptables –A FORWARD –i eth1 –s 192.168.1.0/24 –d 0/0 –j DROP Esempi eth0 eth1 1.2.3.4 192.168.1.1 Internet FIREWALL LAN 192.168.1.* #iptables –A INPUT –p tcp –s 1.2.3.5 –d 1.2.3.4 –-dport 22 –j ACCEPT #iptables –A INPUT –p tcp –s 0/0 –d 1.2.3.4 -- dport 22 –j DROP
Esempi eth0 eth1 1.2.3.4 192.168.1.1 Internet FIREWALL LAN 192.168.1.* #iptables –A FORWARD –mac-source 00:60.08:91:CC:B7 –s 192.168.1.5 –d 0/0 –j ACCEPT I frammenti IP (1) n A volte il pacchetto generato dall’host mittente è troppo grande per attraversare alcune reti, viene quindi frammentato n Il frammento contiene un sottoinsieme dell’header, non è quindi possibile verificare le intestazioni TCP, UDP e regole come –p tcp, - -sport non possono essere verificate
I frammenti IP (2) n C’è la possibilità di dare una regola specifica per i frammenti, attraverso l’opzione –f n Esempio: #iptables –A OUTPUT –f –d 192.168.1.69 –j DROP I flag TCP n Si possono filtrare i pacchetti attraverso i flag specifici di TCP n --tcp-flags seguita da 2 stringhe di flag: la prima stringa è la maschera:lista di flag che si vogliono esaminare la seconda indica quali flag devono essere impostati
I flag TCP (esempio) Voglio fare il log di tutte le connessioni TCP che passano dal firewall #iptables –A FORWARD –p tcp –tcp-flags ALL SYN,FIN –j LOG --syn è un’abbreviazione di –tcp-flags SYN,RST,ACK SYN Connection tracking (1) Capacità per un firewall di mantenere memoria dello stato delle connessioni. Si usa l’opzione --state seguita da una lista di stati da confrontare.
Connection tracking (2) Questi stati sono: n NEW un pacchetto che crea una nuova connessione n ESTABLISHED un pacchetto che appartiene a una connessione esistente Connection tracking (3) n RELATED pacchetto relativo a una connessione esistente di cui non fa parte (es. errore ICMP, FTP data) n INVALID pacchetto che non può essere identificato (in genere va scartato)
Connection tracking (esempi) #iptables – A FORWARD –d 192.168.0.0/16 –m state –-state ESTABLISHED, RELATED –j ACCEPT Consente il transito verso 192.168.* per connessioni già realizzate o correlate a connessioni precedenti #iptables – A FORWARD –d 192.168.0.0/16 –m state –-state INVALID –j DROP Elimina i pacchetti non identificabili Network Address Translation (NAT) n Tecnica descritta nell’RFC 1631, con la quale un nodo di rete speciale acquista funzionalità simili a quelle di un router, allo scopo di sostituire indirizzi IP reali con altri indirizzi più convenienti n E’ possibile riutilizzare dinamicamente gli indirizzi IP privati, permettendo a tali reti di accedere all’esterno, pur non essendo questi univoci a livello globale
NAT 192.168.1.* eth0 eth0 1.2.3.4 192.168.1.1 Internet NAT LAN Host Host n Normalmente gli indirizzi IP 192.168.1.* non hanno la possibilità di essere riconosciuti univocamente all’interno della rete globale, pertanto non è possibile accedere all’esterno. Si può ottenere attraverso il NAT NAT n Souce NAT (SNAT) si ha quando si altera l’indirizzo sorgente del pacchetto. E’ effettuata in fase di post-routing n Destination NAT (DNAT) si ha quando si altera l’indirizzo di destinazione, ossia si cambia dove la connessione è diretta. Si effettua in fase di pre-routing
SNAT 192.168.1.* eth0 eth1 1.2.3.4 192.168.1.1 Internet NAT LAN Host Host #iptable –t nat –A POSTROUTING –o eth0 –j SNAT –to-source 1.2.3.4 SNAT (mascheramento) 192.168.1.* Indirizzamento IP eth0 dinamico 192.168.1.1 Internet NAT LAN Host Host #iptables –t nat –A POSTROUTING –o ppp0 –j MASQUERADE
DNAT Internet NAT 1.2.3.4:80 Rete locale 192.168.1.2:80 Server HTTP reale #iptables –t nat –A PREROUTING –p tcp –- dport 80 –i eth0 –j DNAT –to- destination 192.168.1.2 DNAT (redirect) eth0 eth1 1.2.3.4 192.168.1.1 Internet Proxy trasparente LAN 192.168.1.* Si vuole che tutte le richieste di servizi HTTP, da parte della rete locale, siano dirottati verso il proxy, sullo stesso computer che ospita il NAT, alla porta 8080 #iptables –t nat –A PREROUTING –p tcp –dport 80 –i eth1 –j REDIRECT –to-port 8080
Bibliografia n Rusty Russel, Linux 2.4 Packet filtering HOWTO http://www.netfilter.org/documentation/HOWTO/packet-filtering- HOWTO.html n Rusty Russel, Linux 2.4 NAT HOWTO http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.html n Oskar Andreasson, Iptables tutorial http://iptables-tutorial.frozentux.net/ n Manpage di iptables
Puoi anche leggere