✔️ Proxy(프록시)란 ?
Proxy(프록시)란 '대신', '대리' 라는 의미를 가진다.
보안 분야에서 주로 보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 통신할 경우 중계기로서 대리로 통신하는 기능을 가리켜 '프록시'라고 하며 중계 기능을 하는 것을 '프록시 서버'라고 부른다.
✔️ Proxy 서버의 특징
클라이언트와 서버 사이에서 프록시 서버가 중계할 때 클라이언트는 프록시 서버를 '서버'로서 인식하고
서버는 프록시 서버를 실제로 요청을 보낸 '클라이언트' 개념으로 인식한다.
즉, 실제 클라이언트와 서버 사이에 "프록시 서버"의 존재를 모르는 것 처럼 동작한다.
프록시 서버는 프록시 서버에 요청된 내용들을 캐시를 이용해 저장해둔다.
캐싱 후에 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서비스에 접속해 데이터를 가져올 필요가 없게 되어
1. 전송 시간을 절약할 수 있게 된다.
2. 불필요하게 외부와의 연결을 하지 않아도 된다.
또한 외부와의 트래픽을 줄이게 됨으로써
3. 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.
✔️ Proxy 서버의 사용 이유
프록시는 대표적으로 보안, 속도, ACL, Log/Audit, 접속 우회를 위해 사용된다.
- 보안: 프록시 서버가 중간에 경유되게 되면 IP를 숨기는 것이 가능하기 때문이다. 또한 프록시 서버를 방화벽으로 사용하기도 한다(프록시 방화벽). 또한, 익명의 사용자가 서버에 접근하는 것을 막는다.
- 속도(캐시): Proxy 서버 중 일부는 프록시 서버에 요청된 내용을 Cache한다. 이 후, 동일 요청이 들어오면 서버에 따로 접속할 필요가 없이 저장된 Cache 자원을 반환한다. 따라서 전송 시간을 절약할 수 있고, 외부 트래픽을 줄임으로써 네트워크 병목 현상도 방지할 수 있다. 이는 서비스의 속도를 높여준다.
- ACL : 사이트 접근에 대한 접근 정책을 정의할 수 있다. (ACL = Proxy Server에 접속할 수 있는 범위를 설정하는 옵션)
- Log/Audit : 회사 내 직원의 인터넷 사용을 레포팅할 수 있다. 반대로 인트라넷의 사용을 레포팅할 수도 있다.
- 지역 네트워크의 제한 우회 : 간혹 한국에서는 접속이 제한이 되는 사이트가 있다. IP를 검사해 한국에서의 접속임을 감지하기 때문인데 이런 경우 프록시 서버를 사용하면 접속을 다른나라로 우회할 수 있게 된다. 우회에 사용할 서버 주소와 포트를 구한 후 '인터넷옵션>연결>LAN설정>프록시서버'에서 서버 주소와 포트를 설정해주면 설정해준 서버에서 접속한 것처럼 속일 수 있기 때문에 접속 제한을 우회할 수 있다.
✔️ Proxy 서버 종류
프록시 서버를 위치에 따라 분류하면 크게 두가지로 나눌 수 있다.
- Forward 프록시
- Reverse 프록시
Forward Proxy
프록시 서버를 '클라이언트 호스트들과 접근하고자 하는 원격 리소스의 사이' 에 위치시키는 것이다.
프록시 서버의 개념을 떠올렸을 때 생각나는 방식이다.
이 프록시 서버는 원격 서버로부터 요청된 리소스를 가져와서 요청한 사용자에게 돌려주는 역할을 수행하며 만일 캐시에 데이터가 남아있다면 다음 요청시 캐시된 데이터로부터 제공해준다.
Forward 프록시 서버는 전형적으로 로컬 디스크에 데이터를 저장하며 클라이언트 호스트들은 사용중인 웹 브라우저를 이용해 프록시 서버 사용 설정을 해야하므로 프록시 서버의 사용을 인식한다.
📌 장점
- 대역폭 사용을 감소
- 접근 정책 구현에 있어 다루기 쉬움
- 비용이 저렴
- 특정 사이트에 접근 불가능하도록 제한을 걸 수 있음
Reverse Proxy
프록시 서버를 인터넷 리소스 또는 인트라넷 리소스 앞에 위치시키는 방식이다.
클라이언트들이 프록시 서버에 연결되었다는 것을 알지 못하며 마치 최종 사용자가 요청 리소스에 직접 접근하는 것 처럼 느낀다. (직접 서버에 접근해서 요청 결과를 가져온다고 생각한다.)
주로 보안상의 이유로 Reverse Proxy를 사용한다.
보통 기업의 네트워크 환경은 DMZ라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며 이 구간에는 메일, 웹, FTP 서버 등 외부 서비스를 제공하는 서버가 위치하게 된다.
* DMZ : 내부 네트워크에 존재하나 외부에서 접근할 수 있는 특수한 네트워크 영역
예를 들어 A 회사는 서비스를 자바로 구현해서 WAS(Web Application Service)를 DMZ에 놓고 서비스해도 되지만 WAS 는 보통 DB 서버와 연결되므로 WAS가 최전방에 있으면 WAS가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있다.
이 때문에 Reverse 프록시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 하게 된다.
특히 리눅스 환경에서 리버스 프록시로 아파치 웹 서버를 사용한다면 SELinux 를 켜 놓으면 SELinux 의 기본 정책이 웹 서버는 톰캣의 8080, 8009 포트만 접근 할 수 있으므로 아파치 웹 서버가 해킹당해도 웹 서버 권한으로는 내부망으로 연결이 불가하다. 또한 리버스 프록시 방식은 각 요청에 대한 데이터가 캐시되기 때문에 프록시 서버는 실제 서버들을 위한 부하조절 기능을 가질 수 있다.
+ 추가로
버프스위트(Burp Suite), 파로스, 피들러(Fiddler)와 같은 웹 프록시 툴을 사용하면 웹 요청이나 응답 값을 중간에 가로챌 수 있다. 해당 툴에서 사용하는 웹 프록시 서버 주소와 포트 설정을 해주면 브라우저에서 보낸 웹 요청이 프록시 서버를 경유하게되기 때문에 중간에 패킷을 가로챌 수 있게 되는 것이다. 이러한 웹 프록시 툴들은 트래픽 조작, 기능 확장, 분석, 모니터링 등에 유용하다.
🔗참고
'CS > 네트워킹' 카테고리의 다른 글
[네트워킹] ICMP (Internet Control Message Protocol) (0) | 2022.03.22 |
---|---|
[네트워킹] FTP (File Transfer Protocol) (0) | 2022.03.22 |
[네트워킹] NAT (Network Address Translation) (0) | 2022.03.10 |
[네트워킹] DNS(Domain Name System) (0) | 2022.03.08 |
[네트워킹] 대칭키(비밀키) & 공개키(비대칭키) (0) | 2022.03.07 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!