[HTTP] 프록시(proxy) 서버란?

Ko Seoyoung·2021년 4월 12일
4

프록시 서버란?

프록시라는 단어는 네트워크 환경설정을 할 때 등 많이 들어본 익숙한 단어이다.

하지만 개념은 제대로 알고 있지 못해서 이번 기회에 프록시가 무엇인지와 사용목적에 대해 알아보았다!

프록시는 간단히 말해 클라이언트와 서버 사이의 중개인이다. 프록시는 클라이언트와 서버 중간에 위치하면서 클라이언트의 모든 HTTP 요청을 받아 서버에 전달한다. (대개 요청을 수정한 뒤에)

그리고 웹 프록시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인이다. (클라이언트가 프락시 서버가 제공하는 좋은 서비스(서버와 대신 대화해줌)를 이용하는 것)

(아 요청이 클라이언트에서 서버로 곧바로 가는게 아니였어?? 🙄)

그럼 프록시가 필요한 이유는 뭘까?? 무슨 용도로 사용되는 것인가??

대개 프록시는 보안을 위해 사용된다. 또한, 요청과 응답을 필터링하기 위해 사용된다.

요청과 응답의 필터링 예시:

  • 회사에서 무엇인가를 다운 받을 때 애플리케이션 바이러스를 검출한다.
  • 초등학교 학생들에게서 성인콘텐츠를 차단한다.

프록시 서버의 목적

프록시의 사용 목적에 대해 좀 더 자세히 알아보자.

프록시는 대표적으로 보안, 속도, ACL, Log/Audit, 접속 우회를 위해 사용된다.

(1) 보안: 프록시 서버가 중간에 경유되게 되면 IP를 숨기는 것이 가능하기 때문이다. 또한 프록시 서버를 방화벽으로 사용하기도 한다(프록시 방화벽). 또한, 익명의 사용자가 서버에 접근하는 것을 막는다.

(2) 속도(캐시): Proxy 서버 중 일부는 프록시 서버에 요청된 내용을 Cache한다. 이 후, 동일 요청이 들어오면 서버에 따로 접속할 필요가 없이 저장된 Cache 자원을 반환한다. 따라서 전송 시간을 절약할 수 있고, 외부 트래픽을 줄임으로써 네트워크 병목 현상도 방지할 수 있다. 이는 서비스의 속도를 높여준다.

(3) ACL : 사이트 접근에 대한 접근 정책을 정의할 수 있다. (ACL = Proxy Server에 접속할 수 있는 범위를 설정하는 옵션)

(4) Log/Audit : 회사 내 직원의 인터넷 사용을 레포팅할 수 있다. 반대로 인트라넷의 사용을 레포팅할 수도 있다.

(5) 지역 네트워크의 제한 우회 : 간혹 한국에서는 접속이 제한이 되는 사이트가 있다. IP를 검사해 한국에서의 접속임을 감지하기 때문인데 이런 경우 프록시 서버를 사용하면 접속을 다른나라로 우회할 수 있게 된다. 우회에 사용할 서버 주소와 포트를 구한 후 '인터넷옵션>연결>LAN설정>프록시서버'에서 서버 주소와 포트를 설정해주면 설정해준 서버에서 접속한 것처럼 속일 수 있기 때문에 접속 제한을 우회할 수 있다.


추가적으로,

버프스위트(Burp Suite), 파로스, 피들러(Fiddler)와 같은 웹 프록시 툴을 사용하면 웹 요청이나 응답 값을 중간에 가로챌 수 있다. 해당 툴에서 사용하는 웹 프록시 서버 주소와 포트 설정을 해주면 브라우저에서 보낸 웹 요청이 프록시 서버를 경유하게되기 때문에 중간에 패킷을 가로챌 수 있게 되는 것이다. 이러한 웹 프록시 툴들은 트래픽 조작, 기능 확장, 분석, 모니터링 등에 유용하다.


개인 프록시와 공유 프록시

프록시 서버는 하나의 클라이언트가 독점적으로 사용할 수도 있고, 여러 클라이언트가 공유할 수도 있다. 개인프록시는 하나의 클라이언트를 위한 프록시이고 공용프록시는 여러 클라이언트가 함께 사용한다.

공용프록시

대부분의 프록시가 공용프록시이다. 왜냐하면 중앙집중형 프록시를 관리하는 것이 더 비용효율이 높고 쉽기 때문이다. 또한 캐시 프록시 서버와 같은 경우 공통된 요청에서 이득을 취할 수 있으므로 사용자가 많을 수록 유리하다.

개인프록시

개인 전용 프록시는 흔하지 않지만 꾸준히 사용된다. (클라이언트 컴퓨터에서 직접 실행되는 형태로) 어떤 브라우저 보조 제품들은 몇몇 ISP 서비스와 마찬가지로 브라우저의 기능을 확장하거나 성능을 개선하거나 무료 ISP 서비스를 위한 광고를 운영하기 위해 작은 프록시를 사용자의 컴퓨터에서 직접 실행된다.


참고자료

profile
Web Frontend Developer 👩🏻‍💻 #React #Nextjs #ApolloClient

0개의 댓글