본문 바로가기

CS 지식

Proxy Server

클라이언트에서 서버로 접속 시 직접적으로 접속하지 않고 중간에 대신 전달해주는 서버

 

1. 동작 원리

  1. 요청 : 사용자가 웹 브라우저에서 도메인을 입력한다.
  2. 전달 : 요청에 대하여 캐시 역할을 하는 프록시 서버로 전달한다.
  3. 확인 : 프록시 서버 내에 도메인 홈페이지의 페이지를 가지고 있는지 체크한다.
  4. 가지고 있는 경우 :
    • 홈페이지가 있는 서버에 자신이 가진 페이지가 최신 버전인지 체크
    • 필요한 경우 갱신할 부분만 가져옴
  5. 가지고 있지 않을 경우 :
    • 홈페이지가 있는 서버와 연결하여 페이지를 가져온다.

2. Proxy Server는 왜 필요할까?

보안 : 요청과 응답의 필터링

  • 프록시 서버를 이용하지 않으면 서버의 주소가 쉽게 노출되고 다른 익명의 사용자가 서버로 접근하기 쉬워짐
  • 프록시 서버가 중간에 경유하게 되면 서버의 IP 숨기는 것 가능
  • 프록시 서버를 방화벽으로 사용하기도 함 (프록시 방화벽)

방화벽 (Firewall)

  • 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템
  • 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성

프록시 방화벽

  • 세션에 포함되어 있는 정보의 유해성을 검사하기 위함
  • 방화벽에서 세션을 종료하고 새로운 세션을 형성하는 방식
  • 출발지에서 목적지로 가는 세션을 가로채어 검사를 수행하는 형태
  • 패킷 필터에 비해 많은 부하를 주어서 속도는 느리지만 더 많은 검사 가능
  • 프로토콜 변경 등 추가적인 기능 수행 가능

분산 처리 : 캐시 사용 로드 밸런싱

  • 프록시 서버 중 일부는 요청된 내용을 캐시를 사용해 저장
  • 캐시에 저장된 내용에 대한 재요청은 서버 따로 접속 필요 없음 → 전송 시간 절약, 외부 트래픽 줄임으로써 병목현상 방지

우회

  • 클라이언트가 인터넷과 직접적으로 통신하면 IP가 직접적으로 인터넷에 드러나 보안적으로 취약함
  • 프록시 서버를 두면 인터넷 서버는 프록시 서버와 통신하기 때문에 클라이언트들의 IP를 알 수 없음
  • 특정 서버를 우회하여 접근할 수 있도록 허용 가능

ACL : 사이트 접근 정책

ACL (Access Control List) : Proxy Server에 접속할 수 있는 범위를 설정하는 옵션

  • 접근 제어 목록(ACL): 개체나 개체 속성에 적용된 허가 목록
  • 누가 또는 무엇이 객체 접근 허가를 받는지, 어떠한 작업이 허가를 받을지를 지정

3. 종류

Forward 프록시

  • 포워딩 프록시(Forwarding Proxy)를 통상적으로 프록시라고 부름
  • 클라이언트가 인터넷에 직접 접근하는 것이 아니라 Forward Proxy Server가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달
  • 로컬 디스크에 데이터 저장
  • 클라이언트가 프록시 서버 사용 설정을 해야 함 → 사용 인식 가능
  • 대역폭 사용 감소
  • 접근 정책 구현이 용이하며 비용이 저렴
  • 정해진 사이트만 연결할 수 있어 기업 환경에서 많이 이용

Reverse 프록시

  • 포워딩 프록시가 서버 측에도 존재하는 개념
  • 클라이언트가 데이터를 요청하면 리버스 프록시가 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에 전달
  • 클라이언트는 프록시 서버에 연결된 것 인식 불가능
  • 내부 서버가 직접 서비스 제공하는 대신 보안을 강화
  • 내부 서버(WAS)에 직접 접근할 경우 DB 접근 가능 → 보안 문제 발생 가능
  • 리버스 프록시 서버를 DMZ에 두고 내부망에서 서비스를 제공하는 방식이 일반적
  • 내부 서버 설정으로 로드 밸런싱(Load Balancing) 및 서버 확장 가능
  • SSL 암호화 부담을 줄여줌

로드 밸런싱 (Load Balancing)

  • 서버의 부하를 분산시키는 작업
  • NGinx 등을 로드 밸런서로 사용하여 부하 감소
  • 서버 추가 증설하여 부하를 분산시키는 방법: Scale-out
  • 기존 서버 성능을 확장하는 방법: Scale-up

4. 차이점

구분Forward ProxyReverse Proxy

End Point 클라이언트가 요청하는 End Point가 실제 서버 도메인 클라이언트가 요청하는 End Point가 프록시 서버 도메인

감추어지는 대상 클라이언트 서버
통신 대상 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부에서 데이터 가져옴 Proxy 서버와 내부망 서버가 통신하여 클라이언트 요청에 응답

이처럼 프록시 서버는 보안, 성능, 접근 제어 등의 이유로 널리 사용되며, 환경과 목적에 따라 Forward 프록시와 Reverse 프록시로 구분하여 활용할 수 있다.