목차
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
'Cloud > Azure' 카테고리의 다른 글
[Azure] Landing Zone 및 Azure Landing Zone 개념 (0) | 2024.07.02 |
---|---|
[Azure] Azure Virtual WAN 개념 및 테스트 (32) | 2024.05.16 |
[Azure] AKS Managed Identity 및 Service Principal (0) | 2024.04.08 |
[Azure] Azure Private Endpoint 개념 및 쿼리 프로세스 (1) | 2024.02.13 |
[Network] AWS 및 Azure 간의 Active-Active VPN 구성 (0) | 2024.02.08 |
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
'Cloud > Azure' 카테고리의 다른 글
[Azure] Landing Zone 및 Azure Landing Zone 개념 (0) | 2024.07.02 |
---|---|
[Azure] Azure Virtual WAN 개념 및 테스트 (32) | 2024.05.16 |
[Azure] AKS Managed Identity 및 Service Principal (0) | 2024.04.08 |
[Azure] Azure Private Endpoint 개념 및 쿼리 프로세스 (1) | 2024.02.13 |
[Network] AWS 및 Azure 간의 Active-Active VPN 구성 (0) | 2024.02.08 |