Vantaggi dell'identificazione dei client in base a "X-Forwarded-For" o intestazione HTTP simile oltre all'IP del client

14

L'intestazione X-Forwarded-For viene utilizzata da alcuni proxy HTTP per identificare l'indirizzo IP di il cliente. La pagina wiki (linkata sopra) menziona che gli ISP potrebbero usare anche questa intestazione.

Inoltre ci sono una varietà di intestazioni aggiuntive che possono essere utilizzate per identificare un cliente. Alcuni esempi includono:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR può essere un elenco di IP delimitati da virgole
  • HTTP_X_FORWARDED
  • HTTP_X_CLUSTER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  1. Can I use any of these headers to for access control, to block or allow access my site?
    e.g. Block in an escalating manner: HTTP_Header_X first then, client IP?

  2. What are the known usages of these headers? e.g. ISPs, proxy software like Squid, etc.

Stavo considerando che alcuni server Web potrebbero alterare dinamicamente la loro risposta in base alla presenza (o alla mancanza) di questa intestazione. Supponiamo che un server abbia bandito gli utenti per indirizzo IP. Dovrebbe bannare un utente in base all'IP ricevuto o a quello specificato in questa intestazione? Ho quindi considerato la possibilità di spoofing di questa intestazione come un modo per aggirare un IP-ban che il server potrebbe aver imposto.

  1. What security concerns may exist around these headers, what is the appropriate way to address it?
    e.g. include that is relevant for logging, etc.
    
posta random65537 07.11.2011 - 15:47
fonte

5 risposte

12

Qualsiasi di queste intestazioni HTTP può essere utilizzato per scopi di controllo dell'accesso, tuttavia non fare affidamento sulla presenza di tali intestazioni o sulla validità dei loro dati.

Il più che vorrei mai usarli è la registrazione. Non ci sono garanzie che nessuna di quelle intestazioni sarà presente, o anche se lo sono, che conterrà dati validi. So che esistono plug-in contraffatti X-Forwarded-For per Firefox e probabilmente anche per altri browser. Ciò rende le informazioni utili solo a livello statistico - trend, analisi dei pattern, ecc., Ci può essere sicuramente un certo valore nel raccogliere e loggare quelle intestazioni. Non fare nulla che si basi su di loro

Qualsiasi tipo di affidamento su intestazioni HTTP per qualsiasi tipo di autenticazione o controllo di accesso dovrebbe essere classificato come comportamento peggiore.

Esistono modi molto migliori per controllare l'accesso e l'autenticazione.

    
risposta data 07.11.2011 - 16:27
fonte
4

Quando gli hacker irrompono nel tuo sito, cercheranno di passare attraverso i proxy per nascondere la loro origine. La maggior parte di questi proxy aggiunge uno di questi header. Registrando queste intestazioni, è più probabile che tu scopra l'origine.

Ad esempio, due anni fa un hacker ha utilizzato aperto i proxy per inviare email rubate dai ricercatori del clima ai siti Web degli scettici. Se quei siti web hanno tracciato quelle intestazioni, potrebbero essere stati in grado di scoprire l'identità dell'hacker.

    
risposta data 08.11.2011 - 03:38
fonte
4

L'intestazione X-Forwarded-For: può essere aggiunta dal client, indipendentemente dal fatto che sia passata attraverso un proxy o meno. Un semplice curl -H "X-Forwarded-For: 127.0.0.1" http://example.com lo raggiungerà.

I proxy possono essere configurati per rimuovere questa intestazione al fine di fornire una maggiore privacy per l'utente finale. Molti proxy pubblicamente disponibili pubblicizzano che lo fanno.

Sebbene tu possa controllare tutti degli indirizzi IP trovati nell'elenco delimitato da virgole e bloccare o consentire l'accesso in base a uno di essi, i due punti sopraindicati indicano che non è difficile per nessun cliente per modificare completamente quelle intestazioni. Il controllo degli accessi non sarebbe affidabile.

Mantenere un elenco di tutti i server proxy anonimi conosciuti è un compito difficile e in ultima analisi inutile.

Otterrai qualche vantaggio da questo? Forse. Puoi frustrare un aggressore per un breve periodo finché non trova un proxy anonimo o contraffa la propria intestazione. Questa frustrazione potrebbe essere sufficiente per farlo passare a un obiettivo più facile.

Ci sono aspetti negativi? Un'intestazione spoofed potrebbe essere piuttosto lunga e potrebbe essere malformata e non contenere affatto indirizzi IP. Potrebbero esserci anche più copie della stessa intestazione. Aggiungere il codice per fare tutto questo controllo potrebbe introdurre nuovi bug che potrebbero contenere difetti di sicurezza. Potrebbe anche causare un overhead significativo su intestazioni malformate, lunghe o multiple.

Nota a margine: Se usi Apache, mod_rpaf prenderà l'ultimo indirizzo IP da una delle diverse intestazioni e sostituirà la variabile REMOTE_HOST interna con essa. Questo è utile soprattutto se i tuoi server web sono dietro un proxy inverso.

Ciò significa che se si utilizza mod_rpaf, il controllo dell'accesso all'interno di Apache tramite l'indirizzo IP non è affidabile e può essere facilmente aggirato.

Non vi è alcuna garanzia che l'ultimo indirizzo IP nell'elenco sia quello corretto o in effetti che nessuno di essi sia presente. L'unico valore noto garantito è l'indirizzo IP a cui sei effettivamente connesso.

    
risposta data 09.11.2011 - 13:34
fonte
2

Per lo più sono d'accordo con Ladadada - si tratta di dati forniti dall'utente, sebbene non sia garantito che siano accurati, ma l'indirizzo del cliente è molto più difficile da spoofing.

Tuttavia, anche dove puoi essere ragionevolmente sicuro dell'indirizzo del punto finale, l'autenticazione di una richiesta basata sul suo indirizzo IP è solo una cattiva idea.

Can I use any of these headers to for access control, to block or allow access my site?

Sicuramente non dovrebbe essere un criterio per consentire l'accesso - ma ciò non significa che non sia un criterio valido per bloccare l'accesso . Dopotutto, è improbabile che qualcuno che ha intenzione di abusare del tuo sito agisca in modo tale da impedirne l'accesso al tuo sito.

In effetti, se vuoi essere in grado di rispondere in modo efficace agli attacchi denial of service, allora il sistema di feedback basato sugli attributi degli attacchi sospetti è la strada da percorrere - questo è ciò che fail2ban fa.

    
risposta data 09.11.2011 - 18:51
fonte
0

Il valore del campo dell'intestazione X-Forwarded-For può essere impostato dal lato del cliente - questo può anche essere definito come X-Forwarded-Per lo spoofing. Tuttavia, quando la richiesta Web viene effettuata tramite un server proxy (un server proxy non elitario con un livello di anonimato basso), il server proxy modifica il campo X-Forwarded-For aggiungendo l'indirizzo IP del client (utente). Ciò comporterà 2 indirizzi IP separati da virgola nel campo X-Forwarded-For. Quindi, se necessario, il server Web può rilevare l'utilizzo di un server proxy e molto probabilmente rilevare lo spoofing. Il seguente articolo fornisce una spiegazione di ciò con un esempio di codice Python X-Forwarded-For Spoofing .

    
risposta data 14.01.2014 - 18:38
fonte

Leggi altre domande sui tag