본문 바로가기

정보/WEB

Proxy Server

Proxy Server란 서버 부하 완화 및 보안을 위해 사용하는 서버이다.

 

주요 기능

  1. 보안 : IP 숨기기 (은닉) 혹은 프록시 서버 자체를 방화벽으로 사용하기도 함
  2. 속도(캐시) : Cache를 사용해 서버의 부담을 줄여준다
  3. ACL : 서브네트워크 레벨의 방화벽
  4. Log / Audit : 리포트, 모니터링
  5. 지역 네트워크 제한 우회

 

프록시 서버는 크게 Forward Proxy와 Reverse Proxy로 나뉜다.

 

Forward Proxy

요청 보내는 측은 클라이언트 (웹 브라우저)

요청에 대한 세부적인 추가 작업을 한다.

  • 클라이언트 은닉
  • 우회 : 특정 클라이언트 IP가 block되어있다면, 그걸 피해서 접속하기 위해 IP 감춤
  • 클라이언트 접근 제어 : firewall 역할을 해준다. - 특정 IP 혹은 웹 페이지에 대한 접근 금지
  • 캐싱 : 가능은 한데 주요 기능은 아니다.
  • 예시)  CDN(전통적 의미의 포워드 프록시로서의 역할도 수행 가능), WAF, VPN 서비스,
    학교 네트워크 필터링, 회사 네트워크 프록시

 

Reverse Proxy

웹 서버의 부하 완화 및 보안에 신경 쓰는 프록시로,

서버의 응답을 클라이언트에게 반환하는 중간 서버 역할을 한다.

클라이언트에 가까운 순서대로 크게 두 가지로 나눌 수 있는데

 

1. CDN (Content Delivery Network)

  • 클라이언트 가까이에서 캐싱된 콘텐츠를 제공하며, 크게 세 가지의 기능을 제공한다.
    • 캐싱 : 서버 측 응답을 중간 저장 해놓고 동일 요청에 대해 클라이언트에게 반환
      • 만약, 웹 서버에게 문제가 생기면 CDN이 대신 응답해 고가용성 보장
      • 고가용성을 보장해 주는 버퍼의 역할
    • DDoS 공격 방어 : 전 세계에 분산된 네트워크를 이용해서 대규모 트래픽을 흡수, 분산
      • 후술할 로드밸런서보다 CDN쪽에서 주로 DDoS 공격에 대한 분산 방어가 효과적
    • 지역성 해결 : 전 세계에 분산된 캐시 서버를 통해 지역성 문제 해결
      (클라이언트와 원본 서버 간의 물리적 거리 때문에 생기는 응답 시간의 지연을 해결)
  • Cloudflare, Akamai와 같은 서비스가 CDN이다.

 

2. 로드 밸런서 (Load Balancer)

  • 서버와 가까이에서 트래픽을 분산하는 역할인데, 주로 아래의 두 가지 경우로 사용됨.
    • 웹 서버에 집중되는 대량의 트래픽을 분산
    • 새 버전의 웹 어플리케이션 배포시 새로운 IP를 할당할 수 없기에,
      로드밸런서에게 고정 IP를 주고 기존 버전 정지, 새 버전 구동해서 이러한 배포 이슈를 해결한다.
  • CDN 보다는 효율적이지 못하지만, Rate Limiting(짧은 시간에 많은 요청이 오는 것을 정책)으로 DDoS 방어
  • WAF과 같은 보안 솔루션을 여기서 사용
  • HTTPS에서는 로드밸런서의 큰 단점이 나온다.
    • 바로 모든 서버가 키를 가지고 있어야 한다는 것.
    • 그래서 로드밸런서가 비공개키를 가지고 요청에 대해 복호화를 진행한다.
    • 그래서 TLS/SSL Offloading이라고도 함. (TLS, SSL의 절차를 대신해주니까.)

그림을 보면 클라이언트와 서버가 HTTPS 통신(즉, TLS/SSL 을 수행하고 있다)

더보기

참고로 L4 로드 밸런서와 L7 로드 밸런서가 있다. 

전자는 TCP/UDP 를 통한 패킷 단위로 빠르게 로드밸런싱을 기능을 하는 것이고

후자는 HTTP 프로토콜을 통한 데이터 단위로 복잡하지만 정교하게 로드밸런싱을 하는 것이다.

 

따라서 전자는 빠르고 값이 싸지만 섬세한 라우팅이 불가능하고

후자는 복호화를 해야 하기에 느리고 비싸지만 섬세한 라우팅이 가능하다. + 캐싱이 가능하다.