Configurazione di un Reverse Proxy con IIS

Prima di affrontare un discorso ampio e specifico sul reverse proxy, occore definirlo in maniera chiara e concisa in modo da poter comprendere a pieno l’essenza di questo articolo.

Il reverse proxy è un tipo di proxy che recupera i contenuti per conto di un client da uno o più server. Questi contenuti sono poi trasferiti al client come se provenissero dallo stesso proxy, che quindi appare al client come un server. Mentre un proxy di inoltro agisce come intermediario permettendo ai suoi client di contattare qualsiasi server, un reverse proxy agisce come intermediario per i server ad esso associati per essere contattati da qualsiasi client. Molto spesso, i web servers più comuni inglobano le funzionalità di un reverse proxy al fine di proteggere i framework e applicativi contro le debolezze introdotte dal livello HTTP.


Utilizzo solito del reverse proxy è quello di rendere disponibile su Internet ai client, un server che si trova dietro un firewall; al firewall può essere associata la funzione di load balancing.

Quando viene adoperato in concomitanza con un firewall, agisce come port forwarding e dunque sul livello 7 della pila ISO/OSI. Il reverse proxy, abbinato al firewall, lavora essenzialmente seguendo questi punti:

  • Verifica della sintassi del protocollo per filtrare attacchi o richieste non volute;
  • Inoltro del traffico a più server diversi in base all’intestazione della chiamata;
  • Scansione del protocollo con funzioni ad esempio di antivirus;
  • Cifratura del protocollo. Per esempio la connessione fra il client e il firewall potrebbe essere HTTPS mentre fra firewall e server potrebbe essere HTTP, cosa che sgraverebbe il server dalla cifratura HTTPS;
  • Load balancing, suddividendo le richieste verso più server.

In sostanza il reverse proxy può essere usato per:

  • Oscuramento ai client delle caratteristiche di uno o più server collocati nella rete locale;
  • Riscrittura del URL;
  • Cifratura HTTPS;
  • Bilanciamento del traffico su più server;
  • Accesso a più server sfruttando un solo IP interpretando opportunamente la stringa di connessione;

Quando si parla di cyber security, molte volte occorre specificare delle best practices, in modo da evitare attacchi o tentativi di intrusione. Può essere opportuno mascherare un server dietro un reverse proxy grazie alla URL Rewrite in modo da esporre un public server, correttamente configurato.

Un esempio semplice risulta essere questo:

“Immaginate di avere un Server Web Locale, che non è esposto su Internet, e avete un Server Web Pubblico accessibile su internet. Se si vuole affacciare il Web Server Locale su internet bisognerà creare un tunnel, chiamato reverse proxy.”

In questo modo sarà possibile raggiungere un Web Server Locale tramite un URL “User Friendly” mascherando la porta esposta.


Come è possibile vedere in questo semplice schema, abbiamo un Web Server Locale raggiungibile tramite IP http://192.168.0.45:9000; vogliamo che esso sia raggiungibile all’indirizzo http://Pippo.ictpower.it/ e possa essere pubblico o protetto tramite password. Ciò è possibile grazie alla funzionalità URL Rewrite e IIS, abbinato al ARR, Application Request Routing.

Prima di creare il nostro tunneling, è indispensabile abilitare IIS nel nostro Windows Server ed installare Windows Web Platform Installer in modo da poter scaricare i moduli necessari per poter configurare correttamente il reverse proxy.


Per poter installare “Windows Web Platform Installer”, Sul lato destro della finestra “Internet Information Services” troveremo “Get New Web Platform Components”. È un link che aprirà una pagina web dove cliccheremo Free Download.


Si è testato questa procedura su Windows Server r2 2012 Datacenter. Al termine dell’installazione del “Windows Web Platform Installer”, tramite la textbox di ricerca, scaricheremo i due successivi pacchetti in elenco:

  1. URL Rewrite 2.0;
  2. Application Request Routing.



Dopo aver installato i due pacchetti si suggerisce un riavvio per poi configurare il sito IIS.

Ora bisognerà creare il nostro sito web e successivamente entrare in “URL Rewrite”

Sul lato destro della colonna cliccheremo su “Add Rule(s)” che aprirà una finestra dove sceglieremo “Reverse Proxy”


Dopo aver premuto “OK”, potrebbe comparirvi una finestra di avviso dove vi avvisa che la funzionalità deve essere attivata; premete nuovamente “OK”.


N.B
Il reverse proxy è una funzionalità molto utile ma va usata con senno in quanto potrebbe affacciare la vostra rete locale verso il MONDO! Occorre sempre abbinare il reverse proxy ad uno o più firewall.


Successivamente comparirà la finestra dove specificare la regola:

  • Nella prima textbox, inseriremo, come da esempio “192.168.0.45:9000
  • “Enable SSL Offloading” aiuta ad incrementare le performance del server e nella gestione delle richieste.

Se si seleziona “Rewrite the domain names of the links in HTTP responses“, potremo inserire un URL pubblica facile da ricordare. Questa regola non fa altro che sostituire tutti i riferimenti verso IP 192.168.0.45:9000 con Pippo.ictpower.it.

Premuto “OK”, la configurazione termina. Ora saremo in grado di visitare URL Pippo.ictpower.it e puntare sull’IP locale.



Nella finestra in immagine, si notano le due regole che permettono di accedere all’indirizzo locale tramite URL Rewrite.

Questa tipologia di configurazione risulta essere molto utile in situazioni aziendali complesse, dove vi è la necessità di mascherare e difendere i server nella intranet.