X-Forwarded-For ( XFF )는 HTTP 헤더 필드 영어 ) ​​의 하나. HTTP 프록시 서버 또는 부하 분산 장치 (로드 밸런서)를 통해 웹 서버 에 연결하는 클라이언트의 소스 IP 주소 를 특정하기위한 사실상의 표준 이다. 이 헤더는 Squid 캐싱 프록시 서버의 개발자에 의해 시작 도입 된 것이지만, RFC 에 표준 "요청 필드"( request field 연결 요청에 헤더 필드)가 아니다. 그러나 IETF 의 네트워크 작업 그룹 (Network Working Group)은 2011 년 10 월부터 동종의 HTTP 헤더Forwarded-For 의 표준화 작업을 시작했다 [1] .

이 의미에서 캐싱 서버 (캐시 서버)는 대체로 대형 ISP 의 이용자가 WWW 에 연결하면 ISP가 사용을 권장하거나 강제로 사용하는 프록시 서버를 말합니다 데이터 캐싱하면 외부 네트워크 대역폭을 줄이는 기능을 가지고있다. 어떤 경우 이러한 프록시 서버는 투명 프록시이며, 이용자는 그것을 이용하고있는 것을 깨닫지 않을지도 모른다.

XFF 나 다른 유사한 기술을 이용하지 않으면 프록시를 통해 모든 연결은 프록시 서버의 소스 IP 주소만을 드러낸다.더 나아가 프록시 서버를 사실상 익명 서비스 영어 버전 ) 로 바꿔 버리면, 따라서 원본 IP 주소를 사용할 수 없으며 그 경우에 비해 악성 액세스를 감지하고 막는 것은 매우 어려워 ( 공개 프록시 ). XFF의 이용은 원본 호스트의 IP 주소를 정직하게보고하는 프록시 서버의 존재를 가정하고있다. 즉 이러한 이유로 XFF를 효과적으로 이용하기 위해서는 프록시 신뢰할 수있는 정보가 필수적이다. 예를 들어, 신뢰할 수있는 사람이 관리하는 서버가 목록 화되어있는 화이트리스트에 해당 프록시 서버가 실려 있는지를 검색하는 등 정보를 얻을 필요가있다.

목차

  [ 숨기기 ] 

포맷 편집 ]

이 필드의 일반적인 형식은 다음과 같다.

X-Forwarded-For : client1, proxy1, proxy2

여기서 값 (변수)는 쉼표와 공백으로 구분 된 IP 주소 목록이다. 콜론과 공간의 다음에 오는 가장 왼쪽 열에있는 값은 최 하류에 위치하는 클라이언트의 IP 주소, 계속 연결 요청을 전송하는 각각 연속 프록시 연결 요청을 보내는 IP 주소를 추가 간다. 이 예에서는 연결 요청 proxy1, proxy2을 통과하고 마지막에 연결 요청을 원격 주소로 나온다 proxy3에 전해진다.

X-Forwarded-For 필드를でち上げる은 간단해서 [2] 주어진 정보는 신중하게 취급해야한다. 마지막 IP 주소는 항상 마지막 프록시에 연결하는 IP 주소이고, 즉이 정보 소스가 가장 신뢰할 수있는 것을 의미한다.

포워드 프록시 또는 리버스 프록시 를 사용하는 시나리오에서는 X-Forwarded-For 데이터가 이용 가능하다.

클라이언트가 포워드 프록시를 사용하는 시나리오의 경우 연결된 네트워크 관리자는 클라이언트 내부 네트워크의 프록시 연결 고리를 통해 연결하는 클라이언트의 실체 IP 주소를 추적 할 수 있으며, 게이트웨이 기기에서 그 IP 주소가 기록된다. 보안적인 이유에서 인터넷에 연결 요청을 전송하기 전에 관리하는 게이트웨이 장비는 모든 X-Forwarded-For를 날카롭게한다. 또한 X-Forwarded-For 정보가 관리하는 네트워크 내에서 모든 생성 된 경우이 시나리오에서는 X-Forwarded-For 정보를 신뢰할 수 있도록해야한다.

관리 네트워크가 리버스 프록시를 사용하는 시나리오의 경우에도 관리 웹 서버가 인터넷에서 경로 정보가없는 경우에도, - 예를 들어 웹 서버가 OSI 참조 모델 7 층 에 위치한 프록시 장비 뒤에 숨어있는 경우에도 웹 서버 관리자는 웹 서버에 인터넷 연결 클라이언트의 실체 IP 주소를 추적 할 수있다.또한 인터넷에서 사기 정보를 수신 할 수있는 경우이 시나리오에서는 모든 X-Forwarded-For 정보는 믿을만한 것이 아니다 . X-Forwarded-For 필드에 통지 된 프록시 IP 주소를 신뢰할 수 있는지 확인하기 위해斯様견실 IP 주소 목록을 이용해야한다.

프록시 연결 고리의 말단에있는 IP 주소는 X-Forwarded-For 필드에 포함되어 있지 않기 때문에, X-Forwarded-For 필드의 로그 를 그냥 얻을 항상 충분하다고는 할 수 없다. 그 정보는 사실은 IP 헤더에 포함되어있다. 철저히하기 위해서는, 웹 서버는 연결 요청 IP 주소와 X-Forwarded-For 필드 정보의 쌍방 을 기록해야한다.

각종 제품의 지원 상황 편집 ]

프록시 서버 및 캐시 엔진 편집 ]

X-Forwarded-For 필드는 많은 프록시 서버 나 캐시 엔진에서 지원되며, Apache 등의 웹 서버와 함께 할 수있는 것도 포함된다. 예를 들면,

등이있다.

X-Forwarded-For 필드를 기록하는 방법은 Apache HTTP Server를 비롯한 많은 웹 서버에서 지원되고있다. Microsoft IIS 6.0과 7.0 "Winfrasoft X-Forwarded-For for IIS"이라는 타사 의 ISAPI 필터가이 기능을 실현하고있다. IIS 7.0은 또한 "HTTP Module"이라는 타사 필터를 사용할 수있는 [17]

로드 밸런서 편집 ]

  • "Zeus Traffic Manager"와 "Zeus Load Balancer"는 X-Forwarded-For 필드를 지원하고있다.
  • Radware의로드 밸런서는 one-armed 영어 버전 ) [주석 1] 과 multi-armed 설정 용 X-Forwarded-For를 지원하고있다.
  • 시트릭스 시스템즈 의 "NetScaler"은 클라이언트의 IP 주소를 클라이언트의 연결 요청에 삽입하기 위해 X-Forwarded-For를 비롯한 사용자 정의 필드를 지원하는 [18] .
  • "Cisco Ace Load Balancing Modules"는 원본 네트워크 주소 변환 ( "source NAT"SNAT)를 실행하기 위해로드 밸런서를 구성 할 때나,로드 밸런서의 one-armed 설정을 활성화 한 경우이 필드를 삽입 가능하며, 보통 충분하지만, 한편 클라이언트 소스 IP 주소에 대한 실체 서버를 사용할 수있는 구조를이 제품을 제공한다. 제품 설명서에는 "x-forward"라고 설명하고 있지만, 이것은 X-Forwarded-For 대안이다 추정된다 [19] .
  • CAI Networks의로드 밸런서는 one-armed single network 설정을위한 X-Forwarded-For를 지원하고있다.
  • F5 네트웍스의로드 밸런서는 one-armed와 multi-armed 설정을위한 X-Forwarded-For를 지원하는 [20] .
  • jetNEXUS로드 밸런서는 one-armed와 multi-armed 설정을위한 X-Forwarded-For를 지원하고있다.
  • KEMP Technologies 영어 ) ​​"LoadMaster"는 one-armed와 multi-armed 설정 모두에서 비 투명 부하 분산 처리를위한 X-Forwarded-For를 지원하는 [21].
  • Coyote Point Systems 영어 ) ​​"Equalizer"는 one-armed와 multi-armed 설정 모두에 부하 분산 처리를위한 X-Forwarded-For 필드를 지원하는 [22] .
  • HAProxy는 one-armed와 multi-armed 설정 모두에서 비 투명 또는 투명 부하 분산 처리를위한 X-Forwarded-For를 지원하고있다.
  • OpenBSD "relays"이 필드를 삽입하거나 변경할 수있다 [23] .
  • Amazon 's Elastic Load Balancing service 는 IPv4, IPv6 모두에서이 필드를 지원하는 [24] .
  • "LBL LoadBalancer"는 one-armed와 multi-armed 설정을위한 X-Forwarded-For를 지원하고있다.

웹 서버 로그에 대한 X-Forwarded-For 편집 ]

많은 웹 서버 로그 파일에 X-Forwarded-For 필드에있는 IP 주소를 기록하도록 설정할 수있다. Apache HTTP Server는이 표준 기능으로 구현되어 있으며, 단순히 설정을 변경하여 기록하게된다 [11] [25] [주석 2] [주석 3] . 그러나 Microsoft IIS는 서드 파티 애플리케이션이 필요하다 [주석 4] . IIS7 용은 IIS.net 웹 사이트에서뿐만 아니라 IIS 로그에 X-Forwarded-For 값을 쓸 자유 IIS 모듈을 가져 가능하다 [26] .

각주 편집 ]

도움말 ]

주석 편집 ]

  1. VLAN 간의 라우팅 에 사용되는 라우터의 설정.
  2. ^ 특히, X-Forwarded-For (비 표준이라고해도) HTTP 헤더 필드이기 때문에, 설정 파일 ( / etc/apache2/apache2.conf 등) LogFormat 지시어로
    LogFormat "% {X-Forwarded-For} i % l % u % t \"% r \ "%> s % b"
    
    

    등으로 기술하고 httpd 데몬 을 다시 시작하면 이후 로그의 각 줄 맨 왼쪽에 X-Forwarded-For 필드의 내용이 기록된다. 또한 Apache는 HTTP 헤더 필드를 환경 변수로 이용 가능하기 때문에 SetEnvIf 지시어를 이용하여 X-Forwarded-For와 소스 IP 주소를 사용한 간편한 액세스 제어도 가능하다.

  3. ^ IHS도 마찬가지. 부하 분산 장치 및 Proxy가 부여하는 "X-Forwarded-For"헤더 정보를 IHS 액세스 기록하는 방법 (NTWK-09-036) "
  4. Winfrasoft X-Forwarded-For for IIS 는 IIS에 X-Forwarded-For IP 지원을 추가하는 IIS 타사 플러그인이다. 이를 이용하면 IIS의 W3C Extended Log File 의 "c-ip"(client-ip) 로그 필드에 XFF 정보를 추가 할 수있다.

출처 편집 ]

  1. Forwarded HTTP Extension " IETF ( 2011 년 10 월 5 일 ). 2011 년 11 월 8 일 보기.
  2. ^ XFF를 가장 Mozilla Firefox 용 확장 기능 이 존재한다. X-Forwarded-ForSpoofer " Mozilla Foundation . addons.mozilla.org. 2011 년 7 월 8 일 보기.
  3. Squid configuration directive forwarded_for
  4. SquidFaq / ConfiguringSquid
  5. mod_proxy
  6. 리버스 프록시로 IHS 구성
  7. Pound proxy . "Request Logging"을 참조.
  8. HAProxy Configuration Manual
  9. ^ 로깅 관련 Varnish FAQ .
  10. IronPort Web Security Appliances
  11. b Using "X-Forwarded-For"in Apache or PHP
  12. Bluecoat Knowledge Base Article 2996
  13. Cisco Cache Engine User Guide, Version 2.1.0 - Appendix A : Command Reference - Global Configuration Commands - "http"
  14. Tuning Your Web Cache - NetApp NetCache C720
  15. X-Forwarded-For for TMG, ISA Server and IIS
  16. X-Forwarded-For free web filter for TMG2010
  17. X-Forwarded-For HTTP Module For IIS7, Source Included!
  18. Citrix NetScaler Traffic Management Guide - Release 9.1
  19. Cisco ACE with Source NAT and Client IP Header
  20. Using the X-Forwarded-For HTTP header field to preserve the original client IP address for traffic translated by a SNAT
  21. LoadMaster Product Manual . p.129
  22. Equalizer User Guide . pp.119, 136
  23. relayd.conf manual page
  24. Using IPv6 with Elastic Load Balancing
  25. Extended X-Forwarded-For Logging with Apache "www.gadgettrail.com ( 2005 년 1 월 11 일 ). 2011 년 7 월 8 일 보기.
  26. Client-ip not logged on application server when using ARR

관련 항목 편집 ]

외부 링크 편집 ]


출처 - wiki


'Web > Common' 카테고리의 다른 글

screen(display) resolution  (0) 2012.11.20
Bootstrap 소개  (0) 2012.11.04
움직이는 GIF 파일 배경 투명하게  (0) 2012.07.22
http - referer 헤더 속성  (2) 2012.06.28
gimp - 이미지 합성하기  (0) 2012.06.27
Posted by linuxism
,