devFancy BE Developer

프락시 서버

2023-02-16
devfancy

프락시 서버(Proxy Server)

  • 프락시 서버는 클라이언트와 서버 사이에 위치하여 그들 사이의 HTTP 메시지를 정리하는 웹 중개자 역할을 한다.

프락시 서버 동작 원리

  1. 요청 : 사용자가 웹 브라우저에서 도메인을 입력한다.

  2. 전달 : 사용자가 요청한 것을 캐시 역할을 하는 프록시 서버로 전달한다.

  3. 확인 : 프록시 서버 내에 도메인 홈페이지의 페이지를 가지고 있는지 확인한다.

  • 가지고 있는 경우 - 홈페이지가 있는 서버에게 자신이 가진 페이지가 최신 버전인지 확인하고 필요한 경우 갱신할 부분만 가져온다.

  • 가지고 있지 않는 경우 - 홈페이지가 있는 서버와 연결하여 페이지를 가져온다.

프락시 서버 vs 게이트웨이

  • 프락시는 같은 프로토콜을 사용하는 둘 이상의 애플리케이션을 연결하고, 게이트웨이는 서로 다른 프로토콜을 사용하는 둘 이상을 연결하며, 클라이언트와 서버가 서로 다른 프로토콜로 통신하더라도 서로 간의 트랜잭션을 완료할 수 있도록 도와준다.

  • 하지만 실무에서는 프락시와 게이트웨이의 경계가 불분명하다.

  • 프락시는 브라우자와 서버가 다른 버전의 HTTP를 구현하는 경우 또는 상용 프락시는 SSL 보안 프로토콜, SOCKS 방화벽, FTP 접근, 웹 기반 애플리케이션을 지원하는 경우 등 게이트웨이 기능을 구현하는 경우도 있으므로 사실상 차이를 논하기 모호하다.

프락시 서버는 왜 필요할까?

  • 프락시 서버는 실용적이고 유용한 서비스를 제공한다.

  • 보안을 개선하고 성능을 향상하며, 비용을 절약해주고 트래픽 감시 및 수정이 가능하다.(모든 HTTP 트래픽에 접근이 가능하다)

  • 위 그림에서 알 수 있듯이 프락시를 통해 필터링(제어) 를 중앙 집권적으로 해결할 수 있다.

  • 프락시 서버는 어린이 필터, 문서 접근 제어, 보안 방화벽, 웹 캐시, 대리 프락시(리버스 프락시), 콘텐츠 라우터, 트랜스코더, 익명화 프락시 등에서 사용된다.

  • 프락시 서버를 사용하지 않으면, 서버의 주소가 쉽게 노출되고, 다른 익명의 사용자가 서버로 접근하기가 쉽다.

  • 이러한 문제점을 보완하기 위해 프락시 서버를 사용하여 중간에 경유하게 되면 서버의 IP를 숨기는 것이 가능하다.

  • 프락시 서버를 방화벽으로 사용하기도 한다(프락시 방화벽)

방화벽

  • 방화벽(firewall)은 보안 규칙에 기반하여 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템이다. 신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크 간의 장벽을 구성한다.

  • 프락시 방화벽 은 세션에 포함되어 있는 정보의 유해성을 검사하는 역할로, 방화벽에서 세션을 종료하고 새로운 세션을 형성하는 방식이다.

    • 출발지에서 목적지로 가는 세션을 가로채서 두 가지 세션으로 만든다(출발지에서 방화벽까지의 세션, 방화벽에서 목적지까지의 세션)

    • 하나의 세션에서 다른 세션 정보를 넘겨주기 전에 검사를 수행하는 형식이다.

    • 패킷 필터에 비해 많은 부하를 주어서 속도가 느리지만, 더 많은 검사 기능을 제공하고 프로토콜 변경 등 추가적인 수행이 가능하다.

웹 캐시

  • 프락시 캐시는 문서의 로컬 사본을 관리하고 해당 문서에 대한 요청이 오면 빠르게 제공하여, 느리고 비싼 인터넷 커뮤니케이션을 줄여준다. (전송시간 절약, 외부트래픽 감소)

  • 웹 서버보다 웹 캐싱 프락시가 가깝다면 클라이언트는 가까운 웹 캐시의 문서에 접근한다.

프락시 종류

Forward 프락시

  • 포워딩 프락시(Forwarding Proxy)를 일반적으로 프락시라고 부른다.

  • 클라이언트가 인터넷에 직접 접근하는 것이 아닌, 포워딩 프락시 서버가 클라이언트의 요청을 받고 인터넷에 연결한 이후에 그 결과를 클라이언트에게 응답한다.

  • 예) 팬시(사용자)가 google.com에 연결하고자 할 때, 프락시 서버가 팬시의 요청을 받아 google.com에 연결하고 그 결과를 팬시에게 응답한다는 것이다.

  • 포워딩 프락시는 캐시 기능이 있으므로 자주 사용하는 컨텐츠라면 성능을 향상시킬 수 있고, 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할 수 있으므로 보안이 매우 중요한 기업환경에서 많이 사용한다.

Reverse 프락시

  • 리버스 프락시는 포워딩 프락시가 서버쪽에도 존재한다고 생각하면 된다.

  • 클라이언트가 인터넷에 데이터를 요청하면 리버스 프락시가 이 요청을 받아 내부 서버에서 데이터를 받은 후 클라이언트에게 응답한다.

  • 클라이언트는 내부 서버에 대한 정보를 알 필요 없이 리버스 프락시에게 요청하면 된다.

  • 내부 서버가 직접 서비스를 제공할 순 있지만, 리버스 프락시를 사용하는 이유은 보안 때문이다.

    • 기업의 네트워크 환경에서는 DMZ라 불리는 내부 네트워크와 외부 네트워크 사이에 위치한 구간이 존재한다.

    • 이 구간에 보통 메일 서버, 웹 서버, FTP 서버 등 외부 서비스를 제공하는 서버가 위치한다.

    • 내부 서버(WAS)에 직접 접근하게 되면 DB에 접근이 가능하므로 해킹 문제가 발생할 우려가 있다.

    • 리버스 프락시 서버를 DMZ에 두고 실제 서버는 내부망에 위치 시켜서 서비스 하는 것이 일반적이고 보안상 안전하다.

  • 내부 서버를 설정하게 되면 로드 밸런싱이나 서버 확장에 유리한다.

  • SSL 암호화에 좋다. 원래 서버가 클라이언트와 통신을 할 때 SSL(or TSL)로 암호화, 복호화를 하면서 비용이 많이 들게 된다. 하지만 리버스 프락시를 사용하면 들어오는 요청을 모두 복호화로 하고 나가는 응답을 암호화해주기 때문에 클라이언트와 안전한 통신을 할 수 있으며 본래의 비용보다 줄일 수 있다.

예상 질문

  • 프락시 서버의 기본 동작 원리를 설명해 주세요.

  • 프락시 서버가 왜 필요할까요?

  • 프워딩 프락시와 리버스 프락시에 대해 설명해 주세요.

Reference


Comments

Index