Cloud/Azure

[Azure] Azure Application Gateway에서 X-Forwarded-For 설정

pepe_ 2024. 7. 3. 13:54

1. X-Forwarded-For 란?

  • 주로 프록시 서버나 로드 밸런서가 원본 클라이언트의 IP 주소를 서버에 전달할 때 사용하는 HTTP 헤더 중 하나로, 클라이언트의 IP 주소를 식별하는 데 사용된다.
  • 클라이언트-서버의 중간에 프록시 서버나 로드 밸런서가 있을 경우 서버는 클라이언트의 IP 대신 프록시 서버나 로드 밸런서의 IP 주소를 보게되어 클라이언트의 실제 IP 주소를 알기 어렵다. 이때 X-Forwarded-For 헤더를 사용하여 클라이언트의 실제 IP 주소를 확인할 수 있다.
  • 클라이언트의 IP 주소 등과 같은 민감한 개인정보를 노출 시킴으로 이 헤더를 사용할 때에는 사용자의 프라이버시를 주의해야한다.
  • 웹 서버는 X-Forwarded-For 헤더 값을 사용하여 클라이언트의 실제 IP 주소를 얻을 수 있다. 예를 들어, X-Forwarded-For 헤더는 다음과 같이 표시될 수 있다.
    • X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip

2. Azure Application Gateway에서 X-Forwarded-For 설정

  • Azure Application Gateway는 클라이언트 요청을 백엔드로 전달하기 전에 모든 요청에 X-Forwarded-For 헤더를 삽입한다. 이 헤더는 쉼표로 구분된 IP:port 목록이다.
  • 경우에 따라서는 백엔드 서버에 IP 주소만 필요한 시나리오가 있 Azure Application Gateway의 Rewrite 기능을 사용하여 X-Forwarded-For 헤더에서 Port 정보를 제거할 수 있다.

2-1. 사전 준비

  • Windows VM에 IIS 역할이 설치되어 있어야 한다.
  • Application Gateway의 Frontend, Backend, Rule이 구성되어 있어야 한다.

2-2. Windows VM에서 X-Forwared-For 로깅 설정

  • Windows Server 2019에 IIS를 설치하는 경우, 기본적으로 IIS 로깅에서 X-Forwarded-For 는 기록되지 않는다.
  • IIS 로깅 설정에서 X-Forwarded-For가 기록되도록 설정한다.

1) Windows Server에서 IIS Manager 접속

2) Logging 클릭

3) Select Fields 선택

4) Add Fields 선택

  • Field Name : X-Forwarded-For
  • Source Type : Request Header
  •  Source : X-Forwarded-For

2-3. 결과 확인

  • IIS 로그 파일 이름에 _x 라는 접미사가 붙은 파일이 새로 생성된다.
  • 로그의 X-Forwarded-For 필드에 IP 주소와 Port 가 기록된다.

3. Application Gateway - Rewrite HTTP Header 설정

1) Application Gateway - 재작성 - 재작성 집합

  • 이름 : X-Fowarded-For
  • 라우팅 룰 선택

2) [다시 쓰기 규칙 추가] 클릭 후 [이 동작을 구성하려면 클릭] 클릭

3) 재작성 집합 만들기

  • 재작성 규칙 이름: X-Forwarded-Fo
  • 규칙 시퀀스: 100
  • 공용 헤더: X-Forwarded-For
  • 헤더 값: {var_add_x_forwarded_for_proxy}

4) 설정 완료

5) 결과 확인

  • IIS 로그에서 IP 주소만 기록된다.

 


 

참고

1. Application Gateway를 사용하여 HTTP 헤더 및 URL 다시 쓰기: https://learn.microsoft.com/ko-kr/azure/application-gateway/rewrite-http-headers-url