Study/Network

[Network]Proxy(Forward, Reverse, Transparent)

seomj 2024. 8. 25. 00:29

Proxy Server

클라이언트가 proxy를 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램

대리로 통신을 수행한다. 즉, 가운데서 중계 기능을 한다고 보면 된다.

 

서버에서 사용자의 IP 주소 대신 프록시의 IP를 감지하며, 사용자의 IP 주소를 숨길 수 있다. 

그림 1

Bob은 proxy에 대해서만 알고 Alice에게 직접 연결할 수 없다. 

Bob은 proxy를 통해 통신해야 하고, Alice는 자신의 개인정보를 보호할 수 있다.

 

이러한 프록시는 많은 수의 서버가 있는 네트워크 구조에서 트래픽 관리자가 될 수 있다.

 

목적

앞서 살펴본 듯이 보안의 이점을 가지며, 이 외에도 여러 이점이 있다.

  • 보안
    • IP 주소 숨기기
    • 방화벽 역할
    • SSL/TLS 종료
    • 필터링
  • 성능 향상
    • 캐싱
    • 부하 분산
  • 네트워크 관리
    • 모니터링 및 로깅
    • 접근 제어

 

Proxy 서버를 사용하면 클라이언트의 실제 IP 주소가 서버에 노출되지 않는다. Proxy가 클라이언트와 서버 사이에서 불필요하거나 악의적인 트래픽을 차단하는 방화벽 기능을 수행할 수 있다. (Reverse Proxy) SSL/TLS 암호화 연결을 처리하여 서버가 직접 암호화를 처리하지 않도록 하여 보안 뿐만 아니라 성능 개선도 가능하다.

 

Proxy 서버에서 빈번하게 들어오는 동일한 요청에 대해 캐시하여 응답 속도를 향상시킬 수 있다. (Reverse Proxy) 서버로 들어오는 트래픽을 분산시킨다.

 

Proxy 서버에서 네트워크 트래픽을 모니터링하고 기록할 수 있다. (Forward Proxy) 클라이언트의 특정 웹 사이트나 서비스에 대한 접근을 제어할 수 있다. 

 

종류

Full Proxy

사용자로부터 서버로 요청을 보낼 때와 서버에서 사용자로 응답을 보낼 때 모두 중간 장치 역할을 수행한다.

두 개의 별도 연결 경로(사용자와 프록시, 서버와 프록시)를 제공한다. 

 

Half Proxy

사용자와 서버 간에 단일 연결을 만드는 프로세스

사용자와 프록시 혹은 서버와 프록시의 연결을 제공한다.

 

흔히 알고 있는 Forward와 Reverse 프록시는 Half Proxy에 해당한다. 

Forward Proxy

일반적인 프록시의 형태이다.

클라이언트의 요청을 받아 이를 서버나 인터넷으로 전달하며, 응답을 다시 클라이언트에게 반환한다. 

클라이언트를 보호하는 것이 주된 목적이다.

포워드 프록시 기능 설명
IP 주소 숨기기 클라이언트의 IP 주소를 숨겨 익명성을 제공
캐싱 자주 요청되는 데이터를 캐시에 저장하여 빠른 응답 제공
콘텐츠 필터링 특정 웹사이트나 콘텐츠 접근 차단/허용
접근 제어 특정 웹사이트나 서비스에 대한 접근 권한 제어
모니터링 및 로깅 모든 요청과 응답을 기록하여 네트워크 사용 현황 분석

 

Reverse Proxy

서버 측에 위치하며, 클라이언트의 요청을 받아 백엔드 서버로 전달한다.

서버를 보호하는 것이 주된 목적이다.

클라이언트는 실제 서버의 존재를 인식하지 못하고, 프록시를 통해서 요청을 처리한다.

부하 부산, 보안 강화, SSL/TLS 종료, 캐싱을 통한 성능 최적화의 목적으로 사용한다. 

리버스 프록시 기능 설명
로드 밸런싱 트래픽을 여러 서버에 분산
보안 강화 민감한 데이터를 처리하는 기업(금융기관)은 실제 서버의 IP를 숨겨 외부 공격으로부터 서버 보호
콘텐츠 캐싱 자주 요청되는 데이터를 캐시에 저장하여 빠른 응답 제공
SSL/TLS 종료 SSL/TLS 암호화를 처리하여 실제 서버의 부담 감소 

 

그림 2-1

 

Transparent Proxy

클라이언트와 서버 모두 proxy의 존재를 알 수 없다.

클라이언트 요청을 수정하지 않는다.

즉, 클라이언트 IP 주소를 어떤 식으로든 보호하거나 변경하지 않는다.

그림 2-2

Transparent proxy의 경우, 여러 방식으로 설정이 가능하지만 소프트웨어적으로 Gateway 설정이 있다.

클라이언트의 기본 Gateway를 변경해 모든 트래픽이 proxy를 거쳐가도록 설정할 수 있다.

Gateway 서버에서 iptables 설정을 통해서도 가능하다.

하드웨어적으로는 라우터를 거쳐 나가는 패킷이 proxy로 갈 수 있도록 설정하는 방법이 있다.

 

통신 과정

Transparent Proxy

그림 3

그림과 같이 PC, Proxy 서버, 보안 장비, Internet이 있는 구성이라 가정하자.

여기서 보안 장비의 위치에는 모니터링 도구, 분석 도구 등 다른 도구로 대체 가능하다.

 

PC에서 Tistory에 접속하고자 한다.

 

  1. PC에서 패킷 전송
    src ip: <PC ip>
    dst ip: <Tistory ip>
  2. 패킷이 PC가 아닌 Proxy 서버로 전송
    중간에서 Proxy가 패킷을 가로챈다.
    하지만 Transparnet 모드로 동작하기 때문에 IP는 변하지 않는다.
  3. Proxy 설정
    Proxy 설정에 의해 보안 장비로 패킷을 복제할 수 있으며,
    패킷을 검사하고 복호화하는 작업 등 진행 가능하다.
  4. Internet으로 패킷 전송
    필요한 과정을 거친 후 Proxy에서 패킷을 Internet으로 전송한다.
    src ip: <PC ip>
    dst ip: <Tistory IP>

 

Transparent와 Forward의 차이점은?

패킷 IP

Forward의 경우,

pc에서 proxy로 패킷이 전송될 때, dst ip가 proxy server로 설정된다.

proxy에서 internet으로 패킷이 전송될 때는 src ip가 proxy server로 설정된다.

반면에 Transparent의 경우,

어떠한 경우에서든 ip가 변경되지 않는다.

그림 2-2를 참고하길 바란다.

 

설정

Forward Proxy는 클라이언트 컴퓨터에서 proxy 서버를 통하도록 설정이 필요하다.

Transparent Proxy는 클라이언트 컴퓨터에서 설정을 하지 않아도 되며,

클라이언트가 인터넷을 사용하기 위해 반드시 지나가야 하는 Gateway에서 proxy 서버로 트래픽을 넘기도록 설정한다.

참고

 

Reverse Proxy

 

이번엔 Internet에서 Server로 들어오는 상황이라고 가정하자.

pc에서 보낸 패킷이 Internet을 통해 seomj server로 들어온다.

 

  1. Internet에서 proxy로 패킷이 들어온다
    src ip: <PC ip>
    dst ip: <proxy ip>
  2. proxy 설정
    proxy 설정에 맞춰 동작한다
    여기서도 마찬가지로 패킷 복호화, 패킷 복제, 보안 장비로 전송 등 여러 작업이 가능하다.
  3. proxy서버에서 seomj server로 패킷 전송
    src ip: <proxy ip>
    dst ip: <seomj server ip>

 

 

 

참고

https://ko.wikipedia.org/wiki/프록시_서버

https://www.netsys.com.tr/en/what-are-half-proxy-and-full-proxy/

https://learn.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing

https://adjh54.tistory.com/526#1.%20%ED%8F%AC%EC%9B%8C%EB%93%9C%20%ED%94%84%EB%A1%9D%EC%8B%9C(Forward%20Proxy)-1

https://tetrate.io/blog/what-is-tproxy-and-how-does-it-work/