NAT vs PROXY

Uno degli argomenti più trattati sui News Group è la condivisione di internet su di una rete locale usando un solo punto di accesso.

E qui iniziano i consigli, chi opta per una soluzione HW basata su di un router, e chi sceglie di condividere un modem o una scheda ISDN utilizzando un SW.

Tra i tanti SW disponibili cito Wingate (il più diffuso), l’ICS (presente negli OS di Microsoft a partire da Windows 98 SE), WinProxy, Vicomsoft Internet Server

Tutti questi prodotti permettono di ottenere il risultato voluto, ma lo fanno utilizzando delle tecniche diverse e con caratteristiche diverse, cioè il NAT o il PROXY.

NAT

E’ l’acronimo di Network Address Traslation, cioè la traslazione di più indirizzi di rete IP privati in un unico indirizzo IP pubblico fornito dall’ISP.

FUNZIONAMENTO

La NAT si basa su di una tabella contenente la corrispondenza tra i socket interni e i socket esterni in uso (il socket è l’insieme di indirizzo IP e porta di comunicazione).

Quando un client va a visitare una pagina web su un server esterno, il suo indirizzo e la sua porta di origine vengono tradotti, e la corrispondenza viene registrata nella tabella.

Quando arriva la risposta dal server WEB esterno, la tabella permette di capire chi voleva quei dati, quindi effettua la traduzione inversa e li manda al client.

Tutte le comunicazioni dall’esterno che non sono in tabella vengono scartate.

Ecco l’esempio pratico:

il client 192.168.0.1 utilizza la prima porta disponibile 1234 per aprire una sessione WEB col server 212.41.203.1 sulla porta 80.

Il gateway che sfrutta il NAT intercetta la richiesta, e modifica l’intestazione dei pacchetti TCP in modo che risultino generati da lui, quindi per esempio 99.102.13.1 porta 1435.

Nella tabella viene inserita questa corrispondenza:

Origine Traduzione Destinazione
192.168.0.1:1234 99.102.13.1:1435 212.41.203.1:80

La destinazione riceverà i pacchetti da 99.102.13.1:1435, e a questo socket invierà i dati delle pagine WEB.

Il dispositivo gateway a questo punto riceve la risposta da 212.41.203.1:80, consulta la tabella e modifica l’intestazione dei pacchetti ricevuti per mandarli verso 192.168.0.1:1234

Se arriva qualche pacchetto da indirizzi IP non richiesti, e quindi non presenti in tabella, questi vengono scartati.

Il funzionamento è semplice, per questo le implementazioni di NAT sono sempre affidabili e senza buchi.

E’ importante capire che questa tecnica lavora ad un livello OSI basso, opera modificando solamente le intestazioni dei pacchetti TCP, quindi non è in grado di analizzare il contenuto delle informazioni che tratta, cioè di proteggere la rete in modo completo e da permettere delle policy per le varie utenze.

TIPI DI TRASLAZIONE

Ci sono 4 tipi di traduzione che è possibile implementare con NAT:

· STATICA: consiste nell’inserire in tabella una corrispondenza FISSA che consente di rendere disponibile all’esterno un servizio che gira su un host interno alla rete.
Es.: si può mappare la porta 80 del gateway sulla porta 80 di un server WEB interno 192.168.0.1, in modo che ogni richiesta HTTP sulla porta 80 dell’interfaccia pubblica del gateway rimandi al WEB posto sulla macchina con indirizzo privato.
In pratica, permette di far diventare pubblici dei servizi che girano su macchine locali, sfruttando un solo indirizzo IP pubblico anche in questo caso!

· DINAMICA: (o IP Masquerade) è la traduzione dell’esempio riportato più sopra, dove la tabella gestisce le connessioni. Tali connessioni hanno un certo timeout, scaduto il quale viene rimosso il record dalla tabella: tutto quello che non è in tabella viene eliminato a priori, quindi non esistono strade per arrivare dall’esterno su un PC interno, a meno che ci sia una NAT Statica oppure che sia stato al client a richiedere qualcosa di poco sicuro….. (il che è probabile)

· BILANCIAMENTO DI CARICO: questa è una funzionalità avanzata di NAT Statico, che permette di distribuire delle richieste di servizi su più server.
Poniamo il caso di un sito molto utilizzato, con tanti accessi che usa quindi diversi server WEB contenenti le stesse informazioni: utilizzando questa tecnica ogni richiesta sulla porta 80 può essere indirizzata ad un server diverso secondo qualche algoritmo, che può essere un semplice Round Robin (cioè “una richiesta per uno”) oppure il monitoraggio del carico dei server.
Questa funzione è più che altro un utilizzo avanzato di NAT messa a disposizione dai Firewall o da altri dispositivi dedicati.

· RIDONDANZA DI RETE: questa è una funzionalità avanzata di NAT Dinamico, che consente di instradare delle richieste di client interni verso differenti interfacce esterne, in modo da prevenire dei problemi in caso di fallimento di una connessione internet, o da bilanciare l’utilizzo di diverse connessioni.
Anche in questo caso, è una funzionalità offerta da dispositivi di un certo livello, come Firewall o Web Switch.

 

Vantaggi del NAT

· UTILIZZO DI UN SOLO IP: permette di risparmiare sull’acquisto di IP pubblici, traslando tutti gli IP privati nell’IP fornito dal provider.

· NASCONDE GLI HOST INTERNI: Sebbene è nata come tecnica per “risparmiare” sugli indirizzi IP pubblici necessari alla rete, ha il grande valore dal punto di vista della sicurezza di mascherare gli indirizzi interni dietro all’unico IP del provider.

· E’ AFFIDABILE: data la sua semplicità, le implementazioni sono sempre molto stabili.

Svantaggi di NAT

· Lavora a livello di trasporto: a questo livello non è possibile fare dei controlli sui dati che vanno verso servizi di livello più alti, quindi non protegge da cavalli di troia, o da attacchi che sfruttano dei bachi nei servizi.

· I protocolli che utilizzano un canale di ritorno (H.323, IRC per esempio) non funzionano, inoltre danno problemi protocolli che effettuano una qualche forma di manipolazione (tipo crittografia) delle intestazioni dei pacchetti.

 

PROXY

I server PROXY lavorano ad un livello OSI più alto, quello applicativo.
Questo significa che i servizi proxy non si occupano dei servizi TCP e IP, ma operano con dei protocolli applicativi come HTTP, FTP, SMTP, POP3…..vale a dire che per ogni servizio che si vuole “proxare” è necessario avere un servizio relativo.

FUNZIONAMENTO

I server proxy ricevono dai client le richieste di servizio come se fossero i server a cui tali richieste sono destinate.
A questo punto rigenerano da zero le richieste verso i server esterni, funzionando proprio come dei “mediatori” tra i client della rete interna e il mondo esterno.

Esempio:

Il client chiede attraverso il suo browser il sito www.virgilio.it.

Tale richiesta viene inoltrata al server PROXY, che ne prende carico e la inoltra, come se fosse lui stesso un browser, sulla sua interfaccia esterna verso internet.

Quando arrivano i dati richiesti, il PROXY li invia al client che li riceve come se il PROXY fosse il server WEB.

La differenza con la NAT è tantissima: qui non si parla di porte e di indirizzi IP, dal proxy passano solamente i protocolli di alto livello, in questo caso HTTP ma c’è un servizio proxy per quasi tutti i protocolli disponibili.

Anche con i server PROXY è possibile avere un bilanciamento del carico di lavoro per offrire un servizio interno che gira su più server all’esterno.

In questo caso la richiesta di servizio sarà inoltrata al server con meno carico di lavoro, come sarà monitorato dal PROXY.

Vantaggi del PROXY

· NASCONDE GLI HOST INTERNI: tutte le richieste all’esterno sembreranno fatte dal server PROXY, permettendo di utilizzare una stessa connessione da tutti i client

· ELIMINA LA NECESSITA’ DELL’INSTRADAMENTO A LIVELLO DI TRASPORTO: a differenza del NAT, non necessita che i pacchetti ruotino tra le reti interna ed esterna…ciò consente di evitare il passaggio dei protocolli che non si vuole inoltrare, e degli attacchi che sfruttano delle malformazioni sui pacchetti.

· CONTROLLA LA CONSISTENZA: rigenerando il pacchetto da zero, il PROXY evita di far passare dei pacchetti malformati che potrebbero fare danni. I pacchetti che crea il PROXY rispettano sempre il protocollo su cui lavora, in quanto il controllo è effettuato ad un livello più alto rispetto a NAT

· PERMETTE DI FILTRARE I CONTENUTI: nel caso di un servizio PROXY http, è possibile bloccare degli URL ritenuti pericolosi o di argomenti non voluti, bloccare gli ActiveX o le applet java…. nel caso di un PROXY che fa il relay della posta sì può eseguire un controllo antivirus sugli allegati e bloccare quelli con estensioni pericolose (*.vbs, *.exe…)

· PERMETTE DI TENERE UNA CACHE: sempre nel caso di PROXY http, lavorando a livello di pagine e contenuti WEB può tenere una cache delle pagine visitate, consentendo di accedere alle pagine caricate più di frequente direttamente dal disco del server in modo veloce e risparmiando banda del collegamento esterno.

· CONTROLLO E MONITORAGGIO DELLE CONNESSIONI: con un PROXY (tipo Wingate) si può vedere chi ha fatto cosa, cioè quali siti ha visitato un certo utente, quante volte ha controllato la posta….(sempre che vi possa interessare, di solito è un fantoccio per evitare la corsa ai siti porno)

Svantaggi del PROXY

· BACHI DELL’IMPLEMENTAZIONE: il funzionamento del PROXY è legato al protocollo, quindi è soggetto ad una serie di problemi ben maggiore rispetto ai problemi che si possono avere a livello di trasporto (NAT) Un attacco ad un PROXY può essere pericolosissimo in quanto il PROXY può essere utilizzato come punto di partenza per altri attacchi che vedrebbero il PROXY bucato come artefice….e lì sono problemi legali!

· CONFIGURAZIONE DEI CLIENT: ogni programma che dovrà andare all’esterno, va configurato per passare da un PROXY, e questo complica un po’ le cose, anche perchè:

· UN SERVIZIO PROXY PER OGNI PROTOCOLLO: ciò significa che ci sono protocolli che non vanno con il PROXY, o che hanno bisogno di implementazioni particolari se gli serve un canale di ritorno (tipo H.323 di NetMeeting)

 

Se volete mettere a disposizione di tutta la rete locale il collegamento ad Internet, valutate bene cosa scegliere….e verificate le caratteristiche del prodotto, non sono tutti uguali!

A seconda di cosa scegliete, vi troverete vantaggi e problematiche diverse.

Non è da escludere poi che vogliate usare un router e un server PROXY per ottenere il meglio delle tecniche…

Rate this post

Written by Daniele
Hi, I’m Daniele! In April 2012 I quit my full-time IT job to pursue entrepreneurship and a location independent lifestyle.