Welcome :っ)

Devlog/Network

프록시 서버란?

lazy.won 2023. 1. 2. 17:57
728x90
반응형

 

 

 

 

 

 

프록시 서버란?

Proxy는 대리라는 사전적 의미를 갖고 있다. 

클라이언트와 서버의 관점에서 중간에 대신 요청을 처리한다 하여 클라이언트와 서버의 중계자 역할을 갖는 것을 프록시 서버라고 한다.

 

출처: https://www.seobility.net/en/wiki/Proxy_Server

 

 

 

 

 

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

보안

클라이언트에서 서버의 IP 주소를 숨기는 것이 가능하기 때문에 프록시 서버를 통해 한 단계의 보안을 더 유지할 수 있다. 

따라서 보안상의 이유로 외부와 직접 통신할 수 없는 경우에 프록시 서버를 이용한다. 

 

캐시 사용을 통한 속도 향상

프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용하여 저장한다. 

따라서 캐시를 사용하여 리소스로의 접근을 빠르게 할 수 있다. 특히 웹 프록시는 웹 서버로부터 웹 페이지를 캐시로 저장하는 데 흔히 사용되며 캐싱을 통해 콘텐츠를 빠르게 가져올 수 있다. 

추가로 프록시 서버의 캐시를 이용하면 전송시간도 절약할 수 있음은 물론 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점이 있다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목현상을 방지할 수 있다. 

 

접속 우회

IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회할 수 있다.

따라서 사용자 IP를 숨기기 위해 여러 프록시 서버를 경유할 수가 있다. 

 

로그 기록 관리

프록시 서버를 통해 클라이언트의 기록을 관리할 수 있으며, 연결된 클라이언트들의 정보를 제어할 수 있다. 

 

방화벽

프록시 서버와 방화벽은 다르지만, 보안을 위해 함께 사용된다. 

프록시 서버는 요청을, 방화벽은 네트워크 패킷을 제어한다.

 

* 프록시 서버의 암호화 문제
프록시 서버가 사용하는 네트워크는 기본적으로 Public Network 이기 때문에, 프록시 서버에서는 데이터를 암호화하지 않는다. 따라서 클라이언트가 보내는 데이터를 탈취당할 수 있다. 
암호화를 위해서는 VPN을 사용해야 하며, 
프록시 서버 + 방화벽 + VPN은 필연적으로 같이 사용된다고 보면 된다. 

* VPN(Virtual Private Netwokr) 가상 사설 네트워크
서버와 클라이언트 간 보안처리된 터널을 만들어 놓고, 이 터널에서 암호화된 데이터를 주고받으며 보안을 유지하는 것.

 

 

 

 

 

프록시 서버 종류

프록시 서버는 네트워크 상 어디에 위치하는가에 따라 포워드 프록시(Forward Proxy)리버스 프록시(Reverse Proxy)로 나뉜다. 

 

출처: https://research.aimultiple.com/forward-vs-reverse-proxy/

 

Forward Proxy

일반적으로 흔히 말하는 `프록시 서버` 혹은 `웹 프록시`는 포워드 프록시 서버를 의미한다. 

포워드 프록시는 클라이언트들 앞에 위치한다. 내부망에서 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부에서 데이터를 가져온다. 

즉, 클라이언트가 인터넷에 직접 접근하는 것이 아니라, 포워드 프록시 서버가 같은 내부망에 존재하는 클라이언트의 요청을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 결과를 클라이언트에게 응답해 준다. 

예를 들어, naver.com에 요청하면 포워드 프록시 서버가 naver.com 리소스를 대신 받아 클라이언트에게 내밀어준다(forward)고 생각하면 된다. 

이로서 서버에게 클라이언트가 누구인지 감출 수 있다. 

 

출처: https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/

 

 

 포워드 프록시 사용 이점

1. 클라이언트 보안

보통 정부, 학교, 기업 같은 기관에 속한 사람들의 인터넷 사용을 제한하기 위해 방화벽을 사용하는데, 포워드 프록시 서버도 방화벽과 같은 개념으로 제한을 위해 사용된다.

예를 들어, 포워드 프록시 서버에 룰을 추가하여 특정 사이트에 접속하는 것을 막을 수 있다. 

 

2. 캐싱

여러 클라이언트가 동일한 자원을 요청하는 경우, 각각 따로 인터넷을 경유해서 자원을 응답받지 않고, 프록시 내 캐싱된 자원을 불러와 서버의 부하를 줄이고 응답 속도도 높일 수 있다. 

 

3. IP 우회 및 보안

클라이언트에서 프록시 서버를 거쳐 요청을 보내게 되면, 서버 측은 클라이언트 정보가 아닌 포워드 프록시 정보를 받게 된다. 이로써 서버 측에 클라이언트의 정보를 숨길 수 있다.  

 

 

 

 

Reverse Proxy

리버스 프록시는 웹 서버/WAS 앞에 위치한다. 내부망에서 Proxy 서버와 내부망 서버가 통신하여 인터넷을 통해 요청이 들어오면 Proxy 서버가 받아 응답해 준다. 

즉, 클라이언트는 웹서비스에 접근 시 웹서버에 요청하는 것이 아닌, 프록시 서버로 요청하게 되고 프록시가 배후(reverse)의 서버로부터 데이터를 가져오는 방식이다.

리버스 프록시는 배후에 있는 서버에 대한 Proxy라고 생각하면 된다. 따라서 본서버의 IP정보를 숨길 수 있는 효과를 얻게 된다. 

 

내부 서버가 직접 서비스를 제공해도 되지만 일반적으로는 보안상의 이유로 아래와 같은 방식으로 구성한다. 

보통 기업의 네트워크 환경에서는 DMZ라고 부르는 내부 네트워크/외부 네트워크 사이에 위치하는 구간이 존재한다. (내부 네트워크/외부 네트워크에 둘 다 접근할 수 있는 공간)

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

WAS를 DMZ에 놓고 서비스해도 되지만, WAS는 DB 서버와 연결되어 있으므로 WAS가 해킹당할 경우 DB 서버까지 해킹당할 수 있는 보안상의 문제가 발생할 수 있기 때문에 그렇게 하지 않고, 리버스 프록시 서버를 DMZ에 두고 실제 서비스 서버는 내부망에 위치시킨 후 서비스한다. 

 

일반적으로 구성하는 WEB(Apache, Nginx) - WAS(Tomcat) 분리 형태를 Reverse 프록시라고 보면 된다. 
여기서 WEB(Apache, Nginx)가 reverse proxy가 된다. 

 

출처: https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/

 

 

✨ 리버스 프록시 사용 이점

1. 로드 밸런싱

리버스 프록시 서버를 여러 개의 본 서버들 앞에 두면 특정 서버가 과부하 되지 않도록 대용량 트래픽을 분산시켜 각각 다른 서버로 분배해주는 로드 밸런싱이 가능하다. 

 

2.  서버 보안

서버 측 보안에 좋다. 본래 서버의 IP 주소를 노출시키지 않을 수 있기 때문에 해커들의 DDoS 공격과 같은 공격을 막는데 유용하다. 

 

3. 캐싱

포워드 프록시와 마찬가지로 캐싱 기능 지원된다. 캐싱은 프록시의 본래 기능이라고 보면 된다. 

 

4. 암호화

SSL 암호화에 좋다. 본 내부 서버가 클라이언트들과 통신 시 SSL 또는 TLS로 암, 복호화를 할 경우 비용이 많이 들게 된다. 

그러나 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로 클라이언트와 안전한 통신을 할 수 있으며, 본래 서버의 부담을 줄여줄 수 있다. 

 

 

 

 

 

 

 

 

 

 

참고

https://fomaios.tistory.com/entry/Network-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84%EB%9E%80-feat-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0-What-is-a-Proxy-server

https://digiconfactory.tistory.com/entry/%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84-Proxy-Server-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

https://inpa.tistory.com/entry/NETWORK-%F0%9F%93%A1-Reverse-Proxy-Forward-Proxy-%EC%A0%95%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EC%A0%95%EB%A6%AC

 

 

320x100
반응형

'Devlog > Network' 카테고리의 다른 글

HTTP 버전 별 특징 파헤치기  (0) 2022.10.19
ftp, ftps, sftp, ssh, scp 개념 정리  (0) 2022.07.21
HTTP 통신과 Socket 통신 차이  (0) 2022.03.22