Tutto il traffico arriva al mio server IIS attraverso un proxy. Non riesco a bloccare o white list gli indirizzi IP perché tutto il traffico proviene dall'indirizzo IP del proxy.
Posso usare l'intestazione X-Forwarded-For con IIS?
Vorrei procedere con cautela usando un'intestazione HTTP per il filtro IP, considerando che possono essere controllati dal client a meno che il tuo server web non tenga conto di ciò quando inoltra la richiesta.
Cosa succede se non sono autorizzato a inviare X-Forwarded-For nelle intestazioni? Il tuo server web aggiungerà un extra X-Forwarded-For? Lo aggiungerà al di sotto o al di sopra del mio? Quale IIS utilizzerà per convalidare?
Queste sono domande a cui è necessario essere in grado di rispondere prima di implementare qualsiasi fiducia nel valore dell'intestazione.
Modifica : non conosco un'alternativa migliore, ma se stai cercando quella a cui ti rivolgi, dovresti essere in grado di rispondere prima alle domande. Non sto parlando di passare attraverso più proxy, ma cosa succede se metto la mia intestazione X-Forwarder-For in fondo alla mia richiesta? Il tuo proxy aggiungerà un altro ancora? Ci saranno due X-Forwarder-For? Quale sarà il server web?
ModSecurity ha questa capacità poiché ha piena visibilità della transazione. Significa che può controllare le intestazioni e il carico utile sia nella richiesta che nella risposta. Basta creare una regola per questa condizione. C'è un avvertimento, anche se ModSecurity è stato scritto da Microsoft e Trustwave è considerato il supporto della comunità. Se si tratta di un'applicazione di produzione, non sarà possibile chiamare il supporto Microsoft per assistenza. Con questo, le mailing list per ModSecurity sono grandiose e gli ingegneri di Trustwave sono molto utili. Se hai bisogno di supporto a pagamento per le regole, Trustwave ha un servizio che offre questo e un set di regole commerciali (simile al modello di snort).
Altri web application firewall (WAF) funzionerebbero ma ModSecurity è gratuito.
Questa domanda su Stack Overflow richiede nominalmente la stessa cosa.
Puoi utilizzare il modulo Riscrivi URL per filtrare aggiungendo una condizione attorno alla variabile {HTTP_X_FORWARDED_FOR}
come descritto in questa risposta.
In alternativa, l'altra risposta descrive un metodo con cui puoi impostare l'indirizzo IP di nuovo -proxy value con una regola di riscrittura globale. (Personalmente penso che, se lo fai, potresti anche voler aggiungere un'intestazione X-Forwarded-By
.) Quindi puoi scrivere regole normali di qualunque tipo ti piaccia fare il filtro.
In generale, tuttavia, sono d'accordo con commento di vcsjones sulla tua domanda in cui lui / lei suggerisce di fare questo filtraggio al proxy, se questa è un'opzione disponibile.
Leggi altre domande sui tag http network web-application