[Web] X-Forwarded-For & X-Forwarded-By
[Web] X-Forwarded-For & X-Forwarded-By
X-Forwarded-For
L7 로드밸런서 또는 L4 로드밸런서를 거쳐 들어온 트래픽은 웹 서버에서 장비 IP 또는 Proxy Server의 IP로 보이기도 한다.
이를 추적하기 위해 X-Forwarded-For Header를 사용하면 Client의 IP를 유지할 수 있다.
일반적인 X-Forwarded-For
1
X-Forwarded-For: client1, proxy1, proxy2
원래 IP주소, 거쳐온 proxy1, proxy2의 주소가 담겨있다.
이를 통해 백엔드 서버는 이 Header를 이용해 클라이언트의 실제 IP 주소를 받아 AP적 요구사항을 달성할 수 있다.(Sticky Session…)
이는 Apache나 Nginx 같은 Web서버 단에서 설정을 해야한다.
X-Forwarded-By
X-Forwarded-By는 Client의 IP를 제외한 Proxy의 IP나 서버 정보를 가지고 있다. 또한 플랫폼 및 프레임워크의 사용과 정보를 알려주는 유무를 가지는데 이는 개발적으로 유용한 정보를 제공하지만 보안상 여러 취약점을 유발할 수 있다.
Server의 정보를 알려주는 예시
1
X-Powered-By: JSP/3.1
위 정보는 해당 서버가 JavaServer Pages를 사용하고 있다는 점과 3.1 버전을 사용하고 있다는걸 제공한다. 이를 통해 공격자는 특정 프레임워크나 기술 및 특정 버전에 대한 취약점을 악용할 수 있다.
이를 제거하기 위해서는 was 설정 단에서 이러한 Header를 노출하지 않도록 조치해야한다.
Wildfly에서 X-Forwarded-By 헤더 정보 숨기기
1
2
3
4
5
6
7
8
<subsystem xmlns="urn:jboss:domain:undertow:14.0"...>
... 중략
<servlet-container name="default" default-encoding="utf-8" use-listener-encoding="true">
...
<jsp-config x-powered-by="false"></jsp-config> <!-- x-powered-by disable -->
</servlet-container>
</subsystem>
X-Forwarded-By는 표준화된 방식이 아니기에 사용이 지양되는 편
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.