본문 바로가기
Computer Science 📑

[Network/네트워크] 프록시 서버(Proxy Server)

by 서니서닝 2023. 1. 10.
728x90

Proxy Server

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

 

1. 동작 원리

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



2. Proxy Server는 왜 필요할까?

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

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

방화벽( firewall)

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

프록시 방화벽

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

 

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

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

 

[ 우회 ]

서버의 주소 감출 수 있음 -> IP 주소 감출 수 있음

=> 어느 곳에서 접속한 지 숨길 수 있다

=> IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회 가능


3. 종류

[ Forward 프록시 ]

  • 클라이언트가 인터넷에 직접 접근하는게 아니라 Forward Proxy Server가 요청을 받고 인터넷에 연결하여 결과를 클라이언트에 전달
    • ex) 사용자가 naver.com에 연결하고자 할때 사용자가 PC에 직접 연결하는 것이 아닌 Forward 프록시 서버가 요청을 받아 naver.com에 연결하여 그 결과를 사용자에게 전달해줌
  • 로컬 디스크에 데이터 저장
  • 클라이언트 호스트들은 사용 중인 웹 브라우저를 이용하여 프록시 서버 사용 설정을 해야 함 => 사용 인식 가능
  • 대역폭 사용 감소
  • 접근 정책 구현에 있어 다루기 쉽고 비용이 저렴
  • 정해진 사이트만 연결할 수 있어 웹 사용 환경 제한 가능 => 기업환경에서 많이 이용

 

[ Reverse 프록시 ]

  • 클라이언트가 인터넷에 데이터를 요청하면 리버스 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에 전달
    • ex) 사용자가 nvaer.com 웹 서비스에 데이터 요청 시, Reverse 프록시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 이 데이터를 사용자에게 전달
  • 클라이언트들 프록시 서버에 연결된 것 인식 X, 최종 사용자가 요청 리소스에 직접 접근하는 것처럼 느낌
  • 클라이언트는 내부 서버에 대한 정보를 알 필요 없이 리버스 프록시에만 요청하면 됨
  • 내부 서버가 직접 서비스 제공해도 되지만 이렇게 하는 이유는 보안 때문
    • 내부 서버 (WAS) 에 직접적으로 접근한다면 DB 에 접근이 가능하기 때문에 중간에 리버스 프록시를 두고 클라이언트와 내부 서버 사이의 통신을 담당
    • 내부 서버에 대한 설정으로 로드 밸런싱(Load Balancing) 이나 서버 확장 등에 유리

 

[ 차이점 ]

  1. End Point
    • Forward : 클라이언트가 요청하는 End Point가 실제 서버 도메인, 프록시는 둘 사이의 통신 담당
    • Reverse : 클라이언트가 요청하는 End Point가 프록시 서버 도메인, 실제 서버 정보 알 수 없음
  2. 감취지는 대상
    • Forward : 클라이언트
    • Reverse : 서버




 관련 질문

Q1. 프록시 서버 사용시 페이지 내용과 데이터의 값이 계속 바뀌면?

A. 실제 서버에서 응답할 때 캐시 만료 기한을 설정합니다. 프록시 서버로 사용자가 요청했을 때 요청한 시각이 프록시에서 다운받은 시간에서 만료한 기간 이내면 프록시에서 다운로드 할 것이고, 그렇지 않으면 다시 실제 서버로 요청하게 됩니다.

Q2. 프록시 서버를 설명하고 사용 사례에 대해 설명해보세요.

A. 프록시 서버란 서버 앞단에 둬서 캐싱, 로깅, 데이터 분석을 서버보다 먼저하는 서버를 말합니다. 이를 통해 포트 번호를 바꿔서 사용자가 실제 서버의 포트에 접근하지 못하게 할 수 있으며 공격의 DDOS 공격을 차단하거나 CDN을 프록시 서버로 달아서 캐싱 처이를 용이하게 할 수 있습니다. nginx로 Node.js로 이루어진 서버의 앞단에 둬서 버퍼 오버플로우를 해결하거나 CloudFlare를 둬서 캐싱, 로그 분석 등을 하는 사용 사레가 있습니다.

Q3. VPN과 프록시의 차이는?

A. Proxy와 VPN의 기본적인 차이점은 보안기능입니다. VPN은 보안기능이 탑재되어 있지만 Proxy는 보안성이 취약한 단점이 있습니다. VPN의 용도는 중간에 공용망을 사용하더라도 사설망처럼 이용하는 것이기 때문에 공용망에서도 암호화되어서 통신이 이루어집니다. 따라서 중간 정보를 탈취당할 염려가 적습니다. Proxy는 공용으로 사용하고 있는 서버이기 때문에 보안성이 없다는 단점이 있습니다. 하지만 IP주소를 바꾸어 우회하는 목적으로 많이 사용하고 있으며 가치가 없는 정보를 편하게 이용하려고 한다면 Proxy를 이용하는 것도 괜찮은 방법이라고 생각합니다.

📖 참고 자료

728x90

댓글