티스토리 뷰

개발지식/Network

Proxy

kimty1121 2023. 3. 28. 00:44

프록시 서버 (Proxy Server)

프록시 서버는 인터넷에서 유저를 대신해서 데이터를 가져오는 서버이다.
원래는 클라이언트가 서버에 직접 접근해서 요청한 내용을 가져와야 하지만
프록시 서버가 대신 서버에 요청하고 클라이언트에게 가져다준다.
예를 들면 클라이언트에서 naver의 주소를 입력해서 접속을 시도하면 이 요청은 서버로 가는 게 아니라 프록시 서버로 간다.

프록시서버가 네이버의 서버에 도착해서 웹페이지를 가져다가 클라이언트인 웹브라우저에게 보내주는 것이다.
프록시 proxy 에는 ‘대리’라는 뜻이 있다. 클라이언트를 대리한다는 뜻 이다.

프록시 서버를 사용하는 이유

1. 개인정보를 보호

프록시 서버 없이 클라이언트가 네이버의 서버에 요청을 할 때 나의 IP 주소도 전달이 된다. 

프록시 서버를 사용하면 네이버의 서버는 나의 IP가 아니라 프록시 서버의 IP를 보게 된다.

즉 네이버 서버 관리부에서는 IP 주소를 보고 어디서 네이버에 접속했는지 알아낼 수 있다.

프록시 서버를 사용하면 나의 IP주소는 네이버 서버에 전달되지 않는다.

2. 캐시 사용 - 속도향상

프록시 서버가 웹페이지를 가져올 때 자신의 데이터베이스에 최근 데이터를 저장해놓는다. 이것을 캐시라 한다 (Cache)

다른 클라이언트가 접속할 때 캐시된 웹페이지가 있으면 프록시 서버에서 바로 클라이언트에 전송함으로써 속도를 향상 시킬 수 있다. 

인터넷으로 갈 필요도 없이 프락시 서버에서 끝나는 것이다.

프록시 서버에서는 가비지 콜렉션을 해서 캐시 상태를 유지한다.

원본 문서에 대한 캐시도 업데이트하여 클라이언트에 문서의 최신 버전을 전달할 수 있도록 한다.

캐시기능을 사용하면 인터넷으로 데이터를 수집하러 나갈 필요가 없으니까 대역폭을 줄이는 효과도 있다.

3. 로그 기록 관리

서버에게 개인정보가 보호되지만 프록시 서버에는 클라이언트의 기록이 남아있다.
이 기록들을 보면 어떤 IP에서 어디에 얼마나 오래 접속했는지 기록을 확인할 수 있다.

또 프록시 서버가 방문할 수 있는 웹사이트를 제한할 수 있다.
결국 연결된 클라이언트들의 정보를 제어할 수 있기 때문에 프록시 서버는 회사에서 많이 사용한다.

관리자가 프록시 서버를 열어보면 직원들이 어떤 사이트에 접속했는지 알수 있다.

4. 방화벽

프로시 서버와 방화벽은 다른 것이지만 보안을 위해 함께 일한다.
프록시는 요청을 방화벽은 네트워크 패킷을 제어한다.

5. 접속 우회

프록시 서버는 여러대 연결시킬 수 있다.
클라이언트 -> 프락시 서버1 -> 프락시 서버2 -> 서버

클라이언트의 IP를 숨기기 위해 여러 프록시 서버를 경유하는 기술을 Proxy Chaining 이라고 한다.

흔히 해커들의 IP주소를 숨기고 공격할 때 쓰는 수법으로 알려져 있지만,
Proxy Chaining 이 완벽한 기술은 아니다. 어쨋든 서버에는 프록시 서버의 주소가 남아있을테니 추적을 거듭하면 클라이언트를 알아낼 수도 있다. 다만 여러 국가의 컴퓨터에 접속해서 우회한다면 어렵다.

나라마다 정보 보호법이 달라서 서버의 정보를 공개하지 않는 나라도 있다.

토르 브라우저 (Tor Browser)는 Tor Network 의 프록시 서버를 사용할 수 있도록 고안된 브라우저 이다.
클라이언트를 특정할 수 없도록 중간에 Tor Network 의 컴퓨터들이 운영되고 있다.

암호화 문제

프록시 서버에서는 데이터를 암호화(encryption) 하지는 않는다.


프록시 서버가 사용하는 네트워크는 기본적으로 공용망(Public Network)이기 때문에
장비만 갖춘다면 해커나 공공기관 ISP에서도 클라이언트가 보내는 데이터를 탈취할 수 있다.

정보를 암호화 하려면 VPN 을 사용해야 한다.
VPN은 Virtual Private Network 가상 사설 네트워크의 약자로 서버와 클라이언트 간에 보안처리된 터널을 만들어 놓는다. 

이 터널에서 암호화된 데이터를 주고 받기 때문에 보안이 유지된다.

보호되야 하는 데이터를 인터넷에서 전달할 때는 VPN을 사용하는 것이 보안상 필요하다.

원문 또는 참고

 

'개발지식 > Network' 카테고리의 다른 글

Load Balancing  (0) 2023.03.26
OSI 7 Layers  (0) 2023.03.26
TCP-HandShake  (0) 2023.03.26
TCP and UDP  (0) 2023.03.25