XFF

С Википедије, слободне енциклопедије

XFF (engl. X-Forwarded-For) polje HTTP zaglavlja je de fakto standard za identifikaciju izvorišne IP adrese klijenta koji se povezuje na veb server kroz HTTP proxy ili raspoređivač opterećenja. Ovo polje HTTP zaglavlja uvedeno je od strane programera Squid proksi servera za keširanje. Standard za standardizaciju Prosleđeno (engl. Forwarded) zaglavlja je predložen u okviru Internet inženjerske operativne grupe.[1]

X-Forwarded-For je takođe polje zaglavlja imejl poruke koje pokazuje da je poruka prosleđena od strane jednog ili više naloga (verovatno automatski).[2]

U ovom kontekstu, najčešće su u pitanju serveri za keširanje velikih internet servis provajdera koji ili podstiču ili primoravaju svoje korisnike da koriste proksi servere za pristup svetskoj mreži, nešto što se često radi kako bi se putem keširanja smanjio spoljni protok provajdera. U nekim slučajevima ovi proksi serveri su transparentni, pa korisnik ne mora ni biti svestan da ih koristi.

Bez upotrebe XFF polja ili neke druge slične tehnike, svaka konekcija kroz proksi bi otkrivala samo izvorišnu IP adresu proksi servera, time pretvarajući proksi server u servis za anonimizaciju. To bi učinilo otkrivajne i sprečavanje zlonamernih pristupa značajno težim nego u slučaju da je izvorišna IP adresa bila dostupna. Korisnost XFF-a zavisi od toga da li će proksi server tačno prijaviti IP adresu izvorišnog korisnika. Iz ovog razloga efektivna upotreba XFF-a zahteva poznavanje koji proksi serveri su pouzdani, tako što će ih, na primer, potražiti na beloj listi servera čiji se administratori smatraju pouzdanim.

Format polja[уреди | уреди извор]

Uopšteni format polja je:

X-Forwarded-For: klijent, proksi1, proksi2[3]

pri čemu je sadržaj lista IP adresa odvojenih zapetom i razmakom. Prva adresa predstavlja prvobitnog korisnika, zatim svaki sledeći proksi koji prosleđuje zahtev dodaje IP adresu sa koje je primio zahtev. U ovom primeru zahtev je prošao kroz proksi1, proksi2 i zatim proksi3 (koji nije prikazan u zaglavlju). proksi3 se tumači kao adresa sa koje stiže zahtev.

S obzirom da je lako da se XFF polje falsifikuje, dobijene informacije bi trebalo koristiti sa oprezom. Poslednja IP adresa je uvek adresa koja povezuje sa poslednjim proksijem, što je čini najpouzdanijim izvorom informacija. XFF podaci se mogu koristiti pri upotrebi provratnih ili prosleđivačkih proksija.

Samo čuvanje XFF polja nije uvek dovoljno jer IP adresa poslednjeg proksija u nizu nije sadržana u XFF polju, već u samom zaglavlju IP paketa. Radi kompletnosti, veb server bi trebalo da sačuva i izvorišnu IP adresu zahteva i podatke iz XFF polja.

Proksi serveri i alati za keširanje[уреди | уреди извор]

XFF polje je podržano od strane većine proksi servera, uključujući Squid,[4] Apache mod_proxy,[5] Pound,[6] HAProxy,[7][8] Varnish,[9] IronPort Web Security Appliance,[10] AVANU WebMux, Array Networks, Radware's AppDirector, Alteon ADC, ADC-VX, i ADC-VA, F5 Big-IP,[11] Blue Coat ProxySG,[12] Cisco Cache Engine, McAfee Web Gateway, Phion Airlock, Finjan's Vital Security, NetApp NetCache, jetNEXUS, Crescendo Networks' Maestro, Web Adjuster, Websense Web Security Gateway[13] i Microsoft Forefront Threat Management Gateway 2010 (TMG).[14]

Mnogi veb serveri, uključujući Apache, podržavaju čuvanje podataka iz XFF polja. Majkrosoftov IIS može za filtriranje da koristi i HTTP modul.[15][16][17]

Zscaler će maskirati XFF zaglavlje ZFF-om (engl. Z-Forwarded-For) pre nego što doda svoje XFF zaglavlje, tako identifikujući IP adresu izvornog korisnika. Na taj način se sprečava curenje IP adresa iz Zscaler Enforcement Node-ova i trećim provajderima sadržaja se dostavlja stvarna IP adresa korisnika.

Raspoređivači opterećenja[уреди | уреди извор]

Barracuda Load Balancer kompanije Barracuda Networks podržava da zaglavlja definisana od strane korisnika kao što je XFF umeću IP adrese korisnika  u zahtev korisnika.[18]

NetScaler kompanije Citrix Systems  podržava da zaglavlja definisana od strane korisnika kao što je XFF umeću IP adrese korisnika u zahtev korisnika.[19]

Cisco ACE Load Balancing moduli takođe mogu da umetno ovo polje, što je uglavnom implementirano kada je raspoređivač opterećenja podešen da vrši izvorišno NAT-ovanje, kako bi mu se omogućilo da funkcioniše u jednoručnoj konfiguraciji, dok za to vreme omogućava pravim serverima da obrađuju prave IP adrese korisnika.[20]

Raspoređivači opterećenja kompanije F5 Networks podržavaju XFF u jednoručnim i višeručnim konfiguracijama.[21] Big-IP takođe može biti konfigurisan da delegira poverenje proksijima koji su udaljeniji od jednog skoka i da prihvata XFF zaglavlja od drugih izvora.[22]

LoadMaster kompanije KEMP Technologies podržava XFF za netransparentno raspoređivanje opterećenja i u jednoručnim i u višeručnim konfiguracijama[23]

Equalizer kompanije Coyote Point Systems Equalizer podržava XFF za raspoređivanje opterećenja i u jednoručnim i u višeručnim konfiguracijama.[24]

OpenBSD releji mogu da umetnu ili da menjaju ovo polje.[25]

Amazon's Elastic Load Balancing servis podržava ovo polje.

LBL LoadBalancer podržava XFF u jednoručnim i u višeručnim konfiguracijama.

AppDirector ADC, Alteon ADC, ADC-VX, i ADC-VA kompanije Radware podržavaju umetanje XFF-a u zaglavlja sobraćaja koji je izvorišno NAT-ovan ka serverima i omogućava trajnost saobraćaja zasnovanu na XFF zaglavlju za saobraćaj distribuiran od konekcija iza proksija ka većem broju servera, sve vreme čuvajući trajnost veze ka serverima.

Alternative i varijacije[уреди | уреди извор]

HAProxy je uveo alternativu XFF-u, PROXY protokol, koji je efikasniji pri obradi.[26] Može da se koristi na većem broju transportnih protokola i ne zahteva inspekciju protokola višeg sloja, pa nije ograničen na HTTP.

Zaglavlje "Prosleđeno"[уреди | уреди извор]

U 2014. je u dokumentu RFC 7239 standardizovano novo Prosleđeno (engl. Forwarded) zaglavlje sa sličnom namenom kao XFF, ali sa više mogućnosti.[27] Primer sintakse zaglavlja Prosleđeno:

Forwarded: for=192.0.2.60; proto=http; by=203.0.113.43

Vidi još[уреди | уреди извор]

Reference[уреди | уреди извор]

  1. ^ Forwarded HTTP Extension - Proposed Standard.
  2. ^ „Extended Mail Header Parser - Readability in your mail headers[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 20. 09. 2014. г. Приступљено 04. 06. 2015.  Сукоб URL—викивеза (помоћ)
  3. ^ squid : follow_x_forwarded_for configuration directive
  4. ^ SquidFaq/ConfiguringSquid – Squid Web Proxy Wiki.
  5. ^ mod_proxy – Apache HTTP Server.
  6. ^ Pound proxy Архивирано на сајту Wayback Machine (7. јун 2015), under "Request Logging"
  7. ^ HAProxy Configuration Manual. haproxy.1wt.eu.
  8. ^ haproxy.1wt.eu. haproxy.1wt.eu.
  9. ^ Varnish FAQ Архивирано на сајту Wayback Machine (29. март 2008) regarding logging
  10. ^ IronPort Web Security Appliances.
  11. ^ „Using "X-Forwarded-For" in Apache or PHP”. devcentral.f5.com. Архивирано из оригинала 02. 07. 2008. г. Приступљено 04. 06. 2015. 
  12. ^ Bluecoat Knowledge Base Article 000010319 Архивирано на сајту Wayback Machine (15. фебруар 2015).
  13. ^ „Using "X-Forwarded-For" in Websense WSG”. www.websense.com. 
  14. ^ Winfrasoft XFF for TMG. www.winfrasoft.com
  15. ^ Winfrasoft XFF for IIS. www.winfrasoft.com
  16. ^ IIS Advanced Logging. www.iis.net (2009-08-10).
  17. ^ X-Forwarded-For HTTP Module For IIS7, Source Included! by Joe Pruitt Архивирано на сајту Wayback Machine (6. јануар 2012) devcentral.f5.com. (2013-07-05).
  18. ^ Barracuda Load Balancer - Administrator Guide - Release 4.2 Архивирано на сајту Wayback Machine (30. јануар 2014).
  19. ^ Citrix NetScaler Traffic Management Guide – Release 9.1 Архивирано 2013-01-19 на сајту Archive.today.
  20. ^ Cisco ACE with Source NAT and Client IP Header.
  21. ^ Using the X-Forwarded-For HTTP header field to preserve the original client IP address for traffic translated by a SNAT.
  22. ^ Overview of the Trusted X-Forwarded-For header.
  23. ^ LoadMaster Product Manual Архивирано на сајту Wayback Machine (23. јануар 2010).
  24. ^ Equalizer User Guide.
  25. ^ relayd.conf manual page[мртва веза].
  26. ^ Willy Tarreau: The PROXY protocol. haproxy.1wt.eu.
  27. ^ „RFC 7239 - Forwarded HTTP Extension”. tools.ietf.org. Приступљено 8. 5. 2015. 

Spoljašnje veze[уреди | уреди извор]