Un proxy server è un programma che si interpone tra un client e il server di un servizio client/server inoltrando le richieste e le risposte dall’uno all’altro.
Il client si collega al proxy e gli invia le richieste, il proxy si collega al server e inoltra la richiesta del client, riceve la risposta e la inoltra al client. Per l’applicazione server, il client è il proxy sever.
I proxy si possono dividere in proxy di applicazione e proxy a livello di circuito.
I proxy di applicazione lavorano a livello di applicazione e sono specifici per certi protocolli.
Il proxy di applicazione più comune è il proxy server specifico per il protocollo HTTP (proxy HTTP) che gestisce l’accesso al Web.
I proxy a livello di circuito sono più flessibili perché non sono specifici per un singolo protocollo, ma funzionano per qualsiasi servizio; si limitano ad effettuare un tunnel tra client e server. I proxy a livello di circuito sono anche semplici da implementare.
Proxy HTTP
L’utente usa normalmente il browser per visitare pagine Web su Internet; le richieste vengono effettuate tramite il server proxy, che riceve le risposte e le invia al browser interessato.
Quando effettua una richiesta il server proxy memorizza le risorse ricevute in una cache per future richieste dello stesso o di altri client; questo permette di ridurre il traffico verso l’esterno migliorando le prestazioni (comunque non bisogna dimenticare che tutti i dati in ingresso vengono elaborati due volte, una dal proxy e una dal client e questo può rallentare le prestazioni).
L’uso del server proxy permette anche di controllare le richieste che possono essere effettuate (per esempio a quali siti è permesso o vietato accedere), si comporta quindi come firewall a livello di applicazione, e di tenere traccia delle operazioni effettuate, per esempio di tutte le pagine Web visitate.
Il proxy HTTP può essere usato per:
-
connettività: permette a una rete privata di accedere all’esterno, o meglio a un client e un server che appartengono a due reti diverse di stabilire una connessione anche quando non è disponibile un instradamento diretto (routing) tra le reti; un computer con due interfacce, una verso la rete interna e una verso Internet, viene configurato in modo che faccia da proxy tra gli altri computer e Internet; si ha un unico computer connesso all’esterno, che però permette a tutti gli altri di accedere a Internet; è un modo per gestire gli accessi a Internet dalle stazioni di una rete locale che non richiede la presenza di un router nella rete; di solito in questo caso il proxy viene usato anche come firewall;
-
caching: memorizza i risultati delle richieste in modo da migliorare le prestazioni; offre due vantaggi principali: l’accesso rapido alle risorse già accumulate nella cache e la riduzione del traffico nella rete che precede il proxy stesso;
-
controllo: può applicare regole per determinare quali richieste inoltrare o rifiutare e limitare l’ampiezza di banda usata dai client;
-
monitoraggio: permette di tenere traccia delle operazioni effettuate da una stazione, identificata dal suo indirizzo IP, o da un utente, identificato dall’account con cui si è autenticato (anche se ciò può creare problemi di privacy); il proxy usato per offrire connettività ad Internet può richiedere obbligatoriamente l’autenticazione; in questo modo possono accedere ad Internet solo utenti autenticati ed è possibile registrare le operazioni compiute da ciascun utente;
-
sicurezza: nasconde lo schema di indirizzi della rete interna e quindi rende più difficoltoso l’accesso agli intrusi; sulla rete locale si possono usare gli indirizzi presi dagli intervalli di indirizzi privati; le reti esterne possono vedere solo l’indirizzo IP del proxy; tutte le conversioni fra rete interna ed esterna vengono gestite dal proxy;
-
privacy: maschera gli indirizzi IP del client; come indirizzo del client viene visto solo l’indirizzo del proxy; il proxy per accedere tramite il suo indirizzo usa tecniche di NAT del tipo SNAT (IP masquerading).
Quando il proxy viene usato principalmente per migliorare le prestazioni di un segmento di rete con l’uso della cache il proxy può essere installato su qualsiasi computer, basta che sia accessibile dal segmento di rete che lo deve utilizzare e che a sua volta sia in grado di accedere all’esterno.
Se il proxy viene usato per offrire connettività, deve essere installato su un computer con almeno due interfacce, una connessa alla rete locale con indirizzi privati e una connessa alla rete esterna; in questo modo permette ai client della rete privata di avere accesso all’esterno attraverso il proxy stesso. L’accesso si limita ai protocolli gestiti dal proxy (usando un proxy di applicazione spesso si tratta solo di HTTP e FTP).
Il proxy può ricoprire anche un ruolo di filtro e inoltro di pacchetti tra la rete privata e la rete esterna.
Per usare un proxy si può configurare il client in modo che si colleghi al proxy, oppure configurare il DNAT in modo da realizzare un servizio di proxy trasparente (facendo in modo che le connessioni vengano indirizzate automaticamente al proxy).
Proxy a livello di circuito
Un proxy a livello di circuito (per esempio proxy Socks) è completamente indipendente dal protocollo da veicolare.
Viene usato soprattutto per offrire connettività a Internet da una rete locale.
Permette a un client della rete locale di effettuare una connessione TCP con un server di qualsiasi servizio su Internet.
Configurazione del browser per usare un proxy server
Se non è configurato un proxy trasparente, il browser deve essere configurato in modo da inviare le richieste al proxy. Poi l’uso del proxy è trasparente, cioè il browser viene utilizzato normalmente.
Per usare un proxy per accedere a Internet, il browser deve essere configurato impostando l’indirizzo IP del proxy (HTTP, FTP, Socks ecc.) e la porta su cui è in ascolto e i nomi dei server a cui accedere direttamente (senza proxy). Può essere necessario configurare il browser in modo che il proxy venga usato solo per il traffico su Internet e non per il traffico locale.