본문 바로가기
TIL & WIL

[TIL] 크래프톤 정글 7주차 - 프록시(Proxy)

by 적용1 2024. 5. 7.
728x90

프록시(proxy)란?

- 프록시(Proxy)는 클라이언트와 서버 사이에 존재하며, 중계기로서 대리로 통신을 수행하는 것이다.

 

해당 중계 기능을 하는 주체를 프록시 서버(Proxy Server)라고 한다.

출처 : https://velog.io/@younghyun/%ED%94%84%EB%A1%9D%EC%8B%9CProxy%EB%9E%80

 

- 프록시를 사용하는 이유는 보안 상의 이류로 직접 통신할 수 없는 두 점 사이에서 대리로 통신을 수행하며 보안성, 성능, 안정성을 향상시키기 위해서이다.

 

- 프록시 서버는 웹페이지를 가져올 때 자신의 DB에 최근 데이터를 저장하는데, 이를 Cache라 한다.

 

같은 요청이 들어왔을 때 Cache 자원을 반환하여 서비스의 속도를 높이고 대역폭도 줄일 수 있다.

프록시의 종류

- 프록시는 포워드 프록시와 리버스 프록시로 나뉘게 되는데, 기본적으로 포워드 프록시는 클라이언트 쪽을, 리버스 프록시는 서버 쪽의 설정을 한다.

포워드 프록시

출처 : https://velog.io/@younghyun/%ED%94%84%EB%A1%9D%EC%8B%9CProxy%EB%9E%80

 

- 일반적으로 말하는 프록시는 대부분 포워드 프록시를 말하는 경우가 많다.

 

- 클라이언트와 서버 사이에 위치하여 요청을 중계하며, 요청과 응답이 프록시 서버를 거치는 것을 말한다.

 

- 클라이언트는 프록시 서버 만을 통해 정보를 얻게 되므로 서버 쪽에는 프록시 서버를 통한 엑세스 로그가 남게 된다.

 

- 클라이언트를 감추는 효과가 있다.

포워드 프록시의 장점

· 보안 : 클라이언트는 포워드 프록시 만을 통해서 외부에 요청을 하기 때문에 클라이언트가 해당 서버 또는 웹 사이트에 직접적으로 접근하는 것을 방지할 수 있다.

ex) 클라이언트가 특정 사이트에 접근할 수 없도록 막을 수 있는 기능인 URL 필터링

URL 필터링(출처 : https://engineer-mole.tistory.com/288)

 

· 캐싱 : 위에서 적은 프록시를 사용하면 얻는 장점과 같다. 클라이언트가 요청을 할 경우, 포워드 프록시는 해당 요청을 캐싱하여 동일한 요청이 들어오게 되면 캐싱된 데이터를 전달해준다.

 

이를 통해 클라이언트는 캐싱된 데이터를 받아오기 때문에 서버에 부하를 줄일 수 있게 된다.

 

· 익명화 : 클라이언트의 요청은 포워드 프록시 서버를 통과할 때 익명화된다. 즉, 요청 받은 서버의 로그를 조사하면 사용자의 ip 주소가 나오는 것이 아니라 프록시 서버의 ip 주소가 나오게 되어 보안을 강화할 수 있다.

리버스 프록시

출처 : https://velog.io/@younghyun/%ED%94%84%EB%A1%9D%EC%8B%9CProxy%EB%9E%80

 

- 포워드 프록시와 다르게 서버들이 내부망으로 구성되어 클라이언트가 서버로 접근하려면 프록시 서버를 통해서만 가능한 구조이다.

 

- 프록시 서버는 클라이언트의 접근을 최초로 받아 요청에 해당하는 웹 서버로 배분해주는 역할을 한다.

 

- 이 경우에는 리버스 프록시에서 load balancing의 역할을 수행하기도 하고, 서버를 감추는 효과가 있다.

리버스 프록시의 장점

· 로드 밸런싱 : 서버의 트래픽이 몰리게 되면 하나의 서버로는 해당 요청을 감당하기 힘들어지는 경우가 발생한다. 이럴 때 여러 대의 서버를 두고 요청을 분산시키는 것을 로드 밸런싱이라고 한다.

 

리버스 프록시는 여러 대의 서버에 분산시켜 요청을 보내게 되는데, 이렇게 하면 서버의 부하를 분산시킬 수 있다.

 

· 보안 : 리버스 프록시는 웹 서버 앞에 놓이기 때문에 웹 서버에 직접 접근하는 것이 아닌, 리버스 프록시를 통해 접근하게 된다. 이렇게 되면 웹 서버의 IP를 노출시키지 않을 수 있기 때문에 웹 서버에 대한 1차적인 공격을 막을 수 있게 된다.(프록시 서버의 IP만 노출됨)

 

· 캐싱 : 리버스 프록시 또한 프록시 서버에 캐싱되어 있는 데이터를 사용하여 클라이언트에 대한 요청을 처리할 수 있게 된다.(캐싱은 포워드, 리버스할 것 없이 프록시 서버 자체의 기능이다.)

 

· SSL Offloading : SSL Offloading은 SSL 암호화를 해제하는 기능이다. SSL 암호화는 서버와 클라이언트 간에 데이터를 주고 받을 때 암호화를 하는 것이다.

 

리버스 프록시가 SSL 암호화를 해제하고 웹 서버에는 암호화를 해제된 데이터를 전달하여 웹 서버에서 암호화를 해제하는 부담을 없애 웹 서버에의 부하를 줄일 수 있게 된다.

프록시 서버의 단점

암호화의 부재

- 대부분의 프록시는 트래픽을 암호화하지 않으므로 프록시는 사용자를 인터넷 활동을 훔쳐보는 사람에게서 보호해줄 수 없다. 또, 일반적으로 사용자의 IP 주소가 보호되지 않는다.

 

- 만약 해커가 프록시를 계속해서 추적해 나가면 사용자의 IP를 알아낼 수 있으므로 보안 상으로 취약할 수 있다.

검색 데이터 수집 가능성

- 프록시는 일반적으로IP 주소 유출 방지를 보장하지 않기 때문에 웹 사이트가 사용자의 연결 위치를 파악할 수 있다.

포트 해킹 위험

- 일부 프록시는 누구나 들어올 수 있도록 열린 포트를 사용하거나 암호로 보호되지 않은 포트를 사용한다. 그렇게 되면 해커가 해당 포트를 통해 들어와 해킹할 수 있게 된다.

속도 변동에 취약

- 공개 프록시의 경우 많은 사용자와 많은 요청으로 인해 프록시의 속도가 빠르지 못할 가능성이 있다.

프록시 체이닝(proxy chaining)

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

 

ex) Client->Proxy Server1->Proxy Server2... -> Server 와 같이 사용하는 것인데, 이렇게 되더라도 프록시 서버를 계속해서 추적하면 클라이언트를 알아낼 수 있지만, 여러 국가에 접속하여 우회하면 알아내기 힘들다.

VPN

이후 추가 예정

728x90