BackEnd

Proxy (프록시)

sihanni 2024. 11. 6. 11:05

proxy

대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻한다.

"클라이언트 <-> 서버 간의 통신을 중계하는 서버나 소프트웨어"

사전적 의미로는 "대리" 라는 의미를 지니며, 네트워크 통신에서는 사용자의 요청을 대신 전달하거나 응답을 대신 수신하는 중간 역할을 하는 컴퓨터나 소프트웨어를 의미한다.

 

Forward Proxy

(클라이언트의 요청 -> 서버)

포워드 프록시는 사용자의 요청을 받아 이를 외부 서버로 전달하는 역할을 한다.

사용자 -> 포워드 프록시 <-> 인터넷 <-> 서비스 

사용자는 프록시 서버를 통해 인터넷에 접속하고, 프록시 서버가 대신 요청을 처리하는 방식이다.

이 방식은 사용자의 IP 주소를 숨기는 데 효과적이다.

  • 클라이언트와 서버 사이에서 작동
  • 클라이언트의 요청을 받아서 외부 서버에 대신 요청을 보냄
  • 클라이언트의 IP 주소는 숨겨지고, 프록시 서버의 IP가 외부 서버에 전달

키워드

  • 캐싱 (정적인 컨텐츠를 캐싱해두면 클라이언트는 컨텐츠를 빠르게 전달받고, 서버에서는 응답을 줄일 수 있다)
  • 익명성 (서버에서 전달 받는 것은 프록시 서버의 IP)
  • 액세스 제어 (특정 사이트나 컨텐츠에 대한 엑세스 제한 가능)

주요 사용 사례

  • 보안상 내부 네트워크를 보호하기 위해 기업 네트워크에서 주로 사용
  • 지리적으로 제한된 콘텐츠에서 접근할 떄 사용
  • 사용자 활동을 감시 및 제어하기 위해 사용

Reverse Proxy

(클라이언트에서 요청을 받은 서버 -> 내부 서버)

리버스 프록시는 외부 사용자가 요청하는 데이트를 대신 받아 내부 서버에 전달하고, 응답을 다시 사용자가 받도록 하는 방식이다.

사용자 <-> 인터넷 <-> 리버스 프록시 <-> 내부망

주로 웹 서버 앞단에서 작동하며, 보안, 로드 밸런싱, SSL/TLS 암호화 해제 등의 역할을 한다.

  • 서버와 클라이언트 사이에서 작동
  • 클라이언트는 리버스 프록시 서버에 요청을 보내고, 리버스 프록시가 이를 적절한 내부 서버로 전달

키워드

  • 부하 분산 (로드 밸런싱) 
    리버스 프록시 뒤에 여러개의 WAS를 두고 사용자의 요청을 분산할 수 있다.
    엔드포인트(URL)마다 호출 서버를 설정할 수 있기때문에, 서버의 트래픽을 분산할 수 있다.
  • 보안
    웹 서버의 직접적인 접근을 차단한다.
    클라이언트는 서버의 IP를 알 수 없다.
  • 애플리케이션 관리
    여러 서버나 어플리케이션을 하나의 도메인 아래에 통합할 수 있다.
    하나의 IP로 다수의 웹 서버를 동작시킬 수 있다.

주요 사용 사례

  • 웹 트래픽 부하를 분산하여 서버의 성능을 향상
  • 보안상 웹 서버의 IP주소를 감추기 위해 사용
  • SSL/TLS* 인증서 관리를 단순화하고 암호화 작업을 처리

적용 시나리오

포워드, 리버스를 다 사용하는 서비스라면 클라이언트는 자신의 IP주소를 숨기고 리버스 프록시서버로 요청을 보낸다.

클라이언트는 서비스에 직접 연결하는 것이 아니라 간접적으로 연결할 수 있게 된다.

해당 요청은 리버스 프록시 서버로 전달되고, 리버스 프록시는 해당 요청을 적절한 내부 서버로 라우팅한다.

이때 리버스 프록시는 클라이언트가 알지 못하는 여러 내부 서버의 요청을 처리할 수 있다.

리버스 프록시를 통해 내부 서버에서 처리된 응답은 다시 클라이언트에게 전달되고, 클라이언트는 리버스 프록시로부터 응답을 받지만

실제로 응답을 생성한 서버가 무엇인지는 알 수 없다.

 

proxy server

프록시 서버는 이러한 프록시역할을 수행하는 서버이다.

프록시 서버의 처음 목적은 인터넷 속도의 향상이라고 한다. (현재는 **CDN이 하고 있음) (**처음 형태)

내부정보 보안이 필요한 다수의 기업에서 프록시 서버를 이용해서 외부망에 접속한다.

 

목적

  • 보안 및 프라이버시 보호
    사용자의 IP 주소나 정보가 외부에 노출되지 않도록 막아준다.
    외부 서버는 요청을 보낸 사용자가 아니라 프록시 서버의 정보를 보게 되므로 익명성을 제공한다.
  • 접근 제어
    회사나 기관의 경우 특정 웹사이트나 콘텐츠에 대한 접근을 제어할 필요가 있다.
    프록시 서버는 이런 접근 제어를 할 수 있도록 지원한다.
  • 캐싱
    자주 요청되는 웹페이지를 캐싱, 서버의 응답 속도를 빠르게 하고 네트워크 대역폭 절약을 기대할 수 있다.
  • 콘텐츠 필터링
    회사나 교육기관에서는 부적절한 콘텐츠를 차단하거나 제한할 수 있다.

 

proxy jump *

프록시 점프는 보안이 강화된 네트워크 환경에서 외부 사용자가 직접 내부 서버에 접근하지 못하도록 설계된 방식이다.

이 방법을 통해 사용자는 중간에 배치된 프록시 서버를 거쳐 최종 서버에 접속하게 된다. 

이 방법은 보안을 강화하고, 외부로부터의 직접적인 접근을 방지할 수 있다.

 

사용 사례

보안이 중요한 기업 환경

외부 공격 방지

민감한 데이터 보호

 

SSH 터널링

안전한 네트워크 통신을 위해 SSH(보안 쉘) 프로토콜을 사용하여 데이터를 암호화한다.

프록시 점프와 결합하여 외부 접근을 효과적으로 통제할 수 있다.

 

포트 포워딩 * 

특정 포트에 들어오는 트래픽을 다른 포트로 리다이렉트하는 기술로, 보안상 특정 서비스에만 접근을 허용할 수 있습니다.

 

방화벽

네트워크 보안을 위해 들어오거나 나가는 트래픽을 제어하는 시스템입니다.

 

사용 예시

서비스 도메인 관리: cloudflare

포트별 컨테이너 오케스트레이션: docker, docker swarm

리버스 프록시 서버 : caddy ( caddyfile에 도메인, 포트, 서버 접속권한 정리)

서버에 접속 : 공개키와 비공개키 생성 후 서버에 공개키 등록, 프록시 점프, ssh터널링을 통한 private 접속

 


 

주석

**CDN (Content Delivery Network)

 

CDN(Content Delivery Network)이란? | IBM

CDN(Content Delivery Network)은 웹사이트 및 모바일 앱의 성능을 최적화하여 고객 만족도를 높입니다.

www.ibm.com

지리적으로 분산된 서버들을 연결한 네트워크

웹 컨텐츠의 복사본을 사용자에 가까운 곳에 두거나 동적 컨텐츠의 전달을 활성화하여 웹 성능 및 속도를 향상

**처음 형태

  • 인터넷 속도의 향상을 위해 고속 데이터 통신이 가능한 건물 내부에 캐시를 두고 사용했다.

 

**SSL/TLS 

SSL(Secure Sockets Layer) TLS(Transport Layer Security)는 인터넷을 통해 안전하게 데이터를 전송하기 위한 암호화 프로토콜이다. TLS는 SSL의 후속 프로토콜으로 SSL의 보안 취약점을 개선하고 성능을 향상시킨 버전이다. 

관련 개념(대칭, 비대칭 암호화, 해시 함수, SSL, TLS, 인증서의 구성, 취약점과 해결방법)

 

**VPN과의 차이

VPN은 가상 사설망으로 모든 트래픽을 암호화하여 안전한 터널을 통해 데이터를 전송한다.

일반적으로 더 광범위한 보안 기능을 제공하며, 사용자의 전체 네트워크 활동을 숨기는 데 유리하다.

프록시 서버는 주로 웹 브라우징 트래픽에 대한 보호를 제공하며, 사용자 요청을 대리하여 특정 사이트에 대한 접근을 제어한다.