Quali sono le opzioni per garantire che un client che si connette a un server sia davvero quello che penso sia?

0

Ho un server proxy che parla con un sacco di servizi e voglio avere un modo per dimostrare ai server dietro al proxy che stanno effettivamente ricevendo una richiesta dal server proxy e non da qualcos'altro.

Ho pensato di lasciare che i clienti si registrassero dinamicamente con una coppia chiave / segreta e firmare richieste con questa coppia, ma potrebbero esserci altre soluzioni là fuori che non sto considerando.

Ho il pieno controllo su client e server ma preferisco non doverlo fare in rete ma a livello di applicazione. Queste app sono specificamente integrate in go.

    
posta Maurício Linhares 18.05.2017 - 18:31
fonte

1 risposta

1

C'è una contraddizione tra il titolo e il corpo della tua domanda. Dal momento che il titolo non ha senso (un client che si connette a un cliente?), Presumo che la tua domanda sia quella del tuo corpo, enfasi mia:

I want to have a way to prove to servers behind the proxy they are actually receiving a request from the proxy server and not from something else.

Se sia il server proxy che i server fanno parte della rete, i server delle app possono semplicemente abbinare l'indirizzo IP della richiesta con l'indirizzo IP del server proxy. Naturalmente, dovresti essere sicuro di non avere un DHCP canaglia sulla tua rete e che il tuo server proxy abbia un indirizzo IP statico che nessun'altra macchina potrebbe avere se il proxy non funziona. Se non sei sicuro della configurazione di rete, potrebbe essere utile ServerFault .

Se il proxy è esterno alla rete, ma è possibile controllarne la configurazione, è possibile chiedere al server di iniettare la chiave segreta nelle intestazioni HTTP della richiesta. Ovviamente, l'HTTPS tra il proxy e il server è obbligatorio per prevenire la perdita della chiave segreta.

Seguendo i commenti, sembra che, in effetti, l'obiettivo sia essere in grado di identificare se la richiesta è stata inviata direttamente o attraverso un proxy, qualsiasi proxy. Immagino che l'OP voglia buttare via gli utenti che accedono al sito attraverso un server proxy (a proposito, se questo è il vero scopo della domanda, l'obiettivo è esso stesso oggetto di discussione).

In questo caso, la tecnica che potrebbe funzionare la maggior parte del tempo consiste nel controllare la presenza di Intestazioni HTTP che vengono generalmente aggiunte dai server proxy . Va notato che alcuni delegati potrebbero decidere di non aggiungere alcuna intestazione; allo stesso modo, nulla impedisce al richiedente originale di aggiungere quelle intestazioni senza essere un proxy.

Un altro approccio sarebbe quello di indicizzare continuamente gli indirizzi IP dei server proxy usati dai cattivi (se questo è il problema che si sta tentando di risolvere). Il vantaggio è che gli utenti legittimi, ad esempio quelli che si trovano dietro un firewall aziendale, non sono interessati. Lo svantaggio è che è relativamente facile per un utente malintenzionato scambiare un server proxy quando quello che usa è bloccato.

    
risposta data 18.05.2017 - 19:58
fonte

Leggi altre domande sui tag