Come funziona un reverse proxy
Nelle
informatiche
, un proxy inverso o server surrogato è un server proxy che appare a qualsiasi client come un normale server web, ma in realtà agisce semplicemente come un intermediario che inoltra le richieste del client a uno o più server web ordinari. I proxy inversi aiutano ad aumentare la scalabilità, le prestazioni, la resilienza e la sicurezza, ma comportano anche una serie di rischi.
Le aziende che gestiscono server Web spesso impostano proxy inversi per facilitare la comunicazione tra il browser di un utente Internet e i server Web. Un importante vantaggio di questa operazione è che i server Web possono essere nascosti dietro un firewall su una rete interna all'azienda e solo il proxy inverso deve essere esposto direttamente a Internet. I server proxy inversi sono implementati nei più diffusi server web open source. I server proxy inversi dedicati sono utilizzati da alcuni dei più grandi siti Web su Internet.
Un proxy inverso è in grado di tracciare tutte le richieste di indirizzi IP che vengono inoltrate attraverso di esso, nonché di leggere e/o modificare qualsiasi traffico non crittografato. Tuttavia, ciò significa implicitamente che potrebbe farlo anche un attore di minacce che compromette il server.
I proxy inversi differiscono dai proxy forward, che vengono utilizzati quando il client è limitato a una rete interna privata e chiede a un proxy di inoltro di recuperare le risorse dalla rete Internet pubblica.
Utilizza
i siti Web di grandi dimensioni e le reti per la distribuzione di contenuti utilizzano proxy inversi, insieme ad altre tecniche, per bilanciare il carico tra i server interni. I proxy inversi possono mantenere una cache di contenuto statico, riducendo ulteriormente il carico su questi server interni e sulla rete interna. È anche comune per i proxy inversi aggiungere funzionalità come compressione o crittografia TLS al canale di comunicazione tra il client e il proxy inverso. [3]
I proxy inversi possono ispezionare le intestazioni HTTP, il che, ad esempio, consente loro di presentare un singolo indirizzo IP a Internet mentre inoltrano le richieste a diversi server interni in base all'URL della richiesta HTTP.
I proxy inversi possono nascondere l'esistenza e le caratteristiche dei server di origine. Ciò può rendere più difficile determinare l'effettiva posizione del server di origine/sito web e, ad esempio, più difficile avviare azioni legali come la rimozione o il blocco dell'accesso al sito web, poiché l'indirizzo IP del sito web potrebbe non essere immediatamente evidente. Inoltre, la delega inversa può trovarsi in una giurisdizione diversa con requisiti legali diversi, complicando ulteriormente il processo di rimozione.
Le funzionalità del firewall delle applicazioni possono proteggere dai comuni attacchi basati sul Web, come un attacco Denial-of-Service (DoS) o attacchi Distributed Denial-of-Service (DDoS). Senza un proxy inverso, ad esempio, può essere difficile rimuovere il malware o avviare la rimozione (gestendo contemporaneamente l'attacco) sul proprio sito.
Nel caso di siti Web sicuri, un server Web potrebbe non eseguire la crittografia TLS da solo, ma scaricare l'attività su un proxy inverso che potrebbe essere dotato di hardware di accelerazione TLS. Vedere Proxy di terminazione TLS.
Un proxy inverso può distribuire il carico dalle richieste in arrivo a diversi server, ognuno dei quali supporta la propria area di applicazione. Nel caso di server Web di reverse proxying, il proxy inverso potrebbe dover riscrivere l'URL in ogni richiesta in arrivo in modo che corrisponda alla posizione interna pertinente della risorsa richiesta.
Un proxy inverso può ridurre il carico sui server di origine memorizzando nella cache il contenuto statico e il contenuto dinamico, noto come accelerazione Web. Procura Le cache di questo tipo possono spesso soddisfare un numero considerevole di richieste del sito Web, riducendo notevolmente il carico sui server di origine.
Un proxy inverso può ottimizzare il contenuto comprimendolo al fine di accelerare i tempi di caricamento.
In una tecnica chiamata "spoon-feeding", [4] una pagina generata dinamicamente può essere prodotta tutta in una volta e servita al proxy inverso, che può quindi restituirla al client un po' alla volta. Il programma che genera la pagina non deve rimanere aperto, liberando così le risorse del server durante il tempo eventualmente prolungato richiesto dal client per completare il trasferimento.
I reverse proxy possono funzionare ovunque più server web debbano essere accessibili tramite un unico indirizzo IP pubblico. I server web sono in ascolto su porte diverse nella stessa macchina, con lo stesso indirizzo IP locale o, eventualmente, su macchine diverse con indirizzi IP locali diversi. Il proxy inverso analizza ogni richiesta e lo consegna al server giusto all'interno della rete locale.
I proxy inversi possono eseguire test A/B e test multivariati senza richiedere il codice dell'applicazione per gestire la logica di quale versione viene fornita a un client.
Un proxy inverso può aggiungere l'autenticazione di accesso a un server Web che non dispone di alcuna autenticazione. [5] [6]
Rischi
Quando il traffico di transito è crittografato e il proxy inverso deve filtrare/memorizzare nella cache/comprimere o modificare o migliorare in altro modo il traffico, il proxy deve prima decrittografare e crittografare nuovamente le comunicazioni. Ciò richiede che il proxy possieda il certificato TLS e la chiave privata corrispondente, estendendo il numero di sistemi che possono avere accesso a dati non crittografati e rendendolo un bersaglio più prezioso per gli aggressori.
La stragrande maggioranza delle violazioni dei dati esterni si verifica quando gli hacker riescono ad abusare un proxy inverso esistente che è stato distribuito intenzionalmente da un'organizzazione o quando gli hacker riescono a convertire un server Internet esistente in un server proxy inverso. I sistemi compromessi o convertiti consentono agli aggressori esterni di specificare dove desiderano inoltrare i loro attacchi, consentendo loro l'accesso alle reti e ai sistemi interni.
Le applicazioni sviluppate per l'uso interno di un'azienda non sono in genere protette da standard pubblici e non sono necessariamente progettate per resistere a tutti i tentativi di hacking. Quando un'organizzazione consente l'accesso esterno a tali applicazioni interne tramite un proxy inverso, potrebbe aumentare involontariamente la propria superficie di attacco e invitare gli hacker.
Se un proxy inverso non è configurato per filtrare gli attacchi o non riceve aggiornamenti giornalieri per mantenere aggiornato il database delle firme di attacco, una vulnerabilità zero-day può passare attraverso senza filtri, consentendo agli aggressori di ottenere controllo dei sistemi che si trovano dietro il server proxy inverso.
L'utilizzo del proxy inverso di una terza parte (ad esempio, Cloudflare, Imperva) pone l'intera triade di riservatezza, integrità e disponibilità nelle mani della terza parte che gestisce il proxy.
Se un proxy inverso è di fronte a molti domini diversi, la sua interruzione (ad esempio, a causa di una configurazione errata o di un attacco DDoS) potrebbe far crollare tutti i domini di fronte.
I proxy inversi possono anche diventare un singolo punto di errore se non esiste un altro modo per accedere al server back-end.
Vedi anche